Browse Source

Add scopes to access

pull/7603/head
Thomas Kaul 3 weeks ago
parent
commit
6dac12e499
  1. 33
      apps/api/src/app/access/access.controller.ts
  2. 22
      apps/client/src/app/components/user-account-access/user-account-access.component.ts
  3. 3
      libs/common/src/lib/dtos/create-access.dto.ts
  4. 3
      libs/common/src/lib/dtos/update-access.dto.ts
  5. 6
      libs/common/src/lib/interfaces/access.interface.ts
  6. 1
      prisma/schema.prisma

33
apps/api/src/app/access/access.controller.ts

@ -48,29 +48,32 @@ export class AccessController {
where: { userId: this.request.user.id } where: { userId: this.request.user.id }
}); });
return accessesWithGranteeUser.map( return accessesWithGranteeUser.map((accessItem) => {
({ alias, granteeUser, id, permissions, settings }) => { const { alias, granteeUser, id, permissions, settings } = accessItem;
if (granteeUser) { const scopes = getScopesOfAccess(accessItem);
return {
alias,
id,
permissions,
grantee: granteeUser?.id,
settings: settings as AccessSettings,
type: 'PRIVATE'
};
}
if (granteeUser) {
return { return {
alias, alias,
id, id,
permissions, permissions,
grantee: 'Public', scopes,
grantee: granteeUser?.id,
settings: settings as AccessSettings, settings: settings as AccessSettings,
type: 'PUBLIC' type: 'PRIVATE'
}; };
} }
);
return {
alias,
id,
permissions,
scopes,
grantee: 'Public',
settings: settings as AccessSettings,
type: 'PUBLIC'
};
});
} }
@HasPermission(permissions.createAccess) @HasPermission(permissions.createAccess)

22
apps/client/src/app/components/user-account-access/user-account-access.component.ts

@ -229,6 +229,7 @@ export class GfUserAccountAccessComponent implements OnInit {
grantee: access.grantee === 'Public' ? undefined : access.grantee, grantee: access.grantee === 'Public' ? undefined : access.grantee,
id: access.id, id: access.id,
permissions: access.permissions, permissions: access.permissions,
scopes: access.scopes,
settings: access.settings, settings: access.settings,
type: access.type type: access.type
} }
@ -247,15 +248,18 @@ export class GfUserAccountAccessComponent implements OnInit {
} }
private update() { private update() {
this.accessesGet = this.user.access.map(({ alias, id, permissions }) => { this.accessesGet = this.user.access.map(
return { ({ alias, id, permissions, scopes }) => {
id, return {
permissions, id,
alias: alias ?? '', permissions,
grantee: $localize`Me`, scopes,
type: 'PRIVATE' alias: alias ?? '',
}; grantee: $localize`Me`,
}); type: 'PRIVATE'
};
}
);
this.dataService this.dataService
.fetchAccesses() .fetchAccesses()

3
libs/common/src/lib/dtos/create-access.dto.ts

@ -16,6 +16,9 @@ export class CreateAccessDto {
@IsUUID() @IsUUID()
granteeUserId?: string; granteeUserId?: string;
/**
* @deprecated Use the scopes instead
*/
@IsEnum(AccessPermission, { each: true }) @IsEnum(AccessPermission, { each: true })
@IsOptional() @IsOptional()
permissions?: AccessPermission[]; permissions?: AccessPermission[];

3
libs/common/src/lib/dtos/update-access.dto.ts

@ -19,6 +19,9 @@ export class UpdateAccessDto {
@IsString() @IsString()
id: string; id: string;
/**
* @deprecated Use the scopes instead
*/
@IsEnum(AccessPermission, { each: true }) @IsEnum(AccessPermission, { each: true })
@IsOptional() @IsOptional()
permissions?: AccessPermission[]; permissions?: AccessPermission[];

6
libs/common/src/lib/interfaces/access.interface.ts

@ -8,7 +8,13 @@ export interface Access {
alias: string | null; alias: string | null;
grantee?: string; grantee?: string;
id: string; id: string;
/**
* @deprecated Use the scopes instead
*/
permissions: AccessPermission[]; permissions: AccessPermission[];
scopes: string[];
settings?: AccessSettings; settings?: AccessSettings;
type: AccessType; type: AccessType;
} }

1
prisma/schema.prisma

@ -14,6 +14,7 @@ model Access {
granteeUser User? @relation("accessGet", fields: [granteeUserId], onDelete: Cascade, references: [id]) granteeUser User? @relation("accessGet", fields: [granteeUserId], onDelete: Cascade, references: [id])
granteeUserId String? granteeUserId String?
id String @id @default(uuid()) id String @id @default(uuid())
/// @deprecated Use the scopes instead
permissions AccessPermission[] @default([READ_RESTRICTED]) permissions AccessPermission[] @default([READ_RESTRICTED])
scopes String[] @default([]) scopes String[] @default([])
settings Json @default("{}") settings Json @default("{}")

Loading…
Cancel
Save