UNPKG

ngx-keycloak-authz-lib

Version:
50 lines • 6.77 kB
import { __awaiter } from "tslib"; /** * A simple guard implementation out of the box. This class should be inherited and * implemented by the application. The only method that should be implemented is #isAccessAllowed. * The reason for this is that the authorization flow is usually not unique, so in this way you will * have more freedom to customize your authorization flow. */ export class KeycloakAuthzAuthGuard { constructor(router, keycloakAngular, keycloakAuth) { this.router = router; this.keycloakAngular = keycloakAngular; this.keycloakAuth = keycloakAuth; /** * Indicates if the user is authenticated or not. */ /** * Indicates if the user is authenticated or not. */ this.authenticated = false; /** * Roles of the logged user. It contains the clientId and realm user roles. */ /** * Roles of the logged user. It contains the clientId and realm user roles. */ this.permissions = []; } /** * CanActivate checks if the user is logged in and get the full list of authorizations * that ave been retrieved so far of the logged user. This values are set to * authenticated and permissions properties. * * @param route * @param state */ canActivate(route, state) { return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () { try { this.authenticated = yield this.keycloakAngular.isLoggedIn(); this.permissions = this.keycloakAuth.getPermissions(); const result = yield this.isAccessAllowed(route, state); resolve(result); } catch (error) { reject('An error happened during access validation. Details:' + error); } })); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Y2xvYWstYXV0aHotYXV0aC1ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1rZXljbG9hay1hdXRoei1saWIvc3JjL2xpYi9jb3JlL3NlcnZpY2VzL2tleWNsb2FrLWF1dGh6LWF1dGgtZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUtBOzs7OztHQUtHO0FBQ0gsTUFBTSxPQUFnQixzQkFBc0I7SUFnQjFDLFlBQXNCLE1BQWMsRUFBWSxlQUFnQyxFQUFZLFlBQTBDO1FBQWhILFdBQU0sR0FBTixNQUFNLENBQVE7UUFBWSxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFBWSxpQkFBWSxHQUFaLFlBQVksQ0FBOEI7UUFmdEk7O1dBRUc7UUFDSDs7V0FFRztRQUNPLGtCQUFhLEdBQVksS0FBSyxDQUFDO1FBQ3pDOztXQUVHO1FBQ0g7O1dBRUc7UUFDTyxnQkFBVyxHQUFpQyxFQUFFLENBQUM7SUFFZ0YsQ0FBQztJQUUxSTs7Ozs7OztPQU9HO0lBQ0gsV0FBVyxDQUFDLEtBQTZCLEVBQUUsS0FBMEI7UUFDbkUsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFPLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUMzQyxJQUFJO2dCQUNGLElBQUksQ0FBQyxhQUFhLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUM3RCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBRXRELE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ3hELE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUNqQjtZQUFDLE9BQU8sS0FBSyxFQUFFO2dCQUNkLE1BQU0sQ0FBQyxzREFBc0QsR0FBRyxLQUFLLENBQUMsQ0FBQzthQUN4RTtRQUNILENBQUMsQ0FBQSxDQUFDLENBQUM7SUFDTCxDQUFDO0NBYUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDYW5BY3RpdmF0ZSwgUm91dGVyLCBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBSb3V0ZXJTdGF0ZVNuYXBzaG90IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgS2V5Y2xvYWtTZXJ2aWNlfSBmcm9tICdrZXljbG9hay1hbmd1bGFyJztcclxuaW1wb3J0IHsgS2V5Y2xvYWtBdXRob3JpemF0aW9uU2VydmljZX0gZnJvbSAnLi9rZXljbG9hay1hdXRob3JpemF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQge0tleWNsb2FrUmVzb3VyY2VQZXJtaXNzaW9ufSBmcm9tICcuLi9pbnRlcmZhY2VzL2tleWNsb2FrLXBlcm1pc3Npb25zJztcclxuXHJcbi8qKlxyXG4gKiBBIHNpbXBsZSBndWFyZCBpbXBsZW1lbnRhdGlvbiBvdXQgb2YgdGhlIGJveC4gVGhpcyBjbGFzcyBzaG91bGQgYmUgaW5oZXJpdGVkIGFuZFxyXG4gKiBpbXBsZW1lbnRlZCBieSB0aGUgYXBwbGljYXRpb24uIFRoZSBvbmx5IG1ldGhvZCB0aGF0IHNob3VsZCBiZSBpbXBsZW1lbnRlZCBpcyAjaXNBY2Nlc3NBbGxvd2VkLlxyXG4gKiBUaGUgcmVhc29uIGZvciB0aGlzIGlzIHRoYXQgdGhlIGF1dGhvcml6YXRpb24gZmxvdyBpcyB1c3VhbGx5IG5vdCB1bmlxdWUsIHNvIGluIHRoaXMgd2F5IHlvdSB3aWxsXHJcbiAqIGhhdmUgbW9yZSBmcmVlZG9tIHRvIGN1c3RvbWl6ZSB5b3VyIGF1dGhvcml6YXRpb24gZmxvdy5cclxuICovXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBLZXljbG9ha0F1dGh6QXV0aEd1YXJkIGltcGxlbWVudHMgQ2FuQWN0aXZhdGUge1xyXG4gIC8qKlxyXG4gICAqIEluZGljYXRlcyBpZiB0aGUgdXNlciBpcyBhdXRoZW50aWNhdGVkIG9yIG5vdC5cclxuICAgKi9cclxuICAvKipcclxuICAgKiBJbmRpY2F0ZXMgaWYgdGhlIHVzZXIgaXMgYXV0aGVudGljYXRlZCBvciBub3QuXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGF1dGhlbnRpY2F0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAvKipcclxuICAgKiBSb2xlcyBvZiB0aGUgbG9nZ2VkIHVzZXIuIEl0IGNvbnRhaW5zIHRoZSBjbGllbnRJZCBhbmQgcmVhbG0gdXNlciByb2xlcy5cclxuICAgKi9cclxuICAvKipcclxuICAgKiBSb2xlcyBvZiB0aGUgbG9nZ2VkIHVzZXIuIEl0IGNvbnRhaW5zIHRoZSBjbGllbnRJZCBhbmQgcmVhbG0gdXNlciByb2xlcy5cclxuICAgKi9cclxuICBwcm90ZWN0ZWQgcGVybWlzc2lvbnM6IEtleWNsb2FrUmVzb3VyY2VQZXJtaXNzaW9uW10gPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIHJvdXRlcjogUm91dGVyLCBwcm90ZWN0ZWQga2V5Y2xvYWtBbmd1bGFyOiBLZXljbG9ha1NlcnZpY2UsIHByb3RlY3RlZCBrZXljbG9ha0F1dGg6IEtleWNsb2FrQXV0aG9yaXphdGlvblNlcnZpY2UpIHt9XHJcblxyXG4gIC8qKlxyXG4gICAqIENhbkFjdGl2YXRlIGNoZWNrcyBpZiB0aGUgdXNlciBpcyBsb2dnZWQgaW4gYW5kIGdldCB0aGUgZnVsbCBsaXN0IG9mIGF1dGhvcml6YXRpb25zXHJcbiAgICogdGhhdCBhdmUgYmVlbiByZXRyaWV2ZWQgc28gZmFyIG9mIHRoZSBsb2dnZWQgdXNlci4gVGhpcyB2YWx1ZXMgYXJlIHNldCB0b1xyXG4gICAqIGF1dGhlbnRpY2F0ZWQgYW5kIHBlcm1pc3Npb25zIHByb3BlcnRpZXMuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gcm91dGVcclxuICAgKiBAcGFyYW0gc3RhdGVcclxuICAgKi9cclxuICBjYW5BY3RpdmF0ZShyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgdGhpcy5hdXRoZW50aWNhdGVkID0gYXdhaXQgdGhpcy5rZXljbG9ha0FuZ3VsYXIuaXNMb2dnZWRJbigpO1xyXG4gICAgICAgIHRoaXMucGVybWlzc2lvbnMgPSB0aGlzLmtleWNsb2FrQXV0aC5nZXRQZXJtaXNzaW9ucygpO1xyXG5cclxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmlzQWNjZXNzQWxsb3dlZChyb3V0ZSwgc3RhdGUpO1xyXG4gICAgICAgIHJlc29sdmUocmVzdWx0KTtcclxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICByZWplY3QoJ0FuIGVycm9yIGhhcHBlbmVkIGR1cmluZyBhY2Nlc3MgdmFsaWRhdGlvbi4gRGV0YWlsczonICsgZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZSB5b3VyIG93biBjdXN0b21pemVkIGF1dGhvcml6YXRpb24gZmxvdyBpbiB0aGlzIG1ldGhvZC4gRnJvbSBoZXJlIHlvdSBhbHJlYWR5IGtub3duXHJcbiAgICogaWYgdGhlIHVzZXIgaXMgYXV0aGVudGljYXRlZCAodGhpcy5hdXRoZW50aWNhdGVkKSBhbmQgdGhlIHVzZXIgcGVybWlzc2lvbnMgKHRoaXMucGVybWlzc2lvbnMpLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHJvdXRlXHJcbiAgICogQHBhcmFtIHN0YXRlXHJcbiAgICovXHJcbiAgYWJzdHJhY3QgaXNBY2Nlc3NBbGxvd2VkKFxyXG4gICAgcm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXHJcbiAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdFxyXG4gICk6IFByb21pc2U8Ym9vbGVhbj47XHJcbn0iXX0=