@punks/backend-entity-manager 0.0.68 → 0.0.69

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.
@@ -0,0 +1,4 @@
1
+ import { AuthRolesService } from "./auth.roles.service";
2
+ import { AuthUserService } from "./auth.user.service";
3
+ import { AuthUserRolesService } from "./auth.userRoles.service";
4
+ export declare const AuthServices: (typeof AuthRolesService | typeof AuthUserService | typeof AuthUserRolesService)[];
@@ -1,4 +1,4 @@
1
- import { FindOptionsWhere } from "typeorm";
1
+ import { FindOptionsRelations, FindOptionsWhere } from "typeorm";
2
2
  import { IAuthenticationContext, EntityManagerRegistry, NestTypeOrmQueryBuilder } from "../../../../../..";
3
3
  import { RoleEntity } from "../../database/core/entities/role.entity";
4
4
  import { RoleFacets, RoleSearchParameters, RoleSorting } from "./role.models";
@@ -6,6 +6,7 @@ import { AppAuthContext } from "../../infrastructure/authentication/types";
6
6
  export declare class RoleQueryBuilder extends NestTypeOrmQueryBuilder<RoleEntity, RoleSearchParameters, RoleSorting, RoleFacets, AppAuthContext> {
7
7
  constructor(registry: EntityManagerRegistry);
8
8
  protected buildContextFilter(context?: IAuthenticationContext<AppAuthContext> | undefined): FindOptionsWhere<RoleEntity> | FindOptionsWhere<RoleEntity>[];
9
- protected buildWhereClause(request: RoleSearchParameters): FindOptionsWhere<RoleEntity> | FindOptionsWhere<RoleEntity>[];
9
+ protected buildWhereClause(request: RoleSearchParameters, context?: IAuthenticationContext<AppAuthContext> | undefined): FindOptionsWhere<RoleEntity> | FindOptionsWhere<RoleEntity>[];
10
10
  protected calculateFacets(request: RoleSearchParameters): Promise<RoleFacets | undefined>;
11
+ protected getRelationsToLoad(request: RoleSearchParameters, context?: IAuthenticationContext<AppAuthContext> | undefined): FindOptionsRelations<RoleEntity> | undefined;
11
12
  }
@@ -0,0 +1 @@
1
+ export { AuthGuard } from "./auth";
@@ -3,6 +3,7 @@ export * from "./decorators";
3
3
  export * from "./email";
4
4
  export * from "./errors";
5
5
  export * from "./events";
6
+ export * from "./guards";
6
7
  export * from "./handlers";
7
8
  export * from "./errors";
8
9
  export * from "./services";
package/dist/esm/index.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { Log, sort, byField, toDict, newUuid as newUuid$1, removeUndefinedProps } from '@punks/backend-core';
2
2
  import { applyDecorators, Injectable, SetMetadata, Global, Module, Scope, Logger, HttpStatus, HttpException } from '@nestjs/common';
3
3
  import { ApiProperty } from '@nestjs/swagger';
4
+ import { Reflector } from '@nestjs/core';
4
5
  import { AsyncLocalStorage } from 'async_hooks';
5
6
  import { hash } from 'bcrypt';
6
7
  import { PATH_METADATA } from '@nestjs/common/constants';
@@ -9,7 +10,6 @@ import { MetadataScanner } from '@nestjs/core/metadata-scanner';
9
10
  import { JwtService, JwtModule } from '@nestjs/jwt';
10
11
  import { EventEmitter2, EventEmitterModule } from '@nestjs/event-emitter';
11
12
  import { In } from 'typeorm';
12
- import { Reflector } from '@nestjs/core';
13
13
  import { SendEmailCommand, SESClient } from '@aws-sdk/client-ses';
14
14
  import require$$2 from 'fs';
15
15
  import { MailService } from '@sendgrid/mail';
@@ -367,6 +367,59 @@ const AuthenticationEvents = {
367
367
  UserPasswordResetCompleted: `${AUTHENTICATION_EVENTS_NAMESPACE}:user.passwordResetCompleted`,
368
368
  };
369
369
 
370
+ let AuthGuard = class AuthGuard {
371
+ constructor(reflector) {
372
+ this.reflector = reflector;
373
+ }
374
+ canActivate(context) {
375
+ const isPublic = this.getIsPublic(context);
376
+ if (isPublic) {
377
+ return true;
378
+ }
379
+ const auth = this.getCurrentAuth(context);
380
+ const allowedRoles = this.getAllowedRoles(context);
381
+ if (allowedRoles) {
382
+ return this.isRoleMatching(allowedRoles, auth?.roles ?? []);
383
+ }
384
+ const isForAllAuthenticated = this.getIsForAllAuthenticated(context);
385
+ if (isForAllAuthenticated) {
386
+ return !!auth?.user;
387
+ }
388
+ return false;
389
+ }
390
+ isRoleMatching(allowedRoles, userRoles) {
391
+ return userRoles.some((role) => allowedRoles.includes(role.uid));
392
+ }
393
+ getIsForAllAuthenticated(context) {
394
+ return this.getMetadata(AuthenticationGuardsSymbols.Authenticated, context);
395
+ }
396
+ getIsPublic(context) {
397
+ return this.getMetadata(AuthenticationGuardsSymbols.Public, context);
398
+ }
399
+ getAllowedRoles(context) {
400
+ return this.getMetadata(AuthenticationGuardsSymbols.Roles, context);
401
+ }
402
+ getCurrentAuth(context) {
403
+ const request = context.switchToHttp()?.getRequest();
404
+ return request?.auth?.user
405
+ ? {
406
+ user: request.auth.user,
407
+ roles: request.auth.roles,
408
+ }
409
+ : undefined;
410
+ }
411
+ getMetadata(symbol, context) {
412
+ return this.reflector.getAllAndOverride(symbol, [
413
+ context.getHandler(),
414
+ context.getClass(),
415
+ ]);
416
+ }
417
+ };
418
+ AuthGuard = __decorate([
419
+ Injectable(),
420
+ __metadata("design:paramtypes", [Reflector])
421
+ ], AuthGuard);
422
+
370
423
  const asyncLocalStorage = new AsyncLocalStorage();
371
424
 
372
425
  let AppSessionService = class AppSessionService {
@@ -20051,6 +20104,7 @@ const ModuleData$2 = {
20051
20104
  providers: [
20052
20105
  AuthenticationServicesResolver,
20053
20106
  AuthenticationInitializer,
20107
+ AuthGuard,
20054
20108
  ...Services$2,
20055
20109
  ...UserHandlers,
20056
20110
  ...AuthenticationProviders,
@@ -25590,5 +25644,5 @@ SendgridEmailModule = SendgridEmailModule_1 = __decorate([
25590
25644
  })
25591
25645
  ], SendgridEmailModule);
25592
25646
 
25593
- export { AUTHENTICATION_EVENTS_NAMESPACE, AppExceptionsFilterBase, AppHashingService, AppInMemorySettings, AppSessionMiddleware, AppSessionService, Authenticated, AuthenticationEmailTemplates, AuthenticationError, AuthenticationEvents, AuthenticationExtensionSymbols, AuthenticationModule, AuthenticationService, AwsEmailModule, AwsSesEmailTemplate, BooleanFacet, BooleanFacetItem, EmailService, EntityManagerConfigurationError, EntityManagerException, EntityManagerInitializer, EntityManagerModule, EntityManagerRegistry, EntityManagerService, EntityManagerSymbols, EntityManagerUnauthorizedException, EntityNotFoundException, EntityOperationType, EntityOperationUnauthorizedException, EntitySeeder, EventsService, InvalidCredentialsError, MemberOf, ModulesContainerProvider, MultiTenancyModule, MultipleEntitiesFoundException, NestEntityActions, NestEntityAuthorizationMiddleware, NestEntityManager, NestTypeOrmEntitySeeder, NestTypeOrmQueryBuilder, NestTypeOrmRepository, NumericFacet, NumericFacetItem, OperationTokenMismatchError, PLATFORM_EVENT_NAMESPACE, PlatformEvents, Public, QueryBuilderBase, ReplicationMode, Roles, SendgridEmailModule, SendgridEmailTemplate, SortDirection, StringFacet, StringFacetItem, TrackingService, UserRegistrationError, WpAppInitializer, WpAwsSesEmailTemplate, WpEmailTemplate, WpEntity, WpEntityActions, WpEntityAdapter, WpEntityAuthMiddleware, WpEntityConnector, WpEntityConverter, WpEntityManager, WpEntityQueryBuilder, WpEntityRepository, WpEntitySeeder, WpEventsTracker, WpRolesService, WpSendgridEmailTemplate, WpUserRolesService, WpUserService, getLocalizedText, newUuid, renderHandlebarsTemplate };
25647
+ export { AUTHENTICATION_EVENTS_NAMESPACE, AppExceptionsFilterBase, AppHashingService, AppInMemorySettings, AppSessionMiddleware, AppSessionService, AuthGuard, Authenticated, AuthenticationEmailTemplates, AuthenticationError, AuthenticationEvents, AuthenticationExtensionSymbols, AuthenticationModule, AuthenticationService, AwsEmailModule, AwsSesEmailTemplate, BooleanFacet, BooleanFacetItem, EmailService, EntityManagerConfigurationError, EntityManagerException, EntityManagerInitializer, EntityManagerModule, EntityManagerRegistry, EntityManagerService, EntityManagerSymbols, EntityManagerUnauthorizedException, EntityNotFoundException, EntityOperationType, EntityOperationUnauthorizedException, EntitySeeder, EventsService, InvalidCredentialsError, MemberOf, ModulesContainerProvider, MultiTenancyModule, MultipleEntitiesFoundException, NestEntityActions, NestEntityAuthorizationMiddleware, NestEntityManager, NestTypeOrmEntitySeeder, NestTypeOrmQueryBuilder, NestTypeOrmRepository, NumericFacet, NumericFacetItem, OperationTokenMismatchError, PLATFORM_EVENT_NAMESPACE, PlatformEvents, Public, QueryBuilderBase, ReplicationMode, Roles, SendgridEmailModule, SendgridEmailTemplate, SortDirection, StringFacet, StringFacetItem, TrackingService, UserRegistrationError, WpAppInitializer, WpAwsSesEmailTemplate, WpEmailTemplate, WpEntity, WpEntityActions, WpEntityAdapter, WpEntityAuthMiddleware, WpEntityConnector, WpEntityConverter, WpEntityManager, WpEntityQueryBuilder, WpEntityRepository, WpEntitySeeder, WpEventsTracker, WpRolesService, WpSendgridEmailTemplate, WpUserRolesService, WpUserService, getLocalizedText, newUuid, renderHandlebarsTemplate };
25594
25648
  //# sourceMappingURL=index.js.map