2023-03-31 12:30:39 +03:00
..
2023-03-26 14:50:45 +03:00
2023-03-31 12:30:39 +03:00
2023-03-19 14:33:40 +02:00
2023-03-19 13:58:34 +02:00
2022-10-14 18:12:55 +03:00

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
    ) {
    }

    ngOnInit(): void {
        const perm = ["can-edit-articles", "can-read-articles"];
        this.permissionsService.load(perm);

        const roles = ["ADMIN", "EDITOR"];
        this.rolesService.load(roles);
    }
}

<div
    *allow="['ADMIN', 'GUEST']"
    (authorized)="yourCustomAuthorizedFunction()"
    (unauthorized)="yourCustomAuthorizedFunction()"
>
    <div>You can see this text congrats</div>
</div>

<ng-template allow="ADMIN">
    <div>You can see this text congrats</div>
</ng-template>

----------------------------------------------
<div
    *deny="['ADMIN', 'GUEST']"
    (authorized)="yourCustomAuthorizedFunction()"
    (unauthorized)="yourCustomAuthorizedFunction()"
>
    <div>You cant see this text congrats</div>
</div>

<ng-template deny="ADMIN">
    <div>You cant see this text congrats</div>
</ng-template>
----------------------------------------------

<ng-template
    [allow]="['MANAGER']"
    [allowIf]="someObject.isEmpty"
    [allowDeny]="['GUEST']"
    [allowThen]="thenBlock"
    [allowElse]="elseBlock">
</ng-template>

<ng-template #elseBlock>
    <div>elseBlock</div>
</ng-template>

<ng-template #thenBlock>
    <div>thenBlock</div>
</ng-template>

----------------------------------------------

<div *allow="['can-read']; deny: ['GUEST']; if: !someObject.isEmpty; else: elseBlock; then: thenBlock">main</div>

<ng-template #elseBlock>
    <div>elseBlock</div>
</ng-template>

<ng-template #thenBlock>
    <div>thenBlock</div>
</ng-template>
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'
                }
            }
        }
    },
];