add readme for permissions
This commit is contained in:
parent
c6edb0cd96
commit
25da3de734
194
src/lib/permissions/README.md
Normal file
194
src/lib/permissions/README.md
Normal file
@ -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
|
||||
|
||||
<div
|
||||
*iqserPermissions="['ADMIN', 'GUEST']"
|
||||
(permissionsAuthorized)="yourCustomAuthorizedFunction()"
|
||||
(permissionsUnauthorized)="yourCustomAuthorizedFunction()"
|
||||
>
|
||||
<div>You can see this text congrats</div>
|
||||
</div>
|
||||
|
||||
<ng-template iqserPermissions="ADMIN">
|
||||
<div>You can see this text congrats</div>
|
||||
</ng-template>
|
||||
|
||||
----------------------------------------------
|
||||
|
||||
<ng-template
|
||||
[iqserPermissions]="['MANAGER']"
|
||||
[iqserPermissionsThen]="thenBlock"
|
||||
[iqserPermissionsElse]="elseBlock">
|
||||
</ng-template>
|
||||
|
||||
<ng-template #elseBlock>
|
||||
<div>elseBlock</div>
|
||||
</ng-template>
|
||||
|
||||
<ng-template #thenBlock>
|
||||
<div>thenBlock</div>
|
||||
</ng-template>
|
||||
|
||||
----------------------------------------------
|
||||
|
||||
<div *iqserPermissions="['THEN_BLOCK']; else elseBlock; then thenBlock">main</div>
|
||||
|
||||
<ng-template #elseBlock>
|
||||
<div>elseBlock</div>
|
||||
</ng-template>
|
||||
|
||||
<ng-template #thenBlock>
|
||||
<div>thenBlock</div>
|
||||
</ng-template>
|
||||
```
|
||||
|
||||
```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'
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
];
|
||||
|
||||
```
|
||||
Loading…
x
Reference in New Issue
Block a user