@kitstack/nest-powertools
Version:
A comprehensive collection of NestJS powertools, decorators, and utilities to supercharge your backend development
40 lines • 1.56 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.GuardHelper = void 0;
const guard_registry_1 = require("../config/guard-registry");
class GuardHelper {
static registerGuard(name, guard) {
this.registry.registerGuard(name, guard);
}
static createRoleGuard(roles) {
return new guard_registry_1.RoleBasedGuard(roles);
}
static createPermissionGuard(permissions) {
return new guard_registry_1.PermissionBasedGuard(permissions);
}
static createOwnershipGuard(resourceIdParam = 'id') {
return new guard_registry_1.OwnershipGuard(resourceIdParam);
}
static createTimeBasedGuard(allowedHours) {
return new guard_registry_1.TimeBasedGuard(allowedHours);
}
static createCompositeGuard(guards, operator = 'AND') {
return {
async canActivate(context, user, requiredPermissions) {
const results = await Promise.all(guards.map((guard) => guard.canActivate(context, user, requiredPermissions)));
return operator === 'AND'
? results.every((result) => result)
: results.some((result) => result);
},
};
}
static getRegisteredGuards() {
return Object.keys(this.registry.getAllGuards());
}
static removeGuard(name) {
return this.registry.removeGuard(name);
}
}
exports.GuardHelper = GuardHelper;
GuardHelper.registry = guard_registry_1.GuardRegistryService.getInstance();
//# sourceMappingURL=guard.helper.js.map