Browse Source

Add scopes to access

pull/7603/head
Thomas Kaul 2 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 }
});
return accessesWithGranteeUser.map(
({ alias, granteeUser, id, permissions, settings }) => {
if (granteeUser) {
return {
alias,
id,
permissions,
grantee: granteeUser?.id,
settings: settings as AccessSettings,
type: 'PRIVATE'
};
}
return accessesWithGranteeUser.map((accessItem) => {
const { alias, granteeUser, id, permissions, settings } = accessItem;
const scopes = getScopesOfAccess(accessItem);
if (granteeUser) {
return {
alias,
id,
permissions,
grantee: 'Public',
scopes,
grantee: granteeUser?.id,
settings: settings as AccessSettings,
type: 'PUBLIC'
type: 'PRIVATE'
};
}
);
return {
alias,
id,
permissions,
scopes,
grantee: 'Public',
settings: settings as AccessSettings,
type: 'PUBLIC'
};
});
}
@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,
id: access.id,
permissions: access.permissions,
scopes: access.scopes,
settings: access.settings,
type: access.type
}
@ -247,15 +248,18 @@ export class GfUserAccountAccessComponent implements OnInit {
}
private update() {
this.accessesGet = this.user.access.map(({ alias, id, permissions }) => {
return {
id,
permissions,
alias: alias ?? '',
grantee: $localize`Me`,
type: 'PRIVATE'
};
});
this.accessesGet = this.user.access.map(
({ alias, id, permissions, scopes }) => {
return {
id,
permissions,
scopes,
alias: alias ?? '',
grantee: $localize`Me`,
type: 'PRIVATE'
};
}
);
this.dataService
.fetchAccesses()

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

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

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

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

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

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

1
prisma/schema.prisma

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

Loading…
Cancel
Save