@punks/backend-entity-manager 0.0.68 → 0.0.70

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
- import { applyDecorators, Injectable, SetMetadata, Global, Module, Scope, Logger, HttpStatus, HttpException } from '@nestjs/common';
2
+ import { applyDecorators, Injectable, SetMetadata, Global, Module, Scope, Logger, HttpException, HttpStatus } 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,
@@ -20341,6 +20395,9 @@ class NestTypeOrmEntitySeeder extends TypeOrmEntitySeeder {
20341
20395
 
20342
20396
  class AppExceptionsFilterBase {
20343
20397
  catch(exception, host) {
20398
+ if (exception instanceof HttpException) {
20399
+ return;
20400
+ }
20344
20401
  const ctx = host.switchToHttp();
20345
20402
  const response = ctx.getResponse();
20346
20403
  const request = ctx.getRequest();
@@ -25590,5 +25647,5 @@ SendgridEmailModule = SendgridEmailModule_1 = __decorate([
25590
25647
  })
25591
25648
  ], SendgridEmailModule);
25592
25649
 
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 };
25650
+ 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
25651
  //# sourceMappingURL=index.js.map