@punks/backend-entity-manager 0.0.174 → 0.0.175

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/dist/cjs/index.js +25 -0
  2. package/dist/cjs/index.js.map +1 -1
  3. package/dist/cjs/types/abstractions/authentication.d.ts +4 -0
  4. package/dist/cjs/types/platforms/nest/__test__/server/database/core/entities/appPermission.entity.d.ts +10 -0
  5. package/dist/cjs/types/platforms/nest/__test__/server/database/core/entities/appRolePermission.entity.d.ts +10 -0
  6. package/dist/cjs/types/platforms/nest/__test__/server/infrastructure/authentication/providers/userRoles/index.d.ts +3 -1
  7. package/dist/cjs/types/platforms/nest/extensions/authentication/abstractions/index.d.ts +15 -2
  8. package/dist/cjs/types/platforms/nest/extensions/authentication/decorators/index.d.ts +1 -0
  9. package/dist/cjs/types/platforms/nest/extensions/authentication/decorators/permissionsService.d.ts +1 -0
  10. package/dist/cjs/types/platforms/nest/extensions/authentication/decorators/symbols.d.ts +1 -0
  11. package/dist/cjs/types/platforms/nest/extensions/authentication/initializer/index.d.ts +2 -0
  12. package/dist/cjs/types/platforms/nest/extensions/authentication/resolver/index.d.ts +6 -3
  13. package/dist/cjs/types/platforms/nest/extensions/authentication/services/authentication/index.d.ts +2 -2
  14. package/dist/esm/index.js +25 -1
  15. package/dist/esm/index.js.map +1 -1
  16. package/dist/esm/types/abstractions/authentication.d.ts +4 -0
  17. package/dist/esm/types/platforms/nest/__test__/server/database/core/entities/appPermission.entity.d.ts +10 -0
  18. package/dist/esm/types/platforms/nest/__test__/server/database/core/entities/appRolePermission.entity.d.ts +10 -0
  19. package/dist/esm/types/platforms/nest/__test__/server/infrastructure/authentication/providers/userRoles/index.d.ts +3 -1
  20. package/dist/esm/types/platforms/nest/extensions/authentication/abstractions/index.d.ts +15 -2
  21. package/dist/esm/types/platforms/nest/extensions/authentication/decorators/index.d.ts +1 -0
  22. package/dist/esm/types/platforms/nest/extensions/authentication/decorators/permissionsService.d.ts +1 -0
  23. package/dist/esm/types/platforms/nest/extensions/authentication/decorators/symbols.d.ts +1 -0
  24. package/dist/esm/types/platforms/nest/extensions/authentication/initializer/index.d.ts +2 -0
  25. package/dist/esm/types/platforms/nest/extensions/authentication/resolver/index.d.ts +6 -3
  26. package/dist/esm/types/platforms/nest/extensions/authentication/services/authentication/index.d.ts +2 -2
  27. package/dist/index.d.ts +29 -6
  28. package/package.json +1 -1
@@ -1,12 +1,16 @@
1
1
  export interface IAuthenticationUserRole {
2
2
  uid: string;
3
3
  }
4
+ export interface IAuthenticationUserPermission {
5
+ uid: string;
6
+ }
4
7
  export interface IAuthenticationContext<TUserContextData> {
5
8
  isAuthenticated: boolean;
6
9
  isAnonymous: boolean;
7
10
  userId?: string;
8
11
  userContext?: TUserContextData;
9
12
  userRoles?: IAuthenticationUserRole[];
13
+ userPermissions?: IAuthenticationUserPermission[];
10
14
  }
11
15
  export interface IAuthenticationContextProvider<TUserContext> {
12
16
  getContext(): Promise<IAuthenticationContext<TUserContext>>;
@@ -0,0 +1,10 @@
1
+ import { AppRolePermissionEntity } from "./appRolePermission.entity";
2
+ export type AppPermissionEntityId = string;
3
+ export declare class AppPermissionEntity {
4
+ id: AppPermissionEntityId;
5
+ uid: string;
6
+ name: string;
7
+ roles?: AppRolePermissionEntity[];
8
+ createdOn: Date;
9
+ updatedOn: Date;
10
+ }
@@ -0,0 +1,10 @@
1
+ import { AppPermissionEntity } from "./appPermission.entity";
2
+ import { AppRoleEntity } from "./appRole.entity";
3
+ export type AppRolePermissionEntityId = string;
4
+ export declare class AppRolePermissionEntity {
5
+ id: AppRolePermissionEntityId;
6
+ role: AppRoleEntity;
7
+ permission: AppPermissionEntity;
8
+ createdOn: Date;
9
+ updatedOn: Date;
10
+ }
@@ -4,11 +4,13 @@ import { AppUserRoleEntityManager } from "../../../../entities/appUserRoles/appU
4
4
  import { AppRoleEntityManager } from "../../../../entities/appRoles/appRole.manager";
5
5
  import { AppRoleEntity } from "../../../../database/core/entities/appRole.entity";
6
6
  import { AppUserEntity } from "../../../../database/core/entities/appUser.entity";
7
- export declare class AuthUserRolesService implements IAuthUserRolesService<AppUserEntity, AppRoleEntity> {
7
+ import { AppPermissionEntity } from "../../../../database/core/entities/appPermission.entity";
8
+ export declare class AuthUserRolesService implements IAuthUserRolesService<AppUserEntity, AppRoleEntity, AppPermissionEntity> {
8
9
  private readonly rolesManager;
9
10
  private readonly userManager;
10
11
  private readonly userRoleManager;
11
12
  constructor(rolesManager: AppRoleEntityManager, userManager: AppUserEntityManager, userRoleManager: AppUserRoleEntityManager);
13
+ getUserPermissions(userId: string): Promise<AppPermissionEntity[]>;
12
14
  getRoleUsers(roleId: string): Promise<AppUserEntity[]>;
13
15
  getUserRoles(userId: string): Promise<AppRoleEntity[]>;
14
16
  getUserRolesByUid(roleUid: string): Promise<AppRoleEntity[]>;
@@ -5,6 +5,11 @@ export interface IAuthRole {
5
5
  uid: string;
6
6
  name: string;
7
7
  }
8
+ export interface IAuthPermission {
9
+ id: string;
10
+ uid: string;
11
+ name: string;
12
+ }
8
13
  export interface IAuthUserProfile {
9
14
  firstName: string;
10
15
  lastName: string;
@@ -57,10 +62,18 @@ export interface IAuthRoleService<TRole extends IAuthRole> {
57
62
  getById(id: string): Promise<TRole | undefined>;
58
63
  getByUid(uid: string): Promise<TRole | undefined>;
59
64
  }
60
- export interface IAuthUserRolesService<TUser extends IAuthUser, TRole extends IAuthRole> {
65
+ export interface IAuthPermissionService<TPermission extends IAuthPermission> {
66
+ create(data: Partial<TPermission>): Promise<TPermission>;
67
+ update(id: string, data: Partial<TPermission>): Promise<void>;
68
+ ensure(uid: string, data: Partial<Omit<TPermission, "uid">>): Promise<TPermission>;
69
+ delete(id: string): Promise<void>;
70
+ getById(id: string): Promise<TPermission | undefined>;
71
+ getByUid(uid: string): Promise<TPermission | undefined>;
72
+ }
73
+ export interface IAuthUserRolesService<TUser extends IAuthUser, TRole extends IAuthRole, TPermission extends IAuthPermission> {
61
74
  getRoleUsers(roleId: string): Promise<TUser[]>;
62
75
  getUserRoles(userId: string): Promise<TRole[]>;
63
- getUserRolesByUid(roleUid: string): Promise<TRole[]>;
76
+ getUserPermissions(userId: string): Promise<TPermission[]>;
64
77
  addUserToRole(userId: string, roleId: string): Promise<void>;
65
78
  addUserToRoleByUid(userId: string, roleUid: string): Promise<void>;
66
79
  removeUserFromRole(userId: string, roleId: string): Promise<void>;
@@ -1,5 +1,6 @@
1
1
  export { CurrentUser, CurrentUserData } from "./currentUser";
2
2
  export { Authenticated, MemberOf, Public, Roles, buildRolesGuard, } from "./guards";
3
+ export { WpPermissionsService } from "./permissionsService";
3
4
  export { AuthenticationExtensionSymbols } from "./symbols";
4
5
  export { WpRolesService } from "./rolesService";
5
6
  export { WpUserService } from "./userService";
@@ -0,0 +1 @@
1
+ export declare const WpPermissionsService: () => <TFunction extends Function, Y>(target: object | TFunction, propertyKey?: string | symbol | undefined, descriptor?: TypedPropertyDescriptor<Y> | undefined) => void;
@@ -1,6 +1,7 @@
1
1
  export declare const AuthenticationExtensionSymbols: {
2
2
  UserService: symbol;
3
3
  RolesService: symbol;
4
+ PermissionsService: symbol;
4
5
  UserRolesService: symbol;
5
6
  };
6
7
  export declare const AuthenticationGuardsSymbols: {
@@ -9,9 +9,11 @@ export declare class AuthenticationInitializer implements IAppInitializer {
9
9
  constructor(discover: CustomDiscoveryService, registry: AuthenticationServicesResolver);
10
10
  initialize(app: INestApplicationContext): Promise<void>;
11
11
  private registerRolesService;
12
+ private registerPermissionsService;
12
13
  private registerUsersService;
13
14
  private registerUserRolesService;
14
15
  private discoverUserService;
15
16
  private discoverRolesService;
17
+ private discoverPermissionsService;
16
18
  private discoverUserRolesService;
17
19
  }
@@ -1,12 +1,15 @@
1
- import { IAuthRole, IAuthRoleService, IAuthUser, IAuthUserRolesService, IAuthUserService } from "../abstractions";
1
+ import { IAuthPermission, IAuthPermissionService, IAuthRole, IAuthRoleService, IAuthUser, IAuthUserRolesService, IAuthUserService } from "../abstractions";
2
2
  export declare class AuthenticationServicesResolver {
3
3
  private usersService;
4
4
  private rolesService;
5
+ private permissionsService;
5
6
  private usersRolesService;
6
7
  registerUsersService(usersService: IAuthUserService<any, any, any>): void;
7
8
  registerRoleService(rolesService: IAuthRoleService<any>): void;
8
- registerUserRolesService(userRolesService: IAuthUserRolesService<any, any>): void;
9
+ registerPermissionsService(permissionsService: IAuthPermissionService<any>): void;
10
+ registerUserRolesService(userRolesService: IAuthUserRolesService<any, any, any>): void;
9
11
  getUsersService<TUser extends IAuthUser, TUserRegistrationInfo>(): IAuthUserService<TUser, any, TUserRegistrationInfo>;
10
12
  getRoleService<TRole extends IAuthRole>(): IAuthRoleService<TRole>;
11
- getUserRoleService<TUser extends IAuthUser, TRole extends IAuthRole>(): IAuthUserRolesService<TUser, TRole>;
13
+ getPermissionService<TPermission extends IAuthPermission>(): IAuthPermissionService<TPermission>;
14
+ getUserRoleService<TUser extends IAuthUser, TRole extends IAuthRole, TPermission extends IAuthPermission>(): IAuthUserRolesService<TUser, TRole, TPermission>;
12
15
  }
@@ -1,4 +1,4 @@
1
- import { IAuthRole, IAuthRoleService, IAuthService, IAuthUser, IAuthUserContext, IAuthUserRolesService, IAuthUserService } from "../../abstractions";
1
+ import { IAuthPermission, IAuthRole, IAuthRoleService, IAuthService, IAuthUser, IAuthUserContext, IAuthUserRolesService, IAuthUserService } from "../../abstractions";
2
2
  import { UserRegistrationHandler } from "../../handlers/user-register";
3
3
  import { UserDisableHandler } from "../../handlers/user-disable";
4
4
  import { UserEnableHandler } from "../../handlers/user-enable";
@@ -52,5 +52,5 @@ export declare class AuthenticationService implements IAuthService {
52
52
  userTokenVerify<TUserContext extends IAuthUserContext>(input: UserTokenVerifyInput): Promise<UserTokenVerifyResult<TUserContext>>;
53
53
  get usersService(): IAuthUserService<IAuthUser, any, unknown>;
54
54
  get rolesService(): IAuthRoleService<IAuthRole>;
55
- get userRolesService(): IAuthUserRolesService<IAuthUser, IAuthRole>;
55
+ get userRolesService(): IAuthUserRolesService<IAuthUser, IAuthRole, IAuthPermission>;
56
56
  }
package/dist/esm/index.js CHANGED
@@ -2506,6 +2506,7 @@ const CurrentUser = createParamDecorator((data, context) => {
2506
2506
  const AuthenticationExtensionSymbols = {
2507
2507
  UserService: Symbol.for("WP.EXT:AUTHENTICATION.USER_SERVICE"),
2508
2508
  RolesService: Symbol.for("WP.EXT:AUTHENTICATION.ROLES_SERVICE"),
2509
+ PermissionsService: Symbol.for("WP.EXT:AUTHENTICATION.PERMISSIONS_SERVICE"),
2509
2510
  UserRolesService: Symbol.for("WP.EXT:AUTHENTICATION.USER_ROLES_SERVICE"),
2510
2511
  };
2511
2512
  const AuthenticationGuardsSymbols = {
@@ -2523,6 +2524,8 @@ const buildRolesGuard = ({ mainRole, secondaryRoles, }, options) => Roles(mainRo
2523
2524
  ? secondaryRoles.map((role) => role.uid)
2524
2525
  : []));
2525
2526
 
2527
+ const WpPermissionsService = () => applyDecorators(Injectable(), SetMetadata(AuthenticationExtensionSymbols.PermissionsService, true));
2528
+
2526
2529
  const WpRolesService = () => applyDecorators(Injectable(), SetMetadata(AuthenticationExtensionSymbols.RolesService, true));
2527
2530
 
2528
2531
  const WpUserService = () => applyDecorators(Injectable(), SetMetadata(AuthenticationExtensionSymbols.UserService, true));
@@ -20437,6 +20440,9 @@ let AuthenticationServicesResolver = class AuthenticationServicesResolver {
20437
20440
  registerRoleService(rolesService) {
20438
20441
  this.rolesService = rolesService;
20439
20442
  }
20443
+ registerPermissionsService(permissionsService) {
20444
+ this.permissionsService = permissionsService;
20445
+ }
20440
20446
  registerUserRolesService(userRolesService) {
20441
20447
  this.usersRolesService = userRolesService;
20442
20448
  }
@@ -20452,6 +20458,12 @@ let AuthenticationServicesResolver = class AuthenticationServicesResolver {
20452
20458
  }
20453
20459
  return this.rolesService;
20454
20460
  }
20461
+ getPermissionService() {
20462
+ if (!this.permissionsService) {
20463
+ throw new Error("Permissions service is not registered");
20464
+ }
20465
+ return this.permissionsService;
20466
+ }
20455
20467
  getUserRoleService() {
20456
20468
  if (!this.usersRolesService) {
20457
20469
  throw new Error("User roles service is not registered");
@@ -21889,6 +21901,7 @@ let AuthenticationInitializer = AuthenticationInitializer_1 = class Authenticati
21889
21901
  }
21890
21902
  async initialize(app) {
21891
21903
  await this.registerRolesService();
21904
+ await this.registerPermissionsService();
21892
21905
  await this.registerUsersService();
21893
21906
  await this.registerUserRolesService();
21894
21907
  this.logger.log("Authentication initialized 🔑");
@@ -21901,6 +21914,14 @@ let AuthenticationInitializer = AuthenticationInitializer_1 = class Authenticati
21901
21914
  this.registry.registerRoleService(service.discoveredClass.instance);
21902
21915
  this.logger.log(`Authentication roles service ${service.discoveredClass.name} registered`);
21903
21916
  }
21917
+ async registerPermissionsService() {
21918
+ const service = await this.discoverPermissionsService();
21919
+ if (!service) {
21920
+ throw new Error("No roles service found");
21921
+ }
21922
+ this.registry.registerPermissionsService(service.discoveredClass.instance);
21923
+ this.logger.log(`Authentication permissions service ${service.discoveredClass.name} registered`);
21924
+ }
21904
21925
  async registerUsersService() {
21905
21926
  const service = await this.discoverUserService();
21906
21927
  if (!service) {
@@ -21923,6 +21944,9 @@ let AuthenticationInitializer = AuthenticationInitializer_1 = class Authenticati
21923
21944
  async discoverRolesService() {
21924
21945
  return await this.discover.providerWithMetaAtKey(AuthenticationExtensionSymbols.RolesService);
21925
21946
  }
21947
+ async discoverPermissionsService() {
21948
+ return await this.discover.providerWithMetaAtKey(AuthenticationExtensionSymbols.PermissionsService);
21949
+ }
21926
21950
  async discoverUserRolesService() {
21927
21951
  return await this.discover.providerWithMetaAtKey(AuthenticationExtensionSymbols.UserRolesService);
21928
21952
  }
@@ -28327,5 +28351,5 @@ InMemoryEmailProvider = __decorate([
28327
28351
  WpEmailProvider("in-memory")
28328
28352
  ], InMemoryEmailProvider);
28329
28353
 
28330
- export { AUTHENTICATION_EVENTS_NAMESPACE, AppExceptionsFilterBase, AppHashingService, AppInMemorySettings, AppSessionMiddleware, AppSessionService, AuthGuard, Authenticated, AuthenticationEmailTemplates, AuthenticationError, AuthenticationEvents, AuthenticationExtensionSymbols, AuthenticationModule, AuthenticationService, AwsBucketModule, AwsEmailModule, AwsS3BucketError as AwsS2BucketError, AwsS3BucketProvider, AwsSesEmailTemplate, BucketItemType, CurrentUser, EmailService, EntityManagerConfigurationError, EntityManagerException, EntityManagerInitializer, EntityManagerModule, EntityManagerRegistry, EntityManagerService, EntityManagerSymbols, EntityManagerUnauthorizedException, EntityNotFoundException, EntityOperationType, EntityOperationUnauthorizedException, EntitySeeder, EntitySerializationFormat, EntitySerializer, EntitySnapshotService, EntityVersionOperation, EventsService, FilesService, IEntityVersionsCursor, InMemoryBucketProvider, InMemoryEmailProvider, InvalidCredentialsError, MemberOf, MissingEntityIdError, ModulesContainerProvider, MultiTenancyModule, MultipleEntitiesFoundException, NestEntityActions, NestEntityAuthorizationMiddleware, NestEntityManager, NestEntitySerializer, NestEntitySnapshotService, NestPipelineTemplate, NestTypeOrmEntitySeeder, NestTypeOrmQueryBuilder, NestTypeOrmRepository, OperationTokenMismatchError, PLATFORM_EVENT_NAMESPACE, PipelineController, PipelineErrorType, PipelineInvocationError, PipelineStatus, PipelineStepErrorType, PipelinesBuilder, PipelinesRunner, PlatformEvents, Public, QueryBuilderBase, QueryBuilderOperation, ReplicationMode, Roles, SendgridEmailModule, SendgridEmailTemplate, SortDirection, TrackingService, UserCreationError, UserRegistrationError, WpAppInitializer, WpAwsSesEmailTemplate, WpBucketProvider, WpEmailLogger, WpEmailProvider, WpEmailTemplate, WpEntity, WpEntityActions, WpEntityAdapter, WpEntityAuthMiddleware, WpEntityConnector, WpEntityConverter, WpEntityManager, WpEntityQueryBuilder, WpEntityRepository, WpEntitySeeder, WpEntitySerializer, WpEntitySnapshotService, WpEntityVersioningProvider, WpEventsTracker, WpFileProvider, WpFileReferenceRepository, WpPipeline, WpRolesService, WpSendgridEmailTemplate, WpUserRolesService, WpUserService, buildRolesGuard, createContainer, createExpressFileResponse, getLocalizedText, newUuid, renderHandlebarsTemplate, toEntitiesImportInput };
28354
+ export { AUTHENTICATION_EVENTS_NAMESPACE, AppExceptionsFilterBase, AppHashingService, AppInMemorySettings, AppSessionMiddleware, AppSessionService, AuthGuard, Authenticated, AuthenticationEmailTemplates, AuthenticationError, AuthenticationEvents, AuthenticationExtensionSymbols, AuthenticationModule, AuthenticationService, AwsBucketModule, AwsEmailModule, AwsS3BucketError as AwsS2BucketError, AwsS3BucketProvider, AwsSesEmailTemplate, BucketItemType, CurrentUser, EmailService, EntityManagerConfigurationError, EntityManagerException, EntityManagerInitializer, EntityManagerModule, EntityManagerRegistry, EntityManagerService, EntityManagerSymbols, EntityManagerUnauthorizedException, EntityNotFoundException, EntityOperationType, EntityOperationUnauthorizedException, EntitySeeder, EntitySerializationFormat, EntitySerializer, EntitySnapshotService, EntityVersionOperation, EventsService, FilesService, IEntityVersionsCursor, InMemoryBucketProvider, InMemoryEmailProvider, InvalidCredentialsError, MemberOf, MissingEntityIdError, ModulesContainerProvider, MultiTenancyModule, MultipleEntitiesFoundException, NestEntityActions, NestEntityAuthorizationMiddleware, NestEntityManager, NestEntitySerializer, NestEntitySnapshotService, NestPipelineTemplate, NestTypeOrmEntitySeeder, NestTypeOrmQueryBuilder, NestTypeOrmRepository, OperationTokenMismatchError, PLATFORM_EVENT_NAMESPACE, PipelineController, PipelineErrorType, PipelineInvocationError, PipelineStatus, PipelineStepErrorType, PipelinesBuilder, PipelinesRunner, PlatformEvents, Public, QueryBuilderBase, QueryBuilderOperation, ReplicationMode, Roles, SendgridEmailModule, SendgridEmailTemplate, SortDirection, TrackingService, UserCreationError, UserRegistrationError, WpAppInitializer, WpAwsSesEmailTemplate, WpBucketProvider, WpEmailLogger, WpEmailProvider, WpEmailTemplate, WpEntity, WpEntityActions, WpEntityAdapter, WpEntityAuthMiddleware, WpEntityConnector, WpEntityConverter, WpEntityManager, WpEntityQueryBuilder, WpEntityRepository, WpEntitySeeder, WpEntitySerializer, WpEntitySnapshotService, WpEntityVersioningProvider, WpEventsTracker, WpFileProvider, WpFileReferenceRepository, WpPermissionsService, WpPipeline, WpRolesService, WpSendgridEmailTemplate, WpUserRolesService, WpUserService, buildRolesGuard, createContainer, createExpressFileResponse, getLocalizedText, newUuid, renderHandlebarsTemplate, toEntitiesImportInput };
28331
28355
  //# sourceMappingURL=index.js.map