diff --git a/packages/frontend/package.json b/packages/frontend/package.json
index 6aefef0..27f1b97 100644
--- a/packages/frontend/package.json
+++ b/packages/frontend/package.json
@@ -8,7 +8,8 @@
"watch": "ng build --watch --configuration development",
"test": "ng test",
"generate": "oazapfts --optimistic --useEnumType ./src/app/generated-api/swagger.json ./src/app/generated-api/api.ts",
- "dev": "pnpm -w run dev"
+ "dev": "pnpm -w run dev",
+ "deploy": "ng build --aot --configuration production"
},
"prettier": {
"printWidth": 100,
@@ -59,4 +60,4 @@
"oazapfts": "^6.3.1",
"typescript": "~5.9.3"
}
-}
\ No newline at end of file
+}
diff --git a/packages/frontend/src/app/app.html b/packages/frontend/src/app/app.html
index 8f41600..f118f67 100644
--- a/packages/frontend/src/app/app.html
+++ b/packages/frontend/src/app/app.html
@@ -1,14 +1,16 @@
@if(this.auth.loggedIn()){
-
}
-
+
+
+
diff --git a/packages/frontend/src/app/app.routes.ts b/packages/frontend/src/app/app.routes.ts
index 99b2c44..4669c48 100644
--- a/packages/frontend/src/app/app.routes.ts
+++ b/packages/frontend/src/app/app.routes.ts
@@ -11,7 +11,6 @@ import { AuthGuardData, createAuthGuard } from 'keycloak-angular';
import { Login } from './components/login/login';
import { MissingPage } from './components/missing-page/missing-page';
import { Claim } from './generated-api/api';
-import { keycloakConfig } from './util/keycloak-config';
export const roles = {
UserAdmin: 'useradmin',
@@ -71,9 +70,5 @@ export const routes: Routes = [
),
canActivate: [requireRoles([Claim.Memberadmin])],
},
- {
- path: 'profile',
- redirectTo: `${keycloakConfig.url}/realms/${keycloakConfig.realm}/account`,
- },
{ path: '**', component: MissingPage },
];
diff --git a/packages/frontend/src/app/app.scss b/packages/frontend/src/app/app.scss
index 2e49617..92fbefb 100644
--- a/packages/frontend/src/app/app.scss
+++ b/packages/frontend/src/app/app.scss
@@ -1,10 +1,10 @@
-@media print {
- .no-print {
- display: none;
- visibility: hidden;
- }
-
- :not(.no-print) {
- visibility: visible;
- }
+:host {
+ display: flex;
+ flex-direction: column;
+ height: 100%;
+ overflow: hidden;
+}
+
+.outlet {
+ overflow: auto;
}
diff --git a/packages/frontend/src/app/app.ts b/packages/frontend/src/app/app.ts
index 2b7727e..2dd53a3 100644
--- a/packages/frontend/src/app/app.ts
+++ b/packages/frontend/src/app/app.ts
@@ -1,15 +1,29 @@
-import { Component, inject, signal } from '@angular/core';
+import { Component, effect, inject, signal } from '@angular/core';
import { MatButtonModule } from '@angular/material/button';
import { RouterModule, RouterOutlet } from '@angular/router';
import { Authentication } from './services/authentication';
+import { keycloakConfig } from './util/keycloak-config';
@Component({
- selector: 'app-root',
- imports: [RouterOutlet, MatButtonModule, RouterModule],
- templateUrl: './app.html',
- styleUrl: './app.scss',
+ selector: 'app-root',
+ imports: [RouterOutlet, MatButtonModule, RouterModule],
+ templateUrl: './app.html',
+ styleUrl: './app.scss',
})
export class App {
- protected readonly title = signal('frontend');
- protected readonly auth = inject(Authentication);
+ protected readonly title = signal('frontend');
+ protected readonly auth = inject(Authentication);
+
+ protected gotoProfile() {
+ window.location.href = `${keycloakConfig.url}/realms/${keycloakConfig.realm}/account`;
+ }
+
+ constructor() {
+ effect(() => {
+ const loggedIn = this.auth.loggedIn();
+ if (!loggedIn) {
+ this.auth.login();
+ }
+ });
+ }
}
diff --git a/packages/frontend/src/app/components/home/home.html b/packages/frontend/src/app/components/home/home.html
index c985447..09e6688 100644
--- a/packages/frontend/src/app/components/home/home.html
+++ b/packages/frontend/src/app/components/home/home.html
@@ -1,14 +1,26 @@
Startseite
-
-
-
- Entwichlungsinformationen
-
- Mitglieder
-
- Benutzer Verwalten
-
-
- Prüfungsanmeldung
-
-
+
+
+
+ Mitgliederliste
+
+
+
+
+ Benutzer Verwalten
+
+
+
+
+ Prüfungsanmeldung
+
+
+
+
+ Entwichlungsinformationen
+
+
+
diff --git a/packages/frontend/src/app/components/home/home.ts b/packages/frontend/src/app/components/home/home.ts
index d4f6fc9..9e482b0 100644
--- a/packages/frontend/src/app/components/home/home.ts
+++ b/packages/frontend/src/app/components/home/home.ts
@@ -1,13 +1,21 @@
import { Component } from '@angular/core';
import { MatButtonModule } from '@angular/material/button';
+import { MatListModule } from '@angular/material/list';
import { RouterModule } from '@angular/router';
+import { ClaimGuardDirective } from '../../directives/claim-guard.directive';
+import { Claim } from '../../generated-api/api';
@Component({
- selector: 'app-home',
- imports: [RouterModule, MatButtonModule],
- templateUrl: './home.html',
- styleUrl: './home.scss',
+ selector: 'app-home',
+ imports: [
+ RouterModule,
+ MatButtonModule,
+ MatListModule,
+ ClaimGuardDirective,
+ ],
+ templateUrl: './home.html',
+ styleUrl: './home.scss',
})
export class Home {
-
+ protected Claim = Claim;
}
diff --git a/packages/frontend/src/app/components/view-members/view-members.html b/packages/frontend/src/app/components/view-members/view-members.html
index d596632..087765a 100644
--- a/packages/frontend/src/app/components/view-members/view-members.html
+++ b/packages/frontend/src/app/components/view-members/view-members.html
@@ -1,142 +1,180 @@
-Mitglieder & Sportlerübersicht
-
- Neues Mitglied
-
-
-