From 7404ebf5ea907fb1632c7469bef25134fc493269 Mon Sep 17 00:00:00 2001 From: Philip Molares Date: Sun, 21 Nov 2021 17:17:33 +0100 Subject: [PATCH] feat: create permission decorator This gathers the permission a user needs to hold to access a resource for the PermissionsGuard. See https://docs.nestjs.com/guards#setting-roles-per-handler Signed-off-by: Philip Molares --- src/permissions/permissions.decorator.ts | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 src/permissions/permissions.decorator.ts diff --git a/src/permissions/permissions.decorator.ts b/src/permissions/permissions.decorator.ts new file mode 100644 index 000000000..87e7d18de --- /dev/null +++ b/src/permissions/permissions.decorator.ts @@ -0,0 +1,17 @@ +/* + * SPDX-FileCopyrightText: 2021 The HedgeDoc developers (see AUTHORS file) + * + * SPDX-License-Identifier: AGPL-3.0-only + */ +import { CustomDecorator, SetMetadata } from '@nestjs/common'; + +import { Permission } from './permissions.enum'; + +/** + * This decorator gathers the {@link Permission Permission} a user must hold for the {@link PermissionsGuard} + * @param permissions - an array of permissions. In practice this should always contain exactly one {@link Permission} + * @constructor + */ +// eslint-disable-next-line func-style,@typescript-eslint/naming-convention +export const Permissions = (...permissions: Permission[]): CustomDecorator => + SetMetadata('permissions', permissions);