implement authentication and reusable data table
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
import { HttpClient } from '@angular/common/http';
|
||||
import { Injectable, inject, signal } from '@angular/core';
|
||||
import { map, Observable, tap } from 'rxjs';
|
||||
import { API_CONFIG } from '../config/api.config';
|
||||
import { PermissionContext } from '../models/context.model';
|
||||
|
||||
interface PermissionResponse {
|
||||
roles?: string[];
|
||||
permissions?: string[];
|
||||
defaultLandingPage?: string;
|
||||
}
|
||||
|
||||
@Injectable({ providedIn: 'root' })
|
||||
export class PermissionService {
|
||||
private readonly http = inject(HttpClient);
|
||||
readonly permissionContext = signal<PermissionContext | null>(null);
|
||||
|
||||
loadPermissions(): Observable<PermissionContext> {
|
||||
return this.http.get<PermissionResponse>(`${API_CONFIG.baseUrl}${API_CONFIG.endpoints.permissionContext}`).pipe(
|
||||
map((response) => ({
|
||||
roles: response.roles ?? [],
|
||||
permissions: response.permissions ?? [],
|
||||
defaultLandingPage: response.defaultLandingPage?.trim() || undefined,
|
||||
})),
|
||||
tap((context) => {
|
||||
this.permissionContext.set(context);
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
clear(): void {
|
||||
this.permissionContext.set(null);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user