Meine Anmeldungen
diff --git a/app/Domains/UserManagement/Routes/web.php b/app/Domains/UserManagement/Routes/web.php
index a5dea9c..b7ce619 100644
--- a/app/Domains/UserManagement/Routes/web.php
+++ b/app/Domains/UserManagement/Routes/web.php
@@ -1,15 +1,13 @@
group(function () {
Route::get('/register', [RegistrationController::class, 'loginForm']);
@@ -25,6 +23,11 @@ Route::middleware(IdentifyTenant::class)->group(function () {
Route::post('/logout', [LogoutController::class, 'logout']);
});
+
+ Route::prefix('api/v1/') ->group(function () {
+ Route::get('/retreive-global-data', GlobalDataProvider::class);
+ });
+
});
diff --git a/app/Installer/DevelopmentDataSeeder.php b/app/Installer/DevelopmentDataSeeder.php
index 459d1e8..8e29371 100644
--- a/app/Installer/DevelopmentDataSeeder.php
+++ b/app/Installer/DevelopmentDataSeeder.php
@@ -38,6 +38,7 @@ class DevelopmentDataSeeder {
'email' => 'th.guenther@saale-mail.de',
'password' => bcrypt('development'),
'username' => 'development',
+ 'active' => true,
]);
}
}
diff --git a/app/Models/User.php b/app/Models/User.php
index e17b389..6d11423 100644
--- a/app/Models/User.php
+++ b/app/Models/User.php
@@ -101,6 +101,6 @@ class User extends Authenticatable
}
public function getNicename() : string {
- return $this->nickname !== '' ? $this->nickname : $this->firstname;
+ return $this->nickname ?? $this->firstname;
}
}
diff --git a/app/Providers/GlobalDataProvider.php b/app/Providers/GlobalDataProvider.php
new file mode 100644
index 0000000..844cc35
--- /dev/null
+++ b/app/Providers/GlobalDataProvider.php
@@ -0,0 +1,46 @@
+user = auth()->user();
+
+ return response()->json([
+ 'user' => null !== $this->user ? new UserResource($this->user)->toArray(request()) : [],
+ 'navbar' => $this->generateNavbar(),
+ 'tenant' => app('tenant'),
+ 'availableLocalGroups' => Tenant::where(['is_active_local_group' => true])->get(),
+ ]);
+ }
+
+ private function generateNavbar() : array {
+ $navigation = [
+ 'personal' => [],
+ 'common' => [],
+ 'costunits' => [],
+ 'events' => [],
+ ];
+
+ $navigation['personal'][] = ['url' => '/', 'display' => 'Home'];
+ if (null !== $this->user) {
+ $navigation['personal'][] = ['url' => '/personal-data', 'display' => 'Meine Daten'];
+ $navigation['personal'][] = ['url' => '/messages', 'display' => 'Meine Nachrichten'];
+
+ $navigation['costunits'][] = ['url' => '/cost-unit/create', 'display' => 'Neue laufende Tätigkeit'];
+
+ }
+
+ $navigation['common'][] = ['url' => '/capture-invoice', 'display' => 'Neue Abrechnung'];
+ $navigation['common'][] = ['url' => '/available-events', 'display' => 'Verfügbare Veranstaltungen'];
+
+ return $navigation;
+ }
+}
diff --git a/app/Providers/InertiaProvider.php b/app/Providers/InertiaProvider.php
index 9ec151f..e9f890f 100644
--- a/app/Providers/InertiaProvider.php
+++ b/app/Providers/InertiaProvider.php
@@ -22,35 +22,11 @@ final class InertiaProvider
}
public function render() : Response {
- $this->props['navbar'] = $this->generateNavbar();
- $this->props['tenant'] = app('tenant');
- $this->props['user'] = new UserResource($this->user)->toArray(request());
- $this->props['currentPath'] = request()->path();
- $this->props['availableLocalGroups'] = Tenant::where(['is_active_local_group' => true])->get();
-
return Inertia::render(
str_replace('/', '/Views/', $this->vueFile),
$this->props
);
}
- private function generateNavbar() : array {
- $navigation = [
- 'personal' => [],
- 'common' => [],
- 'costunits' => [],
- 'events' => [],
- ];
- $navigation['personal'][] = ['url' => '/', 'display' => 'Home'];
- if (null !== $this->user) {
- $navigation['personal'][] = ['url' => '/personal-data', 'display' => 'Meine Daten'];
- $navigation['personal'][] = ['url' => '/messages', 'display' => 'Meine Nachrichten'];
- }
-
- $navigation['common'][] = ['url' => '/capture-invoice', 'display' => 'Neue Abrechnung'];
- $navigation['common'][] = ['url' => '/available-events', 'display' => 'Verfügbare Veranstaltungen'];
-
- return $navigation;
- }
}
diff --git a/resources/js/layouts/AppLayout.vue b/resources/js/layouts/AppLayout.vue
index e9561f4..fa5080f 100644
--- a/resources/js/layouts/AppLayout.vue
+++ b/resources/js/layouts/AppLayout.vue
@@ -1,15 +1,44 @@
@@ -25,36 +54,36 @@ const props = defineProps({