Step 6: Route data + auth roles
Use route data for roles and enforce access with a router hook.
1. Create a tiny auth service
import { DI } from '@aurelia/kernel';
export type User = {
name: string;
roles: string[];
};
export const IAuthService = DI.createInterface<IAuthService>(
'IAuthService',
x => x.singleton(AuthService)
);
export interface IAuthService extends AuthService {}
export class AuthService {
private user: User | null = { name: 'Taylor', roles: ['member'] };
getCurrentUser(): User | null {
return this.user;
}
hasRole(role: string): boolean {
return !!this.user?.roles.includes(role);
}
toggleRole(role: string): void {
if (!this.user) return;
if (this.user.roles.includes(role)) {
this.user = { ...this.user, roles: this.user.roles.filter(item => item !== role) };
return;
}
this.user = { ...this.user, roles: [...this.user.roles, role] };
}
}2. Create a role-based router hook
3. Add protected routes with route data
4. Add an auth status widget
Recap
Last updated
Was this helpful?