ngx-keycloak-authz-lib
Version:
Bibliothèque d'authorisation Keycloak pour Angular
50 lines • 6.77 kB
JavaScript
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=