Phase 1 complete - API + Frontend deployed, DB migrated
This commit is contained in:
27
www/api.fahrschuldesk.de/bin/run_migration.php
Normal file
27
www/api.fahrschuldesk.de/bin/run_migration.php
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
#!/usr/bin/env php
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Migration Runner - Remote Version
|
||||||
|
*/
|
||||||
|
|
||||||
|
echo "Starte Migration...\n";
|
||||||
|
|
||||||
|
try {
|
||||||
|
$pdo = new PDO(
|
||||||
|
'pgsql:host=10.255.30.11;port=5433;dbname=fahrschuldesk',
|
||||||
|
'fahrschuldesk_api',
|
||||||
|
'E8xP2mKjQ9nRtWsLvZ3bVc5YyH1sDe7f'
|
||||||
|
);
|
||||||
|
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
||||||
|
echo "✓ DB verbunden\n";
|
||||||
|
|
||||||
|
$sql = file_get_contents(__DIR__ . '/migration.sql');
|
||||||
|
$pdo->exec($sql);
|
||||||
|
echo "✓ Migration ausgeführt!\n";
|
||||||
|
|
||||||
|
} catch (PDOException $e) {
|
||||||
|
echo "✗ Fehler: " . $e->getMessage() . "\n";
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "Fertig!\n";
|
||||||
@@ -7,15 +7,18 @@
|
|||||||
"slim/slim": "^4.12",
|
"slim/slim": "^4.12",
|
||||||
"slim/psr7": "^1.6",
|
"slim/psr7": "^1.6",
|
||||||
"php-di/php-di": "^7.0",
|
"php-di/php-di": "^7.0",
|
||||||
"firebase/php-jwt": "^6.10",
|
"firebase/php-jwt": "^6.0"
|
||||||
"passwordlib/passwordlib": "^1.0",
|
|
||||||
"ramsey/uuid": "^4.7"
|
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
"psr-4": {
|
"psr-4": {
|
||||||
"App\\": "app/"
|
"App\\": "app/"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"config": {
|
||||||
|
"audit": {
|
||||||
|
"block-insecure": false
|
||||||
|
}
|
||||||
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"migrate": "php bin/migrate.php"
|
"migrate": "php bin/migrate.php"
|
||||||
}
|
}
|
||||||
|
|||||||
942
www/api.fahrschuldesk.de/composer.lock
generated
Normal file
942
www/api.fahrschuldesk.de/composer.lock
generated
Normal file
@@ -0,0 +1,942 @@
|
|||||||
|
{
|
||||||
|
"_readme": [
|
||||||
|
"This file locks the dependencies of your project to a known state",
|
||||||
|
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||||
|
"This file is @generated automatically"
|
||||||
|
],
|
||||||
|
"content-hash": "9cdffe364f9c2549250c4e424f756652",
|
||||||
|
"packages": [
|
||||||
|
{
|
||||||
|
"name": "fig/http-message-util",
|
||||||
|
"version": "1.1.5",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/php-fig/http-message-util.git",
|
||||||
|
"reference": "9d94dc0154230ac39e5bf89398b324a86f63f765"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/php-fig/http-message-util/zipball/9d94dc0154230ac39e5bf89398b324a86f63f765",
|
||||||
|
"reference": "9d94dc0154230ac39e5bf89398b324a86f63f765",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": "^5.3 || ^7.0 || ^8.0"
|
||||||
|
},
|
||||||
|
"suggest": {
|
||||||
|
"psr/http-message": "The package containing the PSR-7 interfaces"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "1.1.x-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Fig\\Http\\Message\\": "src/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "PHP-FIG",
|
||||||
|
"homepage": "https://www.php-fig.org/"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Utility classes and constants for use with PSR-7 (psr/http-message)",
|
||||||
|
"keywords": [
|
||||||
|
"http",
|
||||||
|
"http-message",
|
||||||
|
"psr",
|
||||||
|
"psr-7",
|
||||||
|
"request",
|
||||||
|
"response"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/php-fig/http-message-util/issues",
|
||||||
|
"source": "https://github.com/php-fig/http-message-util/tree/1.1.5"
|
||||||
|
},
|
||||||
|
"time": "2020-11-24T22:02:12+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "firebase/php-jwt",
|
||||||
|
"version": "v6.11.1",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/googleapis/php-jwt.git",
|
||||||
|
"reference": "d1e91ecf8c598d073d0995afa8cd5c75c6e19e66"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/googleapis/php-jwt/zipball/d1e91ecf8c598d073d0995afa8cd5c75c6e19e66",
|
||||||
|
"reference": "d1e91ecf8c598d073d0995afa8cd5c75c6e19e66",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": "^8.0"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"guzzlehttp/guzzle": "^7.4",
|
||||||
|
"phpspec/prophecy-phpunit": "^2.0",
|
||||||
|
"phpunit/phpunit": "^9.5",
|
||||||
|
"psr/cache": "^2.0||^3.0",
|
||||||
|
"psr/http-client": "^1.0",
|
||||||
|
"psr/http-factory": "^1.0"
|
||||||
|
},
|
||||||
|
"suggest": {
|
||||||
|
"ext-sodium": "Support EdDSA (Ed25519) signatures",
|
||||||
|
"paragonie/sodium_compat": "Support EdDSA (Ed25519) signatures when libsodium is not present"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Firebase\\JWT\\": "src"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"BSD-3-Clause"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Neuman Vong",
|
||||||
|
"email": "neuman+pear@twilio.com",
|
||||||
|
"role": "Developer"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Anant Narayanan",
|
||||||
|
"email": "anant@php.net",
|
||||||
|
"role": "Developer"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "A simple library to encode and decode JSON Web Tokens (JWT) in PHP. Should conform to the current spec.",
|
||||||
|
"homepage": "https://github.com/firebase/php-jwt",
|
||||||
|
"keywords": [
|
||||||
|
"jwt",
|
||||||
|
"php"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/googleapis/php-jwt/issues",
|
||||||
|
"source": "https://github.com/googleapis/php-jwt/tree/v6.11.1"
|
||||||
|
},
|
||||||
|
"time": "2025-04-09T20:32:01+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "laravel/serializable-closure",
|
||||||
|
"version": "v2.0.13",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/laravel/serializable-closure.git",
|
||||||
|
"reference": "b566ee0dd251f3c4078bed003a7ce015f5ea6dce"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/laravel/serializable-closure/zipball/b566ee0dd251f3c4078bed003a7ce015f5ea6dce",
|
||||||
|
"reference": "b566ee0dd251f3c4078bed003a7ce015f5ea6dce",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": "^8.1"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"illuminate/support": "^10.0|^11.0|^12.0|^13.0",
|
||||||
|
"nesbot/carbon": "^2.67|^3.0",
|
||||||
|
"pestphp/pest": "^2.36|^3.0|^4.0",
|
||||||
|
"phpstan/phpstan": "^2.0",
|
||||||
|
"symfony/var-dumper": "^6.2.0|^7.0.0|^8.0.0"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "2.x-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Laravel\\SerializableClosure\\": "src/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Taylor Otwell",
|
||||||
|
"email": "taylor@laravel.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Nuno Maduro",
|
||||||
|
"email": "nuno@laravel.com"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Laravel Serializable Closure provides an easy and secure way to serialize closures in PHP.",
|
||||||
|
"keywords": [
|
||||||
|
"closure",
|
||||||
|
"laravel",
|
||||||
|
"serializable"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/laravel/serializable-closure/issues",
|
||||||
|
"source": "https://github.com/laravel/serializable-closure"
|
||||||
|
},
|
||||||
|
"time": "2026-04-16T14:03:50+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "nikic/fast-route",
|
||||||
|
"version": "v1.3.0",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/nikic/FastRoute.git",
|
||||||
|
"reference": "181d480e08d9476e61381e04a71b34dc0432e812"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/nikic/FastRoute/zipball/181d480e08d9476e61381e04a71b34dc0432e812",
|
||||||
|
"reference": "181d480e08d9476e61381e04a71b34dc0432e812",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=5.4.0"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"phpunit/phpunit": "^4.8.35|~5.7"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"autoload": {
|
||||||
|
"files": [
|
||||||
|
"src/functions.php"
|
||||||
|
],
|
||||||
|
"psr-4": {
|
||||||
|
"FastRoute\\": "src/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"BSD-3-Clause"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Nikita Popov",
|
||||||
|
"email": "nikic@php.net"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Fast request router for PHP",
|
||||||
|
"keywords": [
|
||||||
|
"router",
|
||||||
|
"routing"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/nikic/FastRoute/issues",
|
||||||
|
"source": "https://github.com/nikic/FastRoute/tree/master"
|
||||||
|
},
|
||||||
|
"time": "2018-02-13T20:26:39+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "php-di/invoker",
|
||||||
|
"version": "2.3.7",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/PHP-DI/Invoker.git",
|
||||||
|
"reference": "3c1ddfdef181431fbc4be83378f6d036d59e81e1"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/PHP-DI/Invoker/zipball/3c1ddfdef181431fbc4be83378f6d036d59e81e1",
|
||||||
|
"reference": "3c1ddfdef181431fbc4be83378f6d036d59e81e1",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=7.3",
|
||||||
|
"psr/container": "^1.0|^2.0"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"athletic/athletic": "~0.1.8",
|
||||||
|
"mnapoli/hard-mode": "~0.3.0",
|
||||||
|
"phpunit/phpunit": "^9.0 || ^10 || ^11 || ^12"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Invoker\\": "src/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"description": "Generic and extensible callable invoker",
|
||||||
|
"homepage": "https://github.com/PHP-DI/Invoker",
|
||||||
|
"keywords": [
|
||||||
|
"callable",
|
||||||
|
"dependency",
|
||||||
|
"dependency-injection",
|
||||||
|
"injection",
|
||||||
|
"invoke",
|
||||||
|
"invoker"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/PHP-DI/Invoker/issues",
|
||||||
|
"source": "https://github.com/PHP-DI/Invoker/tree/2.3.7"
|
||||||
|
},
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"url": "https://github.com/mnapoli",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"time": "2025-08-30T10:22:22+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "php-di/php-di",
|
||||||
|
"version": "7.1.1",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/PHP-DI/PHP-DI.git",
|
||||||
|
"reference": "f88054cc052e40dbe7b383c8817c19442d480352"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/PHP-DI/PHP-DI/zipball/f88054cc052e40dbe7b383c8817c19442d480352",
|
||||||
|
"reference": "f88054cc052e40dbe7b383c8817c19442d480352",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"laravel/serializable-closure": "^1.0 || ^2.0",
|
||||||
|
"php": ">=8.0",
|
||||||
|
"php-di/invoker": "^2.0",
|
||||||
|
"psr/container": "^1.1 || ^2.0"
|
||||||
|
},
|
||||||
|
"provide": {
|
||||||
|
"psr/container-implementation": "^1.0"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"friendsofphp/php-cs-fixer": "^3",
|
||||||
|
"friendsofphp/proxy-manager-lts": "^1",
|
||||||
|
"mnapoli/phpunit-easymock": "^1.3",
|
||||||
|
"phpunit/phpunit": "^9.6 || ^10 || ^11",
|
||||||
|
"vimeo/psalm": "^5|^6"
|
||||||
|
},
|
||||||
|
"suggest": {
|
||||||
|
"friendsofphp/proxy-manager-lts": "Install it if you want to use lazy injection (version ^1)"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"autoload": {
|
||||||
|
"files": [
|
||||||
|
"src/functions.php"
|
||||||
|
],
|
||||||
|
"psr-4": {
|
||||||
|
"DI\\": "src/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"description": "The dependency injection container for humans",
|
||||||
|
"homepage": "https://php-di.org/",
|
||||||
|
"keywords": [
|
||||||
|
"PSR-11",
|
||||||
|
"container",
|
||||||
|
"container-interop",
|
||||||
|
"dependency injection",
|
||||||
|
"di",
|
||||||
|
"ioc",
|
||||||
|
"psr11"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/PHP-DI/PHP-DI/issues",
|
||||||
|
"source": "https://github.com/PHP-DI/PHP-DI/tree/7.1.1"
|
||||||
|
},
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"url": "https://github.com/mnapoli",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://tidelift.com/funding/github/packagist/php-di/php-di",
|
||||||
|
"type": "tidelift"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"time": "2025-08-16T11:10:48+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "psr/container",
|
||||||
|
"version": "2.0.2",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/php-fig/container.git",
|
||||||
|
"reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963",
|
||||||
|
"reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=7.4.0"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "2.0.x-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Psr\\Container\\": "src/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "PHP-FIG",
|
||||||
|
"homepage": "https://www.php-fig.org/"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Common Container Interface (PHP FIG PSR-11)",
|
||||||
|
"homepage": "https://github.com/php-fig/container",
|
||||||
|
"keywords": [
|
||||||
|
"PSR-11",
|
||||||
|
"container",
|
||||||
|
"container-interface",
|
||||||
|
"container-interop",
|
||||||
|
"psr"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/php-fig/container/issues",
|
||||||
|
"source": "https://github.com/php-fig/container/tree/2.0.2"
|
||||||
|
},
|
||||||
|
"time": "2021-11-05T16:47:00+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "psr/http-factory",
|
||||||
|
"version": "1.1.0",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/php-fig/http-factory.git",
|
||||||
|
"reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/php-fig/http-factory/zipball/2b4765fddfe3b508ac62f829e852b1501d3f6e8a",
|
||||||
|
"reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=7.1",
|
||||||
|
"psr/http-message": "^1.0 || ^2.0"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "1.0.x-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Psr\\Http\\Message\\": "src/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "PHP-FIG",
|
||||||
|
"homepage": "https://www.php-fig.org/"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "PSR-17: Common interfaces for PSR-7 HTTP message factories",
|
||||||
|
"keywords": [
|
||||||
|
"factory",
|
||||||
|
"http",
|
||||||
|
"message",
|
||||||
|
"psr",
|
||||||
|
"psr-17",
|
||||||
|
"psr-7",
|
||||||
|
"request",
|
||||||
|
"response"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"source": "https://github.com/php-fig/http-factory"
|
||||||
|
},
|
||||||
|
"time": "2024-04-15T12:06:14+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "psr/http-message",
|
||||||
|
"version": "2.0",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/php-fig/http-message.git",
|
||||||
|
"reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71",
|
||||||
|
"reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": "^7.2 || ^8.0"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "2.0.x-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Psr\\Http\\Message\\": "src/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "PHP-FIG",
|
||||||
|
"homepage": "https://www.php-fig.org/"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Common interface for HTTP messages",
|
||||||
|
"homepage": "https://github.com/php-fig/http-message",
|
||||||
|
"keywords": [
|
||||||
|
"http",
|
||||||
|
"http-message",
|
||||||
|
"psr",
|
||||||
|
"psr-7",
|
||||||
|
"request",
|
||||||
|
"response"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"source": "https://github.com/php-fig/http-message/tree/2.0"
|
||||||
|
},
|
||||||
|
"time": "2023-04-04T09:54:51+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "psr/http-server-handler",
|
||||||
|
"version": "1.0.2",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/php-fig/http-server-handler.git",
|
||||||
|
"reference": "84c4fb66179be4caaf8e97bd239203245302e7d4"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/php-fig/http-server-handler/zipball/84c4fb66179be4caaf8e97bd239203245302e7d4",
|
||||||
|
"reference": "84c4fb66179be4caaf8e97bd239203245302e7d4",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=7.0",
|
||||||
|
"psr/http-message": "^1.0 || ^2.0"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "1.0.x-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Psr\\Http\\Server\\": "src/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "PHP-FIG",
|
||||||
|
"homepage": "https://www.php-fig.org/"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Common interface for HTTP server-side request handler",
|
||||||
|
"keywords": [
|
||||||
|
"handler",
|
||||||
|
"http",
|
||||||
|
"http-interop",
|
||||||
|
"psr",
|
||||||
|
"psr-15",
|
||||||
|
"psr-7",
|
||||||
|
"request",
|
||||||
|
"response",
|
||||||
|
"server"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"source": "https://github.com/php-fig/http-server-handler/tree/1.0.2"
|
||||||
|
},
|
||||||
|
"time": "2023-04-10T20:06:20+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "psr/http-server-middleware",
|
||||||
|
"version": "1.0.2",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/php-fig/http-server-middleware.git",
|
||||||
|
"reference": "c1481f747daaa6a0782775cd6a8c26a1bf4a3829"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/php-fig/http-server-middleware/zipball/c1481f747daaa6a0782775cd6a8c26a1bf4a3829",
|
||||||
|
"reference": "c1481f747daaa6a0782775cd6a8c26a1bf4a3829",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=7.0",
|
||||||
|
"psr/http-message": "^1.0 || ^2.0",
|
||||||
|
"psr/http-server-handler": "^1.0"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "1.0.x-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Psr\\Http\\Server\\": "src/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "PHP-FIG",
|
||||||
|
"homepage": "https://www.php-fig.org/"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Common interface for HTTP server-side middleware",
|
||||||
|
"keywords": [
|
||||||
|
"http",
|
||||||
|
"http-interop",
|
||||||
|
"middleware",
|
||||||
|
"psr",
|
||||||
|
"psr-15",
|
||||||
|
"psr-7",
|
||||||
|
"request",
|
||||||
|
"response"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/php-fig/http-server-middleware/issues",
|
||||||
|
"source": "https://github.com/php-fig/http-server-middleware/tree/1.0.2"
|
||||||
|
},
|
||||||
|
"time": "2023-04-11T06:14:47+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "psr/log",
|
||||||
|
"version": "3.0.2",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/php-fig/log.git",
|
||||||
|
"reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/php-fig/log/zipball/f16e1d5863e37f8d8c2a01719f5b34baa2b714d3",
|
||||||
|
"reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=8.0.0"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "3.x-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Psr\\Log\\": "src"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "PHP-FIG",
|
||||||
|
"homepage": "https://www.php-fig.org/"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Common interface for logging libraries",
|
||||||
|
"homepage": "https://github.com/php-fig/log",
|
||||||
|
"keywords": [
|
||||||
|
"log",
|
||||||
|
"psr",
|
||||||
|
"psr-3"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"source": "https://github.com/php-fig/log/tree/3.0.2"
|
||||||
|
},
|
||||||
|
"time": "2024-09-11T13:17:53+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "ralouphie/getallheaders",
|
||||||
|
"version": "3.0.3",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/ralouphie/getallheaders.git",
|
||||||
|
"reference": "120b605dfeb996808c31b6477290a714d356e822"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822",
|
||||||
|
"reference": "120b605dfeb996808c31b6477290a714d356e822",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=5.6"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"php-coveralls/php-coveralls": "^2.1",
|
||||||
|
"phpunit/phpunit": "^5 || ^6.5"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"autoload": {
|
||||||
|
"files": [
|
||||||
|
"src/getallheaders.php"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Ralph Khattar",
|
||||||
|
"email": "ralph.khattar@gmail.com"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "A polyfill for getallheaders.",
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/ralouphie/getallheaders/issues",
|
||||||
|
"source": "https://github.com/ralouphie/getallheaders/tree/develop"
|
||||||
|
},
|
||||||
|
"time": "2019-03-08T08:55:37+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "slim/psr7",
|
||||||
|
"version": "1.8.0",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/slimphp/Slim-Psr7.git",
|
||||||
|
"reference": "76e7e3b1cdfd583e9035c4c966c08e01e45ce959"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/slimphp/Slim-Psr7/zipball/76e7e3b1cdfd583e9035c4c966c08e01e45ce959",
|
||||||
|
"reference": "76e7e3b1cdfd583e9035c4c966c08e01e45ce959",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"fig/http-message-util": "^1.1.5",
|
||||||
|
"php": "^8.0",
|
||||||
|
"psr/http-factory": "^1.1",
|
||||||
|
"psr/http-message": "^1.0 || ^2.0",
|
||||||
|
"ralouphie/getallheaders": "^3.0"
|
||||||
|
},
|
||||||
|
"provide": {
|
||||||
|
"psr/http-factory-implementation": "^1.0",
|
||||||
|
"psr/http-message-implementation": "^1.0 || ^2.0"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"adriansuter/php-autoload-override": "^1.5|| ^2.0",
|
||||||
|
"ext-json": "*",
|
||||||
|
"http-interop/http-factory-tests": "^1.0 || ^2.0",
|
||||||
|
"php-http/psr7-integration-tests": "^1.5",
|
||||||
|
"phpstan/phpstan": "^2.1",
|
||||||
|
"phpunit/phpunit": "^9.6 || ^10",
|
||||||
|
"squizlabs/php_codesniffer": "^3.13"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Slim\\Psr7\\": "src"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Josh Lockhart",
|
||||||
|
"email": "hello@joshlockhart.com",
|
||||||
|
"homepage": "https://joshlockhart.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Andrew Smith",
|
||||||
|
"email": "a.smith@silentworks.co.uk",
|
||||||
|
"homepage": "https://silentworks.co.uk"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Rob Allen",
|
||||||
|
"email": "rob@akrabat.com",
|
||||||
|
"homepage": "https://akrabat.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Pierre Berube",
|
||||||
|
"email": "pierre@lgse.com",
|
||||||
|
"homepage": "https://www.lgse.com"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Strict PSR-7 implementation",
|
||||||
|
"homepage": "https://www.slimframework.com",
|
||||||
|
"keywords": [
|
||||||
|
"http",
|
||||||
|
"psr-7",
|
||||||
|
"psr7"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/slimphp/Slim-Psr7/issues",
|
||||||
|
"source": "https://github.com/slimphp/Slim-Psr7/tree/1.8.0"
|
||||||
|
},
|
||||||
|
"time": "2025-11-02T17:51:19+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "slim/slim",
|
||||||
|
"version": "4.15.1",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/slimphp/Slim.git",
|
||||||
|
"reference": "887893516557506f254d950425ce7f5387a26970"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/slimphp/Slim/zipball/887893516557506f254d950425ce7f5387a26970",
|
||||||
|
"reference": "887893516557506f254d950425ce7f5387a26970",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"ext-json": "*",
|
||||||
|
"nikic/fast-route": "^1.3",
|
||||||
|
"php": "~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0",
|
||||||
|
"psr/container": "^1.0 || ^2.0",
|
||||||
|
"psr/http-factory": "^1.1",
|
||||||
|
"psr/http-message": "^1.1 || ^2.0",
|
||||||
|
"psr/http-server-handler": "^1.0",
|
||||||
|
"psr/http-server-middleware": "^1.0",
|
||||||
|
"psr/log": "^1.1 || ^2.0 || ^3.0"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"adriansuter/php-autoload-override": "^1.4 || ^2",
|
||||||
|
"ext-simplexml": "*",
|
||||||
|
"guzzlehttp/psr7": "^2.6",
|
||||||
|
"httpsoft/http-message": "^1.1",
|
||||||
|
"httpsoft/http-server-request": "^1.1",
|
||||||
|
"laminas/laminas-diactoros": "^2.17 || ^3",
|
||||||
|
"nyholm/psr7": "^1.8",
|
||||||
|
"nyholm/psr7-server": "^1.1",
|
||||||
|
"phpspec/prophecy": "^1.19",
|
||||||
|
"phpspec/prophecy-phpunit": "^2.1",
|
||||||
|
"phpstan/phpstan": "^1 || ^2",
|
||||||
|
"phpunit/phpunit": "^9.6 || ^10 || ^11 || ^12",
|
||||||
|
"slim/http": "^1.3",
|
||||||
|
"slim/psr7": "^1.6",
|
||||||
|
"squizlabs/php_codesniffer": "^3.10",
|
||||||
|
"vimeo/psalm": "^5 || ^6"
|
||||||
|
},
|
||||||
|
"suggest": {
|
||||||
|
"ext-simplexml": "Needed to support XML format in BodyParsingMiddleware",
|
||||||
|
"ext-xml": "Needed to support XML format in BodyParsingMiddleware",
|
||||||
|
"php-di/php-di": "PHP-DI is the recommended container library to be used with Slim",
|
||||||
|
"slim/psr7": "Slim PSR-7 implementation. See https://www.slimframework.com/docs/v4/start/installation.html for more information."
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Slim\\": "Slim"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Josh Lockhart",
|
||||||
|
"email": "hello@joshlockhart.com",
|
||||||
|
"homepage": "https://joshlockhart.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Andrew Smith",
|
||||||
|
"email": "a.smith@silentworks.co.uk",
|
||||||
|
"homepage": "https://silentworks.co.uk"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Rob Allen",
|
||||||
|
"email": "rob@akrabat.com",
|
||||||
|
"homepage": "https://akrabat.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Pierre Berube",
|
||||||
|
"email": "pierre@lgse.com",
|
||||||
|
"homepage": "https://www.lgse.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Gabriel Manricks",
|
||||||
|
"email": "gmanricks@me.com",
|
||||||
|
"homepage": "http://gabrielmanricks.com"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Slim is a PHP micro framework that helps you quickly write simple yet powerful web applications and APIs",
|
||||||
|
"homepage": "https://www.slimframework.com",
|
||||||
|
"keywords": [
|
||||||
|
"api",
|
||||||
|
"framework",
|
||||||
|
"micro",
|
||||||
|
"router"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"docs": "https://www.slimframework.com/docs/v4/",
|
||||||
|
"forum": "https://discourse.slimframework.com/",
|
||||||
|
"irc": "irc://irc.freenode.net:6667/slimphp",
|
||||||
|
"issues": "https://github.com/slimphp/Slim/issues",
|
||||||
|
"rss": "https://www.slimframework.com/blog/feed.rss",
|
||||||
|
"slack": "https://slimphp.slack.com/",
|
||||||
|
"source": "https://github.com/slimphp/Slim",
|
||||||
|
"wiki": "https://github.com/slimphp/Slim/wiki"
|
||||||
|
},
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"url": "https://opencollective.com/slimphp",
|
||||||
|
"type": "open_collective"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://tidelift.com/funding/github/packagist/slim/slim",
|
||||||
|
"type": "tidelift"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"time": "2025-11-21T12:23:44+00:00"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"packages-dev": [],
|
||||||
|
"aliases": [],
|
||||||
|
"minimum-stability": "stable",
|
||||||
|
"stability-flags": {},
|
||||||
|
"prefer-stable": false,
|
||||||
|
"prefer-lowest": false,
|
||||||
|
"platform": {
|
||||||
|
"php": "^8.2"
|
||||||
|
},
|
||||||
|
"platform-dev": {},
|
||||||
|
"plugin-api-version": "2.9.0"
|
||||||
|
}
|
||||||
1
www/fahrschuldesk.de/dist/assets/AuditLogs-rWevo39c.js
vendored
Normal file
1
www/fahrschuldesk.de/dist/assets/AuditLogs-rWevo39c.js
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
import{_ as o}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{f as s,b as t,j as a}from"./index-CeMVzSB6.js";const r={};function d(l,e){return a(),s("div",null,[...e[0]||(e[0]=[t("h1",{class:"text-2xl font-bold mb-6"},"Audit-Log",-1),t("div",{class:"bg-white rounded-xl shadow-sm p-6"},[t("p",{class:"text-slate-500"},"Audit-Log kommt bald...")],-1)])])}const i=o(r,[["render",d]]);export{i as default};
|
||||||
1
www/fahrschuldesk.de/dist/assets/Branches-s_BK2cgz.js
vendored
Normal file
1
www/fahrschuldesk.de/dist/assets/Branches-s_BK2cgz.js
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
import{_ as s}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{f as a,b as e,j as l}from"./index-CeMVzSB6.js";const o={};function n(r,t){return l(),a("div",null,[...t[0]||(t[0]=[e("h1",{class:"text-2xl font-bold mb-6"},"Filialen",-1),e("div",{class:"bg-white rounded-xl shadow-sm p-6"},[e("p",{class:"text-slate-500"},"Filialen-Verwaltung kommt bald...")],-1)])])}const i=s(o,[["render",n]]);export{i as default};
|
||||||
1
www/fahrschuldesk.de/dist/assets/Branding-D61QMGtV.js
vendored
Normal file
1
www/fahrschuldesk.de/dist/assets/Branding-D61QMGtV.js
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
import{_ as t}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{f as s,b as e,j as a}from"./index-CeMVzSB6.js";const n={};function r(d,o){return a(),s("div",null,[...o[0]||(o[0]=[e("h1",{class:"text-2xl font-bold mb-6"},"Branding",-1),e("div",{class:"bg-white rounded-xl shadow-sm p-6"},[e("p",{class:"text-slate-500"},"Branding / Logo-Upload kommt bald...")],-1)])])}const i=t(n,[["render",r]]);export{i as default};
|
||||||
1
www/fahrschuldesk.de/dist/assets/Calendar-B7rUkOeg.js
vendored
Normal file
1
www/fahrschuldesk.de/dist/assets/Calendar-B7rUkOeg.js
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
import{_ as a}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{f as r,b as e,j as s}from"./index-CeMVzSB6.js";const n={};function o(l,t){return s(),r("div",null,[...t[0]||(t[0]=[e("h1",{class:"text-2xl font-bold mb-6"},"Kalender",-1),e("div",{class:"bg-white rounded-xl shadow-sm p-6"},[e("p",{class:"text-slate-500"},"Kalender (Integration fahrschultermin.de) kommt bald...")],-1)])])}const m=a(n,[["render",o]]);export{m as default};
|
||||||
1
www/fahrschuldesk.de/dist/assets/Dashboard-DUl1_Jl9.js
vendored
Normal file
1
www/fahrschuldesk.de/dist/assets/Dashboard-DUl1_Jl9.js
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
import{p as V,f as x,b as e,g as A,i as d,z as a,h as n,n as m,u as c,F as f,d as u,e as p,t as v,m as b,c as B,s as C,j as l}from"./index-CeMVzSB6.js";const j={class:"min-h-screen bg-slate-100"},M={class:"bg-white border-b border-slate-200 sticky top-0 z-50"},N={class:"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"},z={class:"flex items-center justify-between h-16"},L={class:"hidden md:flex items-center gap-1"},P={class:"flex items-center gap-3"},$={class:"text-right hidden sm:block"},D={class:"text-sm font-medium text-slate-800"},F={class:"text-xs text-slate-500"},H={class:"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8"},K={__name:"Dashboard",setup(S){const y=C(),r=V(),k=B(()=>{var s;return r.isPlatformAdmin?"Plattform-Admin":((s=r.tenant)==null?void 0:s.name)||""});function i(s){return r.isPlatformAdmin,!0}async function w(){r.logout(),y.push("/login")}return(s,t)=>{var g,h;const o=b("router-link"),_=b("router-view");return l(),x("div",j,[e("header",M,[e("div",N,[e("div",z,[t[9]||(t[9]=A('<div class="flex items-center gap-3"><div class="w-9 h-9 rounded-lg bg-primary flex items-center justify-center"><svg class="w-6 h-6 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 17V7m0 10a2 2 0 01-2 2H5a2 2 0 01-2-2V7a2 2 0 012-2h2a2 2 0 012 2m0 10V7m0 10a2 2 0 002 2h2a2 2 0 002-2M9 7a2 2 0 012-2h2a2 2 0 012 2m0 10V7"></path></svg></div><span class="text-lg font-bold text-slate-800">fahrschuldesk</span></div>',1)),e("nav",L,[d(o,{to:"/dashboard",class:m(["px-3 py-2 rounded-lg text-sm font-medium transition-colors",s.$route.path==="/dashboard"?"bg-primary text-white":"text-slate-600 hover:bg-slate-100"])},{default:a(()=>[...t[0]||(t[0]=[n(" Dashboard ",-1)])]),_:1},8,["class"]),c(r).isPlatformAdmin?(l(),x(f,{key:0},[d(o,{to:"/admin/tenants",class:m(["px-3 py-2 rounded-lg text-sm font-medium transition-colors",s.$route.path.startsWith("/admin/tenants")?"bg-primary text-white":"text-slate-600 hover:bg-slate-100"])},{default:a(()=>[...t[1]||(t[1]=[n(" Fahrschulen ",-1)])]),_:1},8,["class"]),d(o,{to:"/admin/invoices",class:m(["px-3 py-2 rounded-lg text-sm font-medium transition-colors",s.$route.path.startsWith("/admin/invoices")?"bg-primary text-white":"text-slate-600 hover:bg-slate-100"])},{default:a(()=>[...t[2]||(t[2]=[n(" Rechnungen ",-1)])]),_:1},8,["class"]),d(o,{to:"/admin/audit-logs",class:m(["px-3 py-2 rounded-lg text-sm font-medium transition-colors",s.$route.path.startsWith("/admin/audit")?"bg-primary text-white":"text-slate-600 hover:bg-slate-100"])},{default:a(()=>[...t[3]||(t[3]=[n(" Audit-Log ",-1)])]),_:1},8,["class"])],64)):(l(),x(f,{key:1},[i()?(l(),u(o,{key:0,to:"/users",class:"px-3 py-2 rounded-lg text-sm font-medium text-slate-600 hover:bg-slate-100 transition-colors"},{default:a(()=>[...t[4]||(t[4]=[n(" Benutzer ",-1)])]),_:1})):p("",!0),i()?(l(),u(o,{key:1,to:"/calendar",class:"px-3 py-2 rounded-lg text-sm font-medium text-slate-600 hover:bg-slate-100 transition-colors"},{default:a(()=>[...t[5]||(t[5]=[n(" Kalender ",-1)])]),_:1})):p("",!0),i()?(l(),u(o,{key:2,to:"/messenger",class:"px-3 py-2 rounded-lg text-sm font-medium text-slate-600 hover:bg-slate-100 transition-colors"},{default:a(()=>[...t[6]||(t[6]=[n(" Messenger ",-1)])]),_:1})):p("",!0),i()||i()?(l(),u(o,{key:3,to:"/learning",class:"px-3 py-2 rounded-lg text-sm font-medium text-slate-600 hover:bg-slate-100 transition-colors"},{default:a(()=>[...t[7]||(t[7]=[n(" Lernsoftware ",-1)])]),_:1})):p("",!0)],64))]),e("div",P,[e("div",$,[e("p",D,v(((g=c(r).user)==null?void 0:g.name)||((h=c(r).user)==null?void 0:h.first_name)),1),e("p",F,v(k.value),1)]),e("button",{onClick:w,class:"p-2 rounded-lg text-slate-400 hover:text-slate-600 hover:bg-slate-100 transition-colors",title:"Abmelden"},[...t[8]||(t[8]=[e("svg",{class:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M17 16l4-4m0 0l-4-4m4 4H7m6 4v1a3 3 0 01-3 3H6a3 3 0 01-3-3V7a3 3 0 013-3h4a3 3 0 013 3v1"})],-1)])])])])])]),e("main",H,[d(_)])])}}};export{K as default};
|
||||||
1
www/fahrschuldesk.de/dist/assets/Files-BvF-O0NH.js
vendored
Normal file
1
www/fahrschuldesk.de/dist/assets/Files-BvF-O0NH.js
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
import{_ as s}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{f as o,b as e,j as a}from"./index-CeMVzSB6.js";const l={};function r(n,t){return a(),o("div",null,[...t[0]||(t[0]=[e("h1",{class:"text-2xl font-bold mb-6"},"Dateien (DKS)",-1),e("div",{class:"bg-white rounded-xl shadow-sm p-6"},[e("p",{class:"text-slate-500"},"DKS / Datei-Upload kommt bald...")],-1)])])}const i=s(l,[["render",r]]);export{i as default};
|
||||||
1
www/fahrschuldesk.de/dist/assets/ForgotPassword-BnefAgO5.js
vendored
Normal file
1
www/fahrschuldesk.de/dist/assets/ForgotPassword-BnefAgO5.js
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
import{f as i,b as t,g as v,B as x,A as f,y as b,n as g,t as o,e as h,h as d,i as y,z as w,k as l,m as k,j as u,a as _}from"./index-CeMVzSB6.js";const z={class:"min-h-screen flex items-center justify-center bg-gradient-to-br from-slate-100 to-slate-200 px-4"},S={class:"w-full max-w-md"},M={class:"bg-white rounded-2xl shadow-xl p-8"},V=["disabled"],B={class:"text-center text-sm text-slate-500 mt-6"},N={__name:"ForgotPassword",setup(C){const n=l(""),a=l(!1),s=l(""),r=l(!1);async function m(){a.value=!0,s.value="";try{await _.post("/auth/forgot-password",{email:n.value}),r.value=!0,s.value="Wenn die E-Mail existiert, erhalten Sie einen Link zum Zurücksetzen."}catch{r.value=!0,s.value="Wenn die E-Mail existiert, erhalten Sie einen Link zum Zurücksetzen."}finally{a.value=!1}}return(E,e)=>{const c=k("router-link");return u(),i("div",z,[t("div",S,[t("div",M,[e[4]||(e[4]=v('<div class="text-center mb-6"><div class="inline-flex items-center justify-center w-14 h-14 rounded-xl bg-primary mb-4"><svg class="w-8 h-8 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 7a2 2 0 012 2m4 0a6 6 0 01-7.743 5.743L11 17H9v2H7v2H4a1 1 0 01-1-1v-2.586a1 1 0 01.293-.707l5.964-5.964A6 6 0 1121 9z"></path></svg></div><h2 class="text-xl font-bold text-slate-800">Passwort vergessen?</h2><p class="text-slate-500 text-sm mt-1">Kein Problem. Geben Sie Ihre E-Mail ein.</p></div>',1)),t("form",{onSubmit:x(m,["prevent"]),class:"space-y-4"},[t("div",null,[e[1]||(e[1]=t("label",{class:"block text-sm font-medium text-slate-700 mb-1"},"E-Mail",-1)),f(t("input",{"onUpdate:modelValue":e[0]||(e[0]=p=>n.value=p),type:"email",required:"",placeholder:"ihre@email.de",class:"w-full px-4 py-2.5 rounded-lg border border-slate-300 focus:ring-2 focus:ring-primary focus:border-primary outline-none"},null,512),[[b,n.value]])]),s.value?(u(),i("div",{key:0,class:g(["p-3 rounded-lg text-sm",r.value?"bg-green-50 text-green-600":"bg-red-50 text-red-600"])},o(s.value),3)):h("",!0),t("button",{type:"submit",disabled:a.value,class:"w-full py-3 px-4 bg-primary text-white font-medium rounded-lg hover:bg-primary-600 disabled:opacity-50"},o(a.value?"Senden...":"Link senden"),9,V)],32),t("p",B,[e[3]||(e[3]=d(" Zurück zum ",-1)),y(c,{to:"/login",class:"text-primary hover:underline"},{default:w(()=>[...e[2]||(e[2]=[d("Login",-1)])]),_:1})])])])])}}};export{N as default};
|
||||||
1
www/fahrschuldesk.de/dist/assets/Invoices-DPbiN6Xy.js
vendored
Normal file
1
www/fahrschuldesk.de/dist/assets/Invoices-DPbiN6Xy.js
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
import{_ as s}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{f as t,b as e,j as o}from"./index-CeMVzSB6.js";const a={};function c(r,n){return o(),t("div",null,[...n[0]||(n[0]=[e("h1",{class:"text-2xl font-bold mb-6"},"Rechnungen",-1),e("div",{class:"bg-white rounded-xl shadow-sm p-6"},[e("p",{class:"text-slate-500"},"Rechnungen kommen bald...")],-1)])])}const m=s(a,[["render",c]]);export{m as default};
|
||||||
1
www/fahrschuldesk.de/dist/assets/Learning-C1i3Orm8.js
vendored
Normal file
1
www/fahrschuldesk.de/dist/assets/Learning-C1i3Orm8.js
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
import{_ as s}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{f as o,b as e,j as r}from"./index-CeMVzSB6.js";const a={};function n(l,t){return r(),o("div",null,[...t[0]||(t[0]=[e("h1",{class:"text-2xl font-bold mb-6"},"Lernsoftware",-1),e("div",{class:"bg-white rounded-xl shadow-sm p-6"},[e("p",{class:"text-slate-500"},"Lernsoftware kommt bald...")],-1)])])}const f=s(a,[["render",n]]);export{f as default};
|
||||||
1
www/fahrschuldesk.de/dist/assets/Login-fU5wXJUp.js
vendored
Normal file
1
www/fahrschuldesk.de/dist/assets/Login-fU5wXJUp.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
www/fahrschuldesk.de/dist/assets/Messenger-DL4jJcTI.js
vendored
Normal file
1
www/fahrschuldesk.de/dist/assets/Messenger-DL4jJcTI.js
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
import{_ as t}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{f as o,b as e,j as r}from"./index-CeMVzSB6.js";const n={};function a(l,s){return r(),o("div",null,[...s[0]||(s[0]=[e("h1",{class:"text-2xl font-bold mb-6"},"Messenger",-1),e("div",{class:"bg-white rounded-xl shadow-sm p-6"},[e("p",{class:"text-slate-500"},"Messenger kommt bald...")],-1)])])}const m=t(n,[["render",a]]);export{m as default};
|
||||||
1
www/fahrschuldesk.de/dist/assets/Modules-XFzn2DhG.js
vendored
Normal file
1
www/fahrschuldesk.de/dist/assets/Modules-XFzn2DhG.js
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
import{_ as o}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{f as s,b as e,j as l}from"./index-CeMVzSB6.js";const a={};function r(d,t){return l(),s("div",null,[...t[0]||(t[0]=[e("h1",{class:"text-2xl font-bold mb-6"},"Module",-1),e("div",{class:"bg-white rounded-xl shadow-sm p-6"},[e("p",{class:"text-slate-500"},"Module-Verwaltung kommt bald...")],-1)])])}const m=o(a,[["render",r]]);export{m as default};
|
||||||
1
www/fahrschuldesk.de/dist/assets/NotFound-CXY4AhOb.js
vendored
Normal file
1
www/fahrschuldesk.de/dist/assets/NotFound-CXY4AhOb.js
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
import{_ as o}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{f as n,b as t,i as r,z as i,h as l,m as a,j as d}from"./index-CeMVzSB6.js";const m={},c={class:"min-h-screen flex items-center justify-center px-4"},x={class:"text-center"};function f(p,e){const s=a("router-link");return d(),n("div",c,[t("div",x,[e[1]||(e[1]=t("div",{class:"text-8xl font-bold text-slate-200 mb-4"},"404",-1)),e[2]||(e[2]=t("h1",{class:"text-2xl font-bold text-slate-800 mb-2"},"Seite nicht gefunden",-1)),e[3]||(e[3]=t("p",{class:"text-slate-500 mb-8"},"Die Seite, die du suchst, existiert nicht.",-1)),r(s,{to:"/",class:"inline-flex items-center gap-2 px-6 py-3 bg-primary text-white rounded-lg hover:bg-primary-600 transition-colors"},{default:i(()=>[...e[0]||(e[0]=[t("svg",{class:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6"})],-1),l(" Zum Dashboard ",-1)])]),_:1})])])}const v=o(m,[["render",f]]);export{v as default};
|
||||||
1
www/fahrschuldesk.de/dist/assets/PlatformAdmins-BsfJuUAN.js
vendored
Normal file
1
www/fahrschuldesk.de/dist/assets/PlatformAdmins-BsfJuUAN.js
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
import{_ as s}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{f as o,b as t,j as a}from"./index-CeMVzSB6.js";const r={};function l(n,e){return a(),o("div",null,[...e[0]||(e[0]=[t("h1",{class:"text-2xl font-bold mb-6"},"Plattform-Admins",-1),t("div",{class:"bg-white rounded-xl shadow-sm p-6"},[t("p",{class:"text-slate-500"},"Admin-Verwaltung kommt bald...")],-1)])])}const c=s(r,[["render",l]]);export{c as default};
|
||||||
1
www/fahrschuldesk.de/dist/assets/Register-Dtyvn1Yy.js
vendored
Normal file
1
www/fahrschuldesk.de/dist/assets/Register-Dtyvn1Yy.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
www/fahrschuldesk.de/dist/assets/TenantEdit-TJEJ_0TK.js
vendored
Normal file
1
www/fahrschuldesk.de/dist/assets/TenantEdit-TJEJ_0TK.js
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
import{o as k,f as o,b as t,t as u,A as r,y as v,x as w,F as h,l as M,e as $,a as d,k as b,q as C,j as i,n as S}from"./index-CeMVzSB6.js";const V={class:"flex items-center gap-4 mb-6"},A={class:"text-2xl font-bold text-slate-800"},B={key:0,class:"text-center py-12 text-slate-500"},E={key:1,class:"grid gap-6"},F={class:"bg-white rounded-xl shadow-sm p-6"},T={class:"grid grid-cols-2 gap-4"},U={class:"bg-white rounded-xl shadow-sm p-6"},j={class:"space-y-2"},L={class:"font-medium"},N={class:"text-sm text-slate-500"},R=["onClick"],z={__name:"TenantEdit",setup(_){const g=C(),l=b(null),c=b([]),m=b(!0);async function x(){m.value=!0;try{const[a,e]=await Promise.all([d.get(`/admin/tenants/${g.params.id}`),d.get("/admin/platform-modules")]);l.value=a.data.data,c.value=e.data.data}catch(a){console.error(a)}finally{m.value=!1}}function p(a){var e,n;return(n=(e=l.value)==null?void 0:e.modules)==null?void 0:n.some(s=>s.id===a&&s.status==="enabled")}async function f(a){const e=p(a.id);try{e?await d.delete(`/admin/tenants/${l.value.id}/modules/${a.id}`):await d.post(`/admin/tenants/${l.value.id}/modules`,{module_id:a.id}),await x()}catch(n){console.error(n)}}async function y(){try{await d.put(`/admin/tenants/${l.value.id}`,{name:l.value.name,email:l.value.email,phone:l.value.phone,status:l.value.status}),alert("Gespeichert!")}catch(a){console.error(a),alert("Fehler beim Speichern")}}return k(x),(a,e)=>{var n;return i(),o("div",null,[t("div",V,[t("button",{onClick:e[0]||(e[0]=s=>a.$router.back()),class:"p-2 rounded-lg hover:bg-slate-100"},[...e[5]||(e[5]=[t("svg",{class:"w-5 h-5 text-slate-600",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 19l-7-7 7-7"})],-1)])]),t("div",null,[t("h1",A,u(((n=l.value)==null?void 0:n.name)||"Laden..."),1),e[6]||(e[6]=t("p",{class:"text-slate-500 text-sm"},"Fahrschule bearbeiten",-1))])]),m.value?(i(),o("div",B,"Laden...")):l.value?(i(),o("div",E,[t("div",F,[e[12]||(e[12]=t("h2",{class:"text-lg font-semibold mb-4"},"Stammdaten",-1)),t("div",T,[t("div",null,[e[7]||(e[7]=t("label",{class:"block text-sm font-medium text-slate-700 mb-1"},"Name",-1)),r(t("input",{"onUpdate:modelValue":e[1]||(e[1]=s=>l.value.name=s),class:"w-full px-4 py-2 rounded-lg border border-slate-300"},null,512),[[v,l.value.name]])]),t("div",null,[e[8]||(e[8]=t("label",{class:"block text-sm font-medium text-slate-700 mb-1"},"E-Mail",-1)),r(t("input",{"onUpdate:modelValue":e[2]||(e[2]=s=>l.value.email=s),class:"w-full px-4 py-2 rounded-lg border border-slate-300"},null,512),[[v,l.value.email]])]),t("div",null,[e[9]||(e[9]=t("label",{class:"block text-sm font-medium text-slate-700 mb-1"},"Telefon",-1)),r(t("input",{"onUpdate:modelValue":e[3]||(e[3]=s=>l.value.phone=s),class:"w-full px-4 py-2 rounded-lg border border-slate-300"},null,512),[[v,l.value.phone]])]),t("div",null,[e[11]||(e[11]=t("label",{class:"block text-sm font-medium text-slate-700 mb-1"},"Status",-1)),r(t("select",{"onUpdate:modelValue":e[4]||(e[4]=s=>l.value.status=s),class:"w-full px-4 py-2 rounded-lg border border-slate-300"},[...e[10]||(e[10]=[t("option",{value:"pending_approval"},"Ausstehend",-1),t("option",{value:"active"},"Aktiv",-1),t("option",{value:"trial"},"Testphase",-1),t("option",{value:"suspended"},"Suspendiert",-1)])],512),[[w,l.value.status]])])]),t("button",{onClick:y,class:"mt-4 px-4 py-2 bg-primary text-white rounded-lg hover:bg-primary-600"}," Speichern ")]),t("div",U,[e[13]||(e[13]=t("h2",{class:"text-lg font-semibold mb-4"},"Module",-1)),t("div",j,[(i(!0),o(h,null,M(c.value,s=>(i(),o("div",{key:s.id,class:"flex items-center justify-between p-3 bg-slate-50 rounded-lg"},[t("div",null,[t("p",L,u(s.name),1),t("p",N,u(s.description),1)]),t("button",{onClick:D=>f(s),class:S(["px-3 py-1 rounded text-sm",p(s.id)?"bg-green-100 text-green-700":"bg-slate-200 text-slate-600"])},u(p(s.id)?"Aktiv":"Inaktiv"),11,R)]))),128))])])])):$("",!0)])}}};export{z as default};
|
||||||
1
www/fahrschuldesk.de/dist/assets/Tenants-oNbkI0ZB.js
vendored
Normal file
1
www/fahrschuldesk.de/dist/assets/Tenants-oNbkI0ZB.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
www/fahrschuldesk.de/dist/assets/Users-UfUrkk1j.js
vendored
Normal file
1
www/fahrschuldesk.de/dist/assets/Users-UfUrkk1j.js
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
import{_ as s}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{f as r,b as e,j as o}from"./index-CeMVzSB6.js";const a={};function n(l,t){return o(),r("div",null,[...t[0]||(t[0]=[e("h1",{class:"text-2xl font-bold mb-6"},"Benutzer",-1),e("div",{class:"bg-white rounded-xl shadow-sm p-6"},[e("p",{class:"text-slate-500"},"Benutzer-Verwaltung kommt bald...")],-1)])])}const m=s(a,[["render",n]]);export{m as default};
|
||||||
1
www/fahrschuldesk.de/dist/assets/_plugin-vue_export-helper-DlAUqK2U.js
vendored
Normal file
1
www/fahrschuldesk.de/dist/assets/_plugin-vue_export-helper-DlAUqK2U.js
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
const s=(t,r)=>{const o=t.__vccOpts||t;for(const[c,e]of r)o[c]=e;return o};export{s as _};
|
||||||
38
www/fahrschuldesk.de/dist/assets/index-CeMVzSB6.js
vendored
Normal file
38
www/fahrschuldesk.de/dist/assets/index-CeMVzSB6.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
www/fahrschuldesk.de/dist/assets/index-DnvNyrEP.css
vendored
Normal file
1
www/fahrschuldesk.de/dist/assets/index-DnvNyrEP.css
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
#app{min-height:100vh;background-color:#f8fafc}@tailwind base;@tailwind components;@tailwind utilities;:root{--color-primary: #2563eb;--color-primary-50: #eff6ff;--color-primary-100: #dbeafe;--color-primary-500: #3b82f6;--color-primary-600: #2563eb;--color-primary-700: #1d4ed8;--color-secondary: #64748b;--color-secondary-500: #64748b}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Inter,system-ui,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:#f1f5f9}::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#94a3b8}.fade-enter-active,.fade-leave-active{transition:opacity .2s ease}.fade-enter-from,.fade-leave-to{opacity:0}.slide-enter-active,.slide-leave-active{transition:transform .3s ease,opacity .3s ease}.slide-enter-from{transform:translate(-20px);opacity:0}.slide-leave-to{transform:translate(20px);opacity:0}
|
||||||
18
www/fahrschuldesk.de/dist/index.html
vendored
Normal file
18
www/fahrschuldesk.de/dist/index.html
vendored
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="de">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<meta name="description" content="fahrschuldesk - Verwaltungssoftware für Fahrschulen" />
|
||||||
|
<title>fahrschuldesk</title>
|
||||||
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||||
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
|
||||||
|
<script type="module" crossorigin src="/assets/index-CeMVzSB6.js"></script>
|
||||||
|
<link rel="stylesheet" crossorigin href="/assets/index-DnvNyrEP.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="app"></div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
2498
www/fahrschuldesk.de/package-lock.json
generated
Normal file
2498
www/fahrschuldesk.de/package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
8
www/fahrschuldesk.de/src/views/admin/AuditLogs.vue
Normal file
8
www/fahrschuldesk.de/src/views/admin/AuditLogs.vue
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<h1 class="text-2xl font-bold mb-6">Audit-Log</h1>
|
||||||
|
<div class="bg-white rounded-xl shadow-sm p-6">
|
||||||
|
<p class="text-slate-500">Audit-Log kommt bald...</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
8
www/fahrschuldesk.de/src/views/admin/Invoices.vue
Normal file
8
www/fahrschuldesk.de/src/views/admin/Invoices.vue
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<h1 class="text-2xl font-bold mb-6">Rechnungen</h1>
|
||||||
|
<div class="bg-white rounded-xl shadow-sm p-6">
|
||||||
|
<p class="text-slate-500">Rechnungen kommen bald...</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
8
www/fahrschuldesk.de/src/views/admin/Modules.vue
Normal file
8
www/fahrschuldesk.de/src/views/admin/Modules.vue
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<h1 class="text-2xl font-bold mb-6">Module</h1>
|
||||||
|
<div class="bg-white rounded-xl shadow-sm p-6">
|
||||||
|
<p class="text-slate-500">Module-Verwaltung kommt bald...</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
8
www/fahrschuldesk.de/src/views/admin/PlatformAdmins.vue
Normal file
8
www/fahrschuldesk.de/src/views/admin/PlatformAdmins.vue
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<h1 class="text-2xl font-bold mb-6">Plattform-Admins</h1>
|
||||||
|
<div class="bg-white rounded-xl shadow-sm p-6">
|
||||||
|
<p class="text-slate-500">Admin-Verwaltung kommt bald...</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
132
www/fahrschuldesk.de/src/views/admin/TenantEdit.vue
Normal file
132
www/fahrschuldesk.de/src/views/admin/TenantEdit.vue
Normal file
@@ -0,0 +1,132 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<div class="flex items-center gap-4 mb-6">
|
||||||
|
<button @click="$router.back()" class="p-2 rounded-lg hover:bg-slate-100">
|
||||||
|
<svg class="w-5 h-5 text-slate-600" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||||
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 19l-7-7 7-7" />
|
||||||
|
</svg>
|
||||||
|
</button>
|
||||||
|
<div>
|
||||||
|
<h1 class="text-2xl font-bold text-slate-800">{{ tenant?.name || 'Laden...' }}</h1>
|
||||||
|
<p class="text-slate-500 text-sm">Fahrschule bearbeiten</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div v-if="loading" class="text-center py-12 text-slate-500">Laden...</div>
|
||||||
|
|
||||||
|
<div v-else-if="tenant" class="grid gap-6">
|
||||||
|
<!-- Info Card -->
|
||||||
|
<div class="bg-white rounded-xl shadow-sm p-6">
|
||||||
|
<h2 class="text-lg font-semibold mb-4">Stammdaten</h2>
|
||||||
|
<div class="grid grid-cols-2 gap-4">
|
||||||
|
<div>
|
||||||
|
<label class="block text-sm font-medium text-slate-700 mb-1">Name</label>
|
||||||
|
<input v-model="tenant.name" class="w-full px-4 py-2 rounded-lg border border-slate-300" />
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<label class="block text-sm font-medium text-slate-700 mb-1">E-Mail</label>
|
||||||
|
<input v-model="tenant.email" class="w-full px-4 py-2 rounded-lg border border-slate-300" />
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<label class="block text-sm font-medium text-slate-700 mb-1">Telefon</label>
|
||||||
|
<input v-model="tenant.phone" class="w-full px-4 py-2 rounded-lg border border-slate-300" />
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<label class="block text-sm font-medium text-slate-700 mb-1">Status</label>
|
||||||
|
<select v-model="tenant.status" class="w-full px-4 py-2 rounded-lg border border-slate-300">
|
||||||
|
<option value="pending_approval">Ausstehend</option>
|
||||||
|
<option value="active">Aktiv</option>
|
||||||
|
<option value="trial">Testphase</option>
|
||||||
|
<option value="suspended">Suspendiert</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<button @click="save" class="mt-4 px-4 py-2 bg-primary text-white rounded-lg hover:bg-primary-600">
|
||||||
|
Speichern
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Modules Card -->
|
||||||
|
<div class="bg-white rounded-xl shadow-sm p-6">
|
||||||
|
<h2 class="text-lg font-semibold mb-4">Module</h2>
|
||||||
|
<div class="space-y-2">
|
||||||
|
<div v-for="mod in allModules" :key="mod.id" class="flex items-center justify-between p-3 bg-slate-50 rounded-lg">
|
||||||
|
<div>
|
||||||
|
<p class="font-medium">{{ mod.name }}</p>
|
||||||
|
<p class="text-sm text-slate-500">{{ mod.description }}</p>
|
||||||
|
</div>
|
||||||
|
<button
|
||||||
|
@click="toggleModule(mod)"
|
||||||
|
class="px-3 py-1 rounded text-sm"
|
||||||
|
:class="isModuleEnabled(mod.id) ? 'bg-green-100 text-green-700' : 'bg-slate-200 text-slate-600'"
|
||||||
|
>
|
||||||
|
{{ isModuleEnabled(mod.id) ? 'Aktiv' : 'Inaktiv' }}
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { ref, onMounted } from 'vue'
|
||||||
|
import { useRoute } from 'vue-router'
|
||||||
|
import api from '@/api/client'
|
||||||
|
|
||||||
|
const route = useRoute()
|
||||||
|
const tenant = ref(null)
|
||||||
|
const allModules = ref([])
|
||||||
|
const loading = ref(true)
|
||||||
|
|
||||||
|
async function fetch() {
|
||||||
|
loading.value = true
|
||||||
|
try {
|
||||||
|
const [tenantRes, modulesRes] = await Promise.all([
|
||||||
|
api.get(`/admin/tenants/${route.params.id}`),
|
||||||
|
api.get('/admin/platform-modules')
|
||||||
|
])
|
||||||
|
tenant.value = tenantRes.data.data
|
||||||
|
allModules.value = modulesRes.data.data
|
||||||
|
} catch (e) {
|
||||||
|
console.error(e)
|
||||||
|
} finally {
|
||||||
|
loading.value = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function isModuleEnabled(moduleId) {
|
||||||
|
return tenant.value?.modules?.some(m => m.id === moduleId && m.status === 'enabled')
|
||||||
|
}
|
||||||
|
|
||||||
|
async function toggleModule(mod) {
|
||||||
|
const current = isModuleEnabled(mod.id)
|
||||||
|
try {
|
||||||
|
if (current) {
|
||||||
|
await api.delete(`/admin/tenants/${tenant.value.id}/modules/${mod.id}`)
|
||||||
|
} else {
|
||||||
|
await api.post(`/admin/tenants/${tenant.value.id}/modules`, { module_id: mod.id })
|
||||||
|
}
|
||||||
|
await fetch()
|
||||||
|
} catch (e) {
|
||||||
|
console.error(e)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async function save() {
|
||||||
|
try {
|
||||||
|
await api.put(`/admin/tenants/${tenant.value.id}`, {
|
||||||
|
name: tenant.value.name,
|
||||||
|
email: tenant.value.email,
|
||||||
|
phone: tenant.value.phone,
|
||||||
|
status: tenant.value.status
|
||||||
|
})
|
||||||
|
alert('Gespeichert!')
|
||||||
|
} catch (e) {
|
||||||
|
console.error(e)
|
||||||
|
alert('Fehler beim Speichern')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onMounted(fetch)
|
||||||
|
</script>
|
||||||
8
www/fahrschuldesk.de/src/views/student/Dashboard.vue
Normal file
8
www/fahrschuldesk.de/src/views/student/Dashboard.vue
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<h1 class="text-2xl font-bold mb-6">Dashboard</h1>
|
||||||
|
<div class="bg-white rounded-xl shadow-sm p-6">
|
||||||
|
<p class="text-slate-500">Schüler-Dashboard kommt bald...</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
8
www/fahrschuldesk.de/src/views/student/Learning.vue
Normal file
8
www/fahrschuldesk.de/src/views/student/Learning.vue
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<h1 class="text-2xl font-bold mb-6">Lernsoftware</h1>
|
||||||
|
<div class="bg-white rounded-xl shadow-sm p-6">
|
||||||
|
<p class="text-slate-500">Schüler-Lernsoftware kommt bald...</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
8
www/fahrschuldesk.de/src/views/tenant/Branches.vue
Normal file
8
www/fahrschuldesk.de/src/views/tenant/Branches.vue
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<h1 class="text-2xl font-bold mb-6">Filialen</h1>
|
||||||
|
<div class="bg-white rounded-xl shadow-sm p-6">
|
||||||
|
<p class="text-slate-500">Filialen-Verwaltung kommt bald...</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
8
www/fahrschuldesk.de/src/views/tenant/Branding.vue
Normal file
8
www/fahrschuldesk.de/src/views/tenant/Branding.vue
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<h1 class="text-2xl font-bold mb-6">Branding</h1>
|
||||||
|
<div class="bg-white rounded-xl shadow-sm p-6">
|
||||||
|
<p class="text-slate-500">Branding / Logo-Upload kommt bald...</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
8
www/fahrschuldesk.de/src/views/tenant/Calendar.vue
Normal file
8
www/fahrschuldesk.de/src/views/tenant/Calendar.vue
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<h1 class="text-2xl font-bold mb-6">Kalender</h1>
|
||||||
|
<div class="bg-white rounded-xl shadow-sm p-6">
|
||||||
|
<p class="text-slate-500">Kalender (Integration fahrschultermin.de) kommt bald...</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
8
www/fahrschuldesk.de/src/views/tenant/Files.vue
Normal file
8
www/fahrschuldesk.de/src/views/tenant/Files.vue
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<h1 class="text-2xl font-bold mb-6">Dateien (DKS)</h1>
|
||||||
|
<div class="bg-white rounded-xl shadow-sm p-6">
|
||||||
|
<p class="text-slate-500">DKS / Datei-Upload kommt bald...</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
8
www/fahrschuldesk.de/src/views/tenant/Learning.vue
Normal file
8
www/fahrschuldesk.de/src/views/tenant/Learning.vue
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<h1 class="text-2xl font-bold mb-6">Lernsoftware</h1>
|
||||||
|
<div class="bg-white rounded-xl shadow-sm p-6">
|
||||||
|
<p class="text-slate-500">Lernsoftware kommt bald...</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
8
www/fahrschuldesk.de/src/views/tenant/Messenger.vue
Normal file
8
www/fahrschuldesk.de/src/views/tenant/Messenger.vue
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<h1 class="text-2xl font-bold mb-6">Messenger</h1>
|
||||||
|
<div class="bg-white rounded-xl shadow-sm p-6">
|
||||||
|
<p class="text-slate-500">Messenger kommt bald...</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
8
www/fahrschuldesk.de/src/views/tenant/Users.vue
Normal file
8
www/fahrschuldesk.de/src/views/tenant/Users.vue
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<h1 class="text-2xl font-bold mb-6">Benutzer</h1>
|
||||||
|
<div class="bg-white rounded-xl shadow-sm p-6">
|
||||||
|
<p class="text-slate-500">Benutzer-Verwaltung kommt bald...</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
Reference in New Issue
Block a user