diff --git a/apps/levansy-access-service/package.json b/apps/levansy-access-service/package.json index 0014f0c8..baf50358 100644 --- a/apps/levansy-access-service/package.json +++ b/apps/levansy-access-service/package.json @@ -27,6 +27,7 @@ "@nestjs/passport": "^10.0.1", "@nestjs/platform-express": "^10.2.8", "@nestjs/swagger": "^7.1.16", + "@ucast/mongo": "^2.4.3", "argon2": "^0.31.2", "class-transformer": "^0.5.1", "class-validator": "^0.14.0", diff --git a/apps/levansy-access-service/src/domain/entity/permission.ts b/apps/levansy-access-service/src/domain/entity/permission.ts new file mode 100644 index 00000000..7da35663 --- /dev/null +++ b/apps/levansy-access-service/src/domain/entity/permission.ts @@ -0,0 +1,31 @@ +import { MongoQuery } from '@ucast/mongo' + +import { BaseEntity } from './base-entity' + +export type Permission = BaseEntity & { + index: number + name: string + description: string + rule: { + inverted: boolean + actions: string[] + subjects: string[] + conditions: MongoQuery + } +} + +export enum Action { + Manage = 'manage', + Create = 'create', + Read = 'read', + Update = 'update', + Delete = 'delete', +} + +export enum Subject { + WebApp = 'web-app', + BioProduct = 'bio-product', + Permission = 'permission', + Role = 'role', + User = 'user', +} diff --git a/apps/levansy-access-service/src/domain/entity/role.ts b/apps/levansy-access-service/src/domain/entity/role.ts new file mode 100644 index 00000000..faed421b --- /dev/null +++ b/apps/levansy-access-service/src/domain/entity/role.ts @@ -0,0 +1,10 @@ +import { BaseEntity } from './base-entity' +import { Permission } from './permission' + +export type Role = BaseEntity & { + index: string + name: string + description: string + + permissions: string[] | Permission[] +} diff --git a/apps/levansy-access-service/src/domain/entity/user.ts b/apps/levansy-access-service/src/domain/entity/user.ts new file mode 100644 index 00000000..e69de29b diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cefb09d2..f55a46c5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -63,6 +63,9 @@ importers: '@nestjs/swagger': specifier: ^7.1.16 version: 7.1.16(@nestjs/common@10.2.8)(@nestjs/core@10.2.8)(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.13) + '@ucast/mongo': + specifier: ^2.4.3 + version: 2.4.3 argon2: specifier: ^0.31.2 version: 0.31.2