From 25da3de7346080e12d05e5e541d40ba5d669bbc9 Mon Sep 17 00:00:00 2001 From: Dan Percic Date: Tue, 11 Oct 2022 12:35:03 +0300 Subject: [PATCH] add readme for permissions --- src/lib/permissions/README.md | 194 ++++++++++++++++++++++++++++++++++ 1 file changed, 194 insertions(+) create mode 100644 src/lib/permissions/README.md diff --git a/src/lib/permissions/README.md b/src/lib/permissions/README.md new file mode 100644 index 0000000..74dbc48 --- /dev/null +++ b/src/lib/permissions/README.md @@ -0,0 +1,194 @@ +```typescript +import { Component, OnInit } from "@angular/core"; +import { HttpClient } from "@angular/common/http"; +import { IqserPermissionsService } from "./permissions.service"; +import { IqserRolesService } from "./roles.service"; + +@Component({ + templateUrl: "./app.component.html" +}) +export class AppComponent implements OnInit { + constructor( + private permissionsService: IqserPermissionsService, + private rolesService: IqserRolesService, + private http: HttpClient + ) { + } + + ngOnInit(): void { + const perm = ["can-edit-articles", "can-read-articles"]; + this.permissionsService.loadPermissions(perm); + + const roles = ["ADMIN", "EDITOR"]; + this.permissionsService.loadPermissions(perm); + } +} +``` + +```angular2html + +
+
You can see this text congrats
+
+ + +
You can see this text congrats
+
+ +---------------------------------------------- + + + + + +
elseBlock
+
+ + +
thenBlock
+
+ +---------------------------------------------- + +
main
+ + +
elseBlock
+
+ + +
thenBlock
+
+``` + +```typescript +import { IqserRoute } from "./models/permissions-router-data.model"; +import { IqserPermissionsGuard } from "./permissions-guard.service"; + +const appRoutes: IqserRoute[] = [ + { + path: "home", + component: HomeComponent, + canActivate: [IqserPermissionsGuard], + data: { + permissions: { + allow: ["ADMIN", "MODERATOR"], + redirectTo: "/another-route" + } + } + } +]; + +const appRoutes1: IqserRoute[] = [ + { + path: 'dynamic/:id', + component: HomeComponent, + canActivate: [IqserPermissionsGuard], + data: { + permissions: { + allow: (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => { + if (route.params['id'] === 42) { + return ['MANAGER', "UTILS"] + } else { + return 'ADMIN' + } + } + } + } + } +]; + +const appRoutes2: IqserRoute[] = [ + { + path: "home", + component: HomeComponent, + canActivate: [IqserPermissionsGuard], + data: { + permissions: { + allow: ["ADMIN", "MODERATOR"], + redirectTo: { + navigationCommands: ["123"], + navigationExtras: { + skipLocationChange: true + } + } + } + }, + } +]; + +const appRoutes3: IqserRoute[] = [ + { + path: "home", + component: HomeComponent, + canActivate: [IqserPermissionsGuard], + data: { + permissions: { + allow: ["canReadAgenda", "canEditAgenda"], + redirectTo: { + canReadAgenda: "agendaList", + canEditAgenda: "dashboard", + default: "login" + } + } + } + } +]; + +const appRoutes4: IqserRoute[] = [ + { + path: "home", + component: HomeComponent, + canActivate: [IqserPermissionsGuard], + data: { + permissions: { + allow: ["canEditAgenda"], + redirectTo: { + canEditAgenda: { + navigationCommands: "dashboard", + navigationExtras: { + skipLocationChange: true + } + }, + default: "login" + } + } + } + } +]; + +const appRoutes5: IqserRoute[] = [ + { + path: 'home', + component: HomeComponent, + canActivate: [IqserPermissionsGuard], + data: { + permissions: { + allow: ['canReadAgenda', 'canEditAgenda'], + redirectTo: { + canReadAgenda: (rejectedPermissionName: string, activateRouteSnapshot: ActivatedRouteSnapshot, routeStateSnapshot: RouterStateSnapshot) => { + return 'dashboard'; + }, + canEditAgenda: (rejectedPermissionName: string, activateRouteSnapshot: ActivatedRouteSnapshot, routeStateSnapshot: RouterStateSnapshot) => { + return { + navigationCommands: ['/dashboard'], + navigationExtras: { + skipLocationChange: true + } + } + }, + default: 'login' + } + } + } + }, +]; + +```