FEAT: get permissions working

This commit is contained in:
Gabriel Rosa
2022-07-12 15:43:21 -03:00
parent f5064420a7
commit d5cd562860
5 changed files with 60 additions and 16 deletions
@@ -1,6 +1,6 @@
import { Request } from 'express';
import { CustomDecorator } from '@nestjs/common';
import { Permission } from './permissions.enum';
import { PermissionsObjectPermission } from './permissions.enum';
import { RequestUser } from './user.decorator';
export const AUTH_FUNCTION_KEY = '__AUTH_FUNCTION__';
@@ -31,13 +31,17 @@ function SetMultipleMetadata(metadataKey, metadataValue): CustomDecorator {
return decoratorFactory as any;
}
export function RequireAllPermissions(...permissions: Permission[]) {
export function RequireAllPermissions(
...permissions: PermissionsObjectPermission[]
) {
return SetMultipleMetadata(AUTH_FUNCTION_KEY, (req, user: RequestUser) =>
permissions.every(({ seqid }) => user.permissions.includes(seqid)),
);
}
export function RequireSomePermission(...permissions: Permission[]) {
export function RequireSomePermission(
...permissions: PermissionsObjectPermission[]
) {
return SetMultipleMetadata(AUTH_FUNCTION_KEY, (req, user: RequestUser) =>
permissions.some(({ seqid }) => user.permissions.includes(seqid)),
);
+3 -3
View File
@@ -8,7 +8,7 @@ export enum PermissionUsages {
INTERNAL = 'internal',
}
export interface Permission {
export interface PermissionsObjectPermission {
seqid: number;
claim: string;
usage: PermissionUsages;
@@ -17,12 +17,12 @@ export interface Permission {
'en-us': string;
};
}
export interface PermissionGroup {
export interface PermissionsObjectGroup {
title: {
'pt-br': string;
'en-us': string;
};
permissions: Record<string, Permission>;
permissions: Record<string, PermissionsObjectPermission>;
}
/*