[permissions] Rename enum SettingsFeatures --> SettingsPermissions (#10389)

This commit is contained in:
Marie
2025-02-21 17:04:30 +01:00
committed by GitHub
parent bf92860d19
commit 50bd91262f
31 changed files with 119 additions and 109 deletions

View File

@ -2,7 +2,7 @@ import { UseFilters, UseGuards } from '@nestjs/common';
import { Args, Context, Mutation, Query, Resolver } from '@nestjs/graphql';
import { InjectRepository } from '@nestjs/typeorm';
import { SettingsFeatures, SOURCE_LOCALE } from 'twenty-shared';
import { SettingsPermissions, SOURCE_LOCALE } from 'twenty-shared';
import { Repository } from 'typeorm';
import omit from 'lodash.omit';
@ -342,7 +342,7 @@ export class AuthResolver {
@UseGuards(
WorkspaceAuthGuard,
SettingsPermissionsGuard(SettingsFeatures.API_KEYS_AND_WEBHOOKS),
SettingsPermissionsGuard(SettingsPermissions.API_KEYS_AND_WEBHOOKS),
)
@Mutation(() => ApiKeyToken)
async generateApiKeyToken(

View File

@ -4,7 +4,7 @@ import { UseFilters, UseGuards } from '@nestjs/common';
import { Args, Mutation, Query, Resolver } from '@nestjs/graphql';
import { GraphQLError } from 'graphql';
import { SettingsFeatures } from 'twenty-shared';
import { SettingsPermissions } from 'twenty-shared';
import { BillingCheckoutSessionInput } from 'src/engine/core-modules/billing/dtos/inputs/billing-checkout-session.input';
import { BillingProductInput } from 'src/engine/core-modules/billing/dtos/inputs/billing-product.input';
@ -71,7 +71,7 @@ export class BillingResolver {
@Query(() => BillingSessionOutput)
@UseGuards(
WorkspaceAuthGuard,
SettingsPermissionsGuard(SettingsFeatures.WORKSPACE),
SettingsPermissionsGuard(SettingsPermissions.WORKSPACE),
)
async billingPortalSession(
@AuthWorkspace() workspace: Workspace,
@ -158,7 +158,7 @@ export class BillingResolver {
@Mutation(() => BillingUpdateOutput)
@UseGuards(
WorkspaceAuthGuard,
SettingsPermissionsGuard(SettingsFeatures.WORKSPACE),
SettingsPermissionsGuard(SettingsPermissions.WORKSPACE),
)
async updateBillingSubscription(@AuthWorkspace() workspace: Workspace) {
await this.billingSubscriptionService.applyBillingSubscription(workspace);
@ -202,7 +202,7 @@ export class BillingResolver {
await this.permissionsService.userHasWorkspaceSettingPermission({
userWorkspaceId,
workspaceId,
_setting: SettingsFeatures.WORKSPACE,
_setting: SettingsPermissions.WORKSPACE,
});
if (!userHasPermission) {

View File

@ -1,7 +1,7 @@
import { UseFilters, UseGuards } from '@nestjs/common';
import { Args, Mutation, Resolver } from '@nestjs/graphql';
import { SettingsFeatures } from 'twenty-shared';
import { SettingsPermissions } from 'twenty-shared';
import { AuthGraphqlApiExceptionFilter } from 'src/engine/core-modules/auth/filters/auth-graphql-api-exception.filter';
import { FeatureFlag } from 'src/engine/core-modules/feature-flag/feature-flag.entity';
@ -15,7 +15,7 @@ import { PermissionsGraphqlApiExceptionFilter } from 'src/engine/metadata-module
@Resolver()
@UseFilters(AuthGraphqlApiExceptionFilter, PermissionsGraphqlApiExceptionFilter)
@UseGuards(SettingsPermissionsGuard(SettingsFeatures.WORKSPACE))
@UseGuards(SettingsPermissionsGuard(SettingsPermissions.WORKSPACE))
export class LabResolver {
constructor(private labService: LabService) {}

View File

@ -3,7 +3,7 @@
import { UseFilters, UseGuards } from '@nestjs/common';
import { Args, Mutation, Query, Resolver } from '@nestjs/graphql';
import { SettingsFeatures } from 'twenty-shared';
import { SettingsPermissions } from 'twenty-shared';
import { EnterpriseFeaturesEnabledGuard } from 'src/engine/core-modules/auth/guards/enterprise-features-enabled.guard';
import { DeleteSsoInput } from 'src/engine/core-modules/sso/dtos/delete-sso.input';
@ -26,7 +26,7 @@ import { PermissionsGraphqlApiExceptionFilter } from 'src/engine/metadata-module
@Resolver()
@UseFilters(PermissionsGraphqlApiExceptionFilter)
@UseGuards(SettingsPermissionsGuard(SettingsFeatures.SECURITY))
@UseGuards(SettingsPermissionsGuard(SettingsPermissions.SECURITY))
export class SSOResolver {
constructor(private readonly sSOService: SSOService) {}

View File

@ -1,7 +1,10 @@
import { Field, ObjectType, registerEnumType } from '@nestjs/graphql';
import { IDField } from '@ptc-org/nestjs-query-graphql';
import { PermissionsOnAllObjectRecords, SettingsFeatures } from 'twenty-shared';
import {
PermissionsOnAllObjectRecords,
SettingsPermissions,
} from 'twenty-shared';
import {
Column,
CreateDateColumn,
@ -21,8 +24,8 @@ import { TwoFactorMethod } from 'src/engine/core-modules/two-factor-method/two-f
import { User } from 'src/engine/core-modules/user/user.entity';
import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity';
registerEnumType(SettingsFeatures, {
name: 'SettingsFeatures',
registerEnumType(SettingsPermissions, {
name: 'SettingsPermissions',
});
registerEnumType(PermissionsOnAllObjectRecords, {
@ -77,8 +80,8 @@ export class UserWorkspace {
)
twoFactorMethods: Relation<TwoFactorMethod[]>;
@Field(() => [SettingsFeatures], { nullable: true })
settingsPermissions?: SettingsFeatures[];
@Field(() => [SettingsPermissions], { nullable: true })
settingsPermissions?: SettingsPermissions[];
@Field(() => [PermissionsOnAllObjectRecords], { nullable: true })
objectRecordsPermissions?: PermissionsOnAllObjectRecords[];

View File

@ -13,7 +13,10 @@ import crypto from 'crypto';
import { GraphQLJSONObject } from 'graphql-type-json';
import { FileUpload, GraphQLUpload } from 'graphql-upload';
import { PermissionsOnAllObjectRecords, SettingsFeatures } from 'twenty-shared';
import {
PermissionsOnAllObjectRecords,
SettingsPermissions,
} from 'twenty-shared';
import { In, Repository } from 'typeorm';
import { SupportDriver } from 'src/engine/core-modules/environment/interfaces/support.interface';
@ -119,17 +122,17 @@ export class UserResolver {
workspaceId: workspace.id,
});
const permittedFeatures: SettingsFeatures[] = (
Object.keys(settingsPermissions) as SettingsFeatures[]
const grantedSettingsPermissions: SettingsPermissions[] = (
Object.keys(settingsPermissions) as SettingsPermissions[]
).filter((feature) => settingsPermissions[feature] === true);
const permittedObjectRecordsPermissions = (
const grantedObjectRecordsPermissions = (
Object.keys(objectRecordsPermissions) as PermissionsOnAllObjectRecords[]
).filter((permission) => objectRecordsPermissions[permission] === true);
currentUserWorkspace.settingsPermissions = permittedFeatures;
currentUserWorkspace.settingsPermissions = grantedSettingsPermissions;
currentUserWorkspace.objectRecordsPermissions =
permittedObjectRecordsPermissions;
grantedObjectRecordsPermissions;
user.currentUserWorkspace = currentUserWorkspace;
}

View File

@ -6,7 +6,7 @@ import assert from 'assert';
import { TypeOrmQueryService } from '@ptc-org/nestjs-query-typeorm';
import {
isDefined,
SettingsFeatures,
SettingsPermissions,
WorkspaceActivationStatus,
} from 'twenty-shared';
import { Repository } from 'typeorm';
@ -416,7 +416,7 @@ export class WorkspaceService extends TypeOrmQueryService<Workspace> {
const userHasPermission =
await this.permissionsService.userHasWorkspaceSettingPermission({
userWorkspaceId,
_setting: SettingsFeatures.SECURITY,
_setting: SettingsPermissions.SECURITY,
workspaceId: workspaceId,
});
@ -452,7 +452,7 @@ export class WorkspaceService extends TypeOrmQueryService<Workspace> {
await this.permissionsService.userHasWorkspaceSettingPermission({
userWorkspaceId,
workspaceId,
_setting: SettingsFeatures.WORKSPACE,
_setting: SettingsPermissions.WORKSPACE,
});
if (!userHasPermission) {

View File

@ -12,7 +12,7 @@ import { InjectRepository } from '@nestjs/typeorm';
import assert from 'assert';
import { FileUpload, GraphQLUpload } from 'graphql-upload';
import { isDefined, SettingsFeatures } from 'twenty-shared';
import { isDefined, SettingsPermissions } from 'twenty-shared';
import { Repository } from 'typeorm';
import { FileFolder } from 'src/engine/core-modules/file/interfaces/file-folder.interface';
@ -123,7 +123,7 @@ export class WorkspaceResolver {
@Mutation(() => String)
@UseGuards(
WorkspaceAuthGuard,
SettingsPermissionsGuard(SettingsFeatures.WORKSPACE),
SettingsPermissionsGuard(SettingsPermissions.WORKSPACE),
)
async uploadWorkspaceLogo(
@AuthWorkspace() { id }: Workspace,
@ -167,7 +167,7 @@ export class WorkspaceResolver {
@Mutation(() => Workspace)
@UseGuards(
WorkspaceAuthGuard,
SettingsPermissionsGuard(SettingsFeatures.WORKSPACE),
SettingsPermissionsGuard(SettingsPermissions.WORKSPACE),
)
async deleteCurrentWorkspace(@AuthWorkspace() { id }: Workspace) {
return this.workspaceService.deleteWorkspace(id);