import legacy frontend & fix dependency issues

This commit is contained in:
tw-blue
2025-12-07 12:51:57 +01:00
parent 91ac875a32
commit cd6cfec7f3
52 changed files with 3963 additions and 267 deletions
+57 -38
View File
@@ -1,55 +1,74 @@
import { inject } from '@angular/core';
import {
ActivatedRouteSnapshot,
CanActivateFn,
Router,
RouterStateSnapshot,
Routes,
UrlTree,
ActivatedRouteSnapshot,
CanActivateFn,
Router,
RouterStateSnapshot,
Routes,
UrlTree,
} from '@angular/router';
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';
export const roles = {
UserAdmin: 'useradmin',
MemberAdmin: 'memberadmin',
UserAdmin: 'useradmin',
MemberAdmin: 'memberadmin',
};
function requireRoles(roles: string[]=[], any: boolean = false): CanActivateFn {
const isAllowed = async (
_: ActivatedRouteSnapshot,
__: RouterStateSnapshot,
authData: AuthGuardData
): Promise<boolean | UrlTree> => {
const { authenticated, grantedRoles } = authData;
const allRoles = Object.values(grantedRoles).flat();
function requireRoles(
roles: string[] = [],
any: boolean = false,
): CanActivateFn {
const isAllowed = async (
_: ActivatedRouteSnapshot,
__: RouterStateSnapshot,
authData: AuthGuardData,
): Promise<boolean | UrlTree> => {
const { authenticated, grantedRoles } = authData;
const allRoles = Object.values(grantedRoles).flat();
const hasRequiredRoles = any
? roles.some((role) => allRoles.includes(role))
: roles.every((role) => allRoles.includes(role));
const hasRequiredRoles = any
? roles.some(role => allRoles.includes(role))
: roles.every(role => allRoles.includes(role));
if (authenticated && hasRequiredRoles) {
return true;
}
const router = inject(Router);
return router.parseUrl('/login');
};
if (authenticated && hasRequiredRoles) {
return true;
}
const router = inject(Router);
return router.parseUrl('/login');
};
return createAuthGuard<CanActivateFn>(isAllowed);
return createAuthGuard<CanActivateFn>(isAllowed);
}
export const routes: Routes = [
{ path: 'login', component: Login },
{
path: '',
loadComponent: () => import('./components/home/home').then((mod) => mod.Home),
canActivate: [requireRoles()],
},
{
path: 'home',
loadComponent: () => import('./components/home/home').then((mod) => mod.Home),
canActivate: [requireRoles()],
},
{ path: '**', component: MissingPage },
{ path: 'login', component: Login },
{
path: '',
loadComponent: () =>
import('./components/home/home').then(mod => mod.Home),
canActivate: [requireRoles()],
},
{
path: 'home',
loadComponent: () =>
import('./components/home/home').then(mod => mod.Home),
canActivate: [requireRoles()],
},
{
path: 'test',
loadComponent: () =>
import('./components/test/test').then(mod => mod.Test),
},
{
path: 'list',
loadComponent: () =>
import('./components/view-members/view-members').then(
mod => mod.ViewMembers,
),
canActivate: [requireRoles([Claim.Memberadmin])],
},
{ path: '**', component: MissingPage },
];