@flusys/nestjs-auth 1.1.0-beta → 2.0.0
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.
- package/README.md +590 -473
- package/cjs/config/auth.constants.js +8 -0
- package/cjs/controllers/authentication.controller.js +218 -39
- package/cjs/controllers/branch.controller.js +44 -1
- package/cjs/controllers/company-selection.controller.js +27 -20
- package/cjs/controllers/company.controller.js +44 -1
- package/cjs/controllers/user-permission.controller.js +82 -154
- package/cjs/controllers/user.controller.js +68 -15
- package/cjs/docs/auth-swagger.config.js +14 -7
- package/cjs/dtos/authentication.dto.js +16 -43
- package/cjs/dtos/index.js +0 -1
- package/cjs/dtos/user-permission.dto.js +28 -0
- package/cjs/dtos/user.dto.js +19 -4
- package/cjs/entities/user-company-permission.entity.js +0 -6
- package/cjs/interceptors/clear-token.interceptor.js +10 -23
- package/cjs/interceptors/set-token.interceptor.js +15 -55
- package/cjs/interfaces/auth-email-provider.interface.js +1 -1
- package/cjs/modules/auth.module.js +63 -147
- package/cjs/services/auth-config.service.js +22 -28
- package/cjs/services/auth-datasource.provider.js +9 -21
- package/cjs/services/auth-email.service.js +89 -85
- package/cjs/services/authentication.service.js +225 -396
- package/cjs/services/branch.service.js +9 -4
- package/cjs/services/company-selection-session.service.js +1 -1
- package/cjs/services/user-permission.service.js +43 -73
- package/cjs/services/user.service.js +78 -64
- package/cjs/strategies/jwt.strategy.js +44 -44
- package/cjs/validators/password.validator.js +45 -0
- package/config/auth.constants.d.ts +2 -0
- package/controllers/authentication.controller.d.ts +5 -3
- package/controllers/company-selection.controller.d.ts +6 -2
- package/controllers/user-permission.controller.d.ts +5 -4
- package/controllers/user.controller.d.ts +6 -0
- package/dtos/authentication.dto.d.ts +0 -4
- package/dtos/company-branch.dto.d.ts +0 -1
- package/dtos/company.dto.d.ts +0 -1
- package/dtos/index.d.ts +0 -1
- package/dtos/user-permission.dto.d.ts +4 -0
- package/dtos/user.dto.d.ts +1 -3
- package/entities/index.d.ts +3 -3
- package/entities/user-company-permission.entity.d.ts +0 -2
- package/fesm/config/auth.constants.js +6 -13
- package/fesm/controllers/authentication.controller.js +221 -42
- package/fesm/controllers/branch.controller.js +45 -2
- package/fesm/controllers/company-selection.controller.js +28 -21
- package/fesm/controllers/company.controller.js +45 -2
- package/fesm/controllers/user-permission.controller.js +84 -156
- package/fesm/controllers/user.controller.js +71 -18
- package/fesm/docs/auth-swagger.config.js +14 -7
- package/fesm/dtos/authentication.dto.js +17 -44
- package/fesm/dtos/index.js +0 -1
- package/fesm/dtos/user-permission.dto.js +28 -0
- package/fesm/dtos/user.dto.js +20 -5
- package/fesm/entities/user-company-permission.entity.js +0 -6
- package/fesm/interceptors/clear-token.interceptor.js +9 -22
- package/fesm/interceptors/set-token.interceptor.js +14 -54
- package/fesm/interfaces/auth-email-provider.interface.js +1 -1
- package/fesm/modules/auth.module.js +64 -148
- package/fesm/services/auth-config.service.js +23 -29
- package/fesm/services/auth-datasource.provider.js +10 -22
- package/fesm/services/auth-email.service.js +90 -86
- package/fesm/services/authentication.service.js +225 -396
- package/fesm/services/branch.service.js +9 -4
- package/fesm/services/company-selection-session.service.js +1 -1
- package/fesm/services/user-permission.service.js +44 -74
- package/fesm/services/user.service.js +79 -65
- package/fesm/strategies/jwt.strategy.js +44 -44
- package/fesm/validators/password.validator.js +48 -0
- package/interceptors/clear-token.interceptor.d.ts +0 -1
- package/interceptors/set-token.interceptor.d.ts +1 -1
- package/interfaces/authentication.interface.d.ts +0 -4
- package/interfaces/user-enricher.interface.d.ts +1 -4
- package/modules/auth.module.d.ts +6 -3
- package/package.json +4 -4
- package/services/auth-config.service.d.ts +6 -8
- package/services/auth-datasource.provider.d.ts +2 -4
- package/services/auth-email.service.d.ts +8 -4
- package/services/authentication.service.d.ts +15 -16
- package/services/company-selection-session.service.d.ts +1 -1
- package/services/user-permission.service.d.ts +6 -9
- package/services/user.service.d.ts +3 -0
- package/strategies/jwt.strategy.d.ts +4 -1
- package/validators/password.validator.d.ts +10 -0
- package/cjs/dtos/user-company-permission.dto.js +0 -110
- package/dtos/user-company-permission.dto.d.ts +0 -10
- package/fesm/dtos/user-company-permission.dto.js +0 -98
package/modules/auth.module.d.ts
CHANGED
|
@@ -2,9 +2,12 @@ import { DynamicModule } from '@nestjs/common';
|
|
|
2
2
|
import { AuthModuleAsyncOptions, AuthModuleOptions } from '../interfaces/auth-module-options.interface';
|
|
3
3
|
export declare class AuthModule {
|
|
4
4
|
static forRoot(options: AuthModuleOptions): DynamicModule;
|
|
5
|
-
static forRootAsync(
|
|
6
|
-
private static
|
|
5
|
+
static forRootAsync(options: AuthModuleAsyncOptions): DynamicModule;
|
|
6
|
+
private static buildModule;
|
|
7
|
+
private static buildImports;
|
|
8
|
+
private static buildControllers;
|
|
9
|
+
private static buildProviders;
|
|
10
|
+
private static buildExports;
|
|
7
11
|
private static createAsyncProviders;
|
|
8
|
-
private static getRepositoryProviders;
|
|
9
12
|
static getEntities(enableCompanyFeature?: boolean): any[];
|
|
10
13
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flusys/nestjs-auth",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"description": "Authentication and authorization infrastructure for NestJS applications",
|
|
5
5
|
"main": "cjs/index.js",
|
|
6
6
|
"module": "fesm/index.js",
|
|
@@ -84,14 +84,14 @@
|
|
|
84
84
|
"bcrypt": "^5.0.0 || ^6.0.0",
|
|
85
85
|
"class-transformer": "^0.5.0",
|
|
86
86
|
"class-validator": "^0.14.0",
|
|
87
|
-
"nodemailer": "^
|
|
87
|
+
"nodemailer": "^7.0.0",
|
|
88
88
|
"passport": "^0.7.0",
|
|
89
89
|
"passport-jwt": "^4.0.0",
|
|
90
90
|
"passport-local": "^1.0.0",
|
|
91
91
|
"typeorm": "^0.3.0"
|
|
92
92
|
},
|
|
93
93
|
"dependencies": {
|
|
94
|
-
"@flusys/nestjs-core": "
|
|
95
|
-
"@flusys/nestjs-shared": "
|
|
94
|
+
"@flusys/nestjs-core": "2.0.0",
|
|
95
|
+
"@flusys/nestjs-shared": "2.0.0"
|
|
96
96
|
}
|
|
97
97
|
}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
import { DatabaseMode
|
|
2
|
-
import {
|
|
3
|
-
|
|
1
|
+
import { DatabaseMode } from '@flusys/nestjs-core';
|
|
2
|
+
import { IModuleConfigService } from '@flusys/nestjs-shared/interfaces';
|
|
3
|
+
import { AuthModuleOptions } from '../interfaces/auth-module-options.interface';
|
|
4
|
+
export declare class AuthConfigService implements IModuleConfigService {
|
|
5
|
+
private readonly logger;
|
|
4
6
|
private readonly options;
|
|
5
7
|
private readonly config;
|
|
8
|
+
private refreshTokenSecretWarned;
|
|
6
9
|
constructor(injectedOptions?: AuthModuleOptions);
|
|
7
10
|
getDatabaseMode(): DatabaseMode;
|
|
8
11
|
isMultiTenant(): boolean;
|
|
@@ -13,9 +16,4 @@ export declare class AuthConfigService {
|
|
|
13
16
|
getRefreshTokenExpiration(): string;
|
|
14
17
|
getRefreshTokenCookieName(): string;
|
|
15
18
|
getFrontendUrl(): string | undefined;
|
|
16
|
-
getDefaultDatabaseConfig(): IDatabaseConfig | undefined;
|
|
17
|
-
getTenantDefaultDatabaseConfig(): IDatabaseConfig | undefined;
|
|
18
|
-
getTenants(): ITenantDatabaseConfig[];
|
|
19
|
-
getOptions(): AuthModuleOptions;
|
|
20
|
-
getConfig(): IAuthModuleConfig;
|
|
21
19
|
}
|
|
@@ -17,9 +17,7 @@ export declare class AuthDataSourceProvider extends MultiTenantDataSourceService
|
|
|
17
17
|
protected getSingleDataSource(): Promise<DataSource>;
|
|
18
18
|
protected getOrCreateTenantConnection(tenant: ITenantDatabaseConfig): Promise<DataSource>;
|
|
19
19
|
private static buildParentOptions;
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
getEnableCompanyFeatureForCurrentTenant(): boolean;
|
|
23
|
-
getAuthEntities(enableCompanyFeature?: boolean): Promise<any[]>;
|
|
20
|
+
isCompanyFeatureEnabled(tenant?: ITenantDatabaseConfig): boolean;
|
|
21
|
+
getAuthEntities(): Promise<any[]>;
|
|
24
22
|
protected createDataSourceFromConfig(config: IDatabaseConfig): Promise<DataSource>;
|
|
25
23
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { AuthDataSourceProvider } from './auth-datasource.provider';
|
|
2
1
|
import { PendingRegistration } from '../entities/pending-registration.entity';
|
|
3
2
|
import { IAuthEmailProvider } from '../interfaces';
|
|
3
|
+
import { AuthDataSourceProvider } from './auth-datasource.provider';
|
|
4
4
|
export declare class AuthEmailService {
|
|
5
5
|
private readonly dataSourceProvider?;
|
|
6
6
|
private readonly emailProvider?;
|
|
@@ -8,11 +8,15 @@ export declare class AuthEmailService {
|
|
|
8
8
|
private readonly PASSWORD_RESET_EXPIRY;
|
|
9
9
|
private readonly EMAIL_VERIFICATION_EXPIRY;
|
|
10
10
|
constructor(dataSourceProvider?: AuthDataSourceProvider, emailProvider?: IAuthEmailProvider);
|
|
11
|
-
private getUserRepository;
|
|
12
|
-
private getUserTokenRepository;
|
|
13
|
-
private getPendingRegistrationRepository;
|
|
14
11
|
isEmailEnabled(): boolean;
|
|
12
|
+
private getRepository;
|
|
15
13
|
private generateToken;
|
|
14
|
+
private hashToken;
|
|
15
|
+
private getErrorMessage;
|
|
16
|
+
private assertEmailEnabled;
|
|
17
|
+
private sendVerificationEmailSafe;
|
|
18
|
+
private validateTokenNotExpiredOrUsed;
|
|
19
|
+
hasPendingRegistration(email: string): Promise<boolean>;
|
|
16
20
|
createPendingRegistration(data: {
|
|
17
21
|
email: string;
|
|
18
22
|
name?: string;
|
|
@@ -1,16 +1,13 @@
|
|
|
1
|
+
import { HybridCache } from '@flusys/nestjs-shared/classes';
|
|
1
2
|
import { JwtService } from '@nestjs/jwt';
|
|
2
|
-
import { Repository } from 'typeorm';
|
|
3
|
-
import { AuthConfigService } from './auth-config.service';
|
|
4
|
-
import { AuthDataSourceProvider } from './auth-datasource.provider';
|
|
5
3
|
import { RegistrationDto } from '../dtos/authentication.dto';
|
|
6
|
-
import { HybridCache } from '@flusys/nestjs-shared/classes';
|
|
7
|
-
import { LoginResponse, LoginResponseRequiresEmailVerification, LoginResponseRequiresSelection, MeResponse, RegistrationResponse } from '../interfaces/authentication.interface';
|
|
8
|
-
import { AuthEmailService } from './auth-email.service';
|
|
9
4
|
import { CompanyBranch } from '../entities/company-branch.entity';
|
|
10
5
|
import { Company } from '../entities/company.entity';
|
|
11
6
|
import { PendingRegistration } from '../entities/pending-registration.entity';
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
7
|
+
import { LoginResponse, LoginResponseRequiresEmailVerification, LoginResponseRequiresSelection, MeResponse, RegistrationResponse } from '../interfaces/authentication.interface';
|
|
8
|
+
import { AuthConfigService } from './auth-config.service';
|
|
9
|
+
import { AuthDataSourceProvider } from './auth-datasource.provider';
|
|
10
|
+
import { AuthEmailService } from './auth-email.service';
|
|
14
11
|
import { CompanySelectionSessionService } from './company-selection-session.service';
|
|
15
12
|
export declare class AuthenticationService {
|
|
16
13
|
private readonly jwtService;
|
|
@@ -19,12 +16,9 @@ export declare class AuthenticationService {
|
|
|
19
16
|
private readonly dataSourceProvider?;
|
|
20
17
|
private readonly sessionService?;
|
|
21
18
|
private readonly authEmailService?;
|
|
22
|
-
private readonly injectedUserRepository?;
|
|
23
|
-
private readonly injectedPermissionRepository?;
|
|
24
|
-
private readonly injectedCompanyRepository?;
|
|
25
|
-
private readonly injectedBranchRepository?;
|
|
26
19
|
private readonly logger;
|
|
27
|
-
constructor(jwtService: JwtService, authConfig: AuthConfigService, cacheManager?: HybridCache, dataSourceProvider?: AuthDataSourceProvider, sessionService?: CompanySelectionSessionService, authEmailService?: AuthEmailService
|
|
20
|
+
constructor(jwtService: JwtService, authConfig: AuthConfigService, cacheManager?: HybridCache, dataSourceProvider?: AuthDataSourceProvider, sessionService?: CompanySelectionSessionService, authEmailService?: AuthEmailService);
|
|
21
|
+
private isCompanyFeatureEnabled;
|
|
28
22
|
private getUserRepository;
|
|
29
23
|
private getPermissionRepository;
|
|
30
24
|
private getCompanyRepository;
|
|
@@ -35,14 +29,15 @@ export declare class AuthenticationService {
|
|
|
35
29
|
requiresEmailVerification: true;
|
|
36
30
|
message: string;
|
|
37
31
|
}>;
|
|
32
|
+
private handleExistingUserCompanyRegistration;
|
|
38
33
|
private createUserDirectly;
|
|
39
34
|
createUserFromPendingRegistration(pending: PendingRegistration): Promise<RegistrationResponse>;
|
|
40
|
-
private handleCompanyRegistrationFromPending;
|
|
41
|
-
private handleCompanyRegistration;
|
|
42
35
|
private processCompanyRegistration;
|
|
43
|
-
private
|
|
36
|
+
private findOrCreateCompanyAndBranch;
|
|
37
|
+
private assignUserPermissions;
|
|
44
38
|
select(sessionId: string, companyId: string, branchId: string): Promise<LoginResponse>;
|
|
45
39
|
switchCompany(userId: string, companyId: string, branchId: string): Promise<LoginResponse>;
|
|
40
|
+
private validateAndLoginWithCompany;
|
|
46
41
|
refreshToken(refreshToken: string): Promise<{
|
|
47
42
|
accessToken: string;
|
|
48
43
|
refreshToken: string;
|
|
@@ -58,6 +53,10 @@ export declare class AuthenticationService {
|
|
|
58
53
|
getUserInfo(userId: string, companyId?: string, branchId?: string): Promise<MeResponse>;
|
|
59
54
|
private ensureCompanyFeatureEnabled;
|
|
60
55
|
private validateUser;
|
|
56
|
+
private toUserInfo;
|
|
57
|
+
private toCompanyInfo;
|
|
58
|
+
private toBranchInfo;
|
|
59
|
+
private generateTokens;
|
|
61
60
|
private generateLoginResponse;
|
|
62
61
|
private generateLoginResponseWithCompany;
|
|
63
62
|
private generateCompanySelectionResponse;
|
|
@@ -8,7 +8,7 @@ interface StoredSession {
|
|
|
8
8
|
export declare class CompanySelectionSessionService {
|
|
9
9
|
protected cacheManager: HybridCache;
|
|
10
10
|
constructor(cacheManager: HybridCache);
|
|
11
|
-
createSession(userId: string
|
|
11
|
+
createSession(userId: string): Promise<string>;
|
|
12
12
|
getSession(sessionId: string): Promise<StoredSession | null>;
|
|
13
13
|
consumeSession(sessionId: string): Promise<StoredSession | null>;
|
|
14
14
|
deleteSession(sessionId: string): Promise<void>;
|
|
@@ -1,16 +1,13 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { UserCompanyPermission } from '../entities/user-company-permission.entity';
|
|
1
|
+
import { PermissionType, UserCompanyPermission } from '../entities/user-company-permission.entity';
|
|
3
2
|
import { AuthDataSourceProvider } from './auth-datasource.provider';
|
|
4
3
|
export declare class UserPermissionService {
|
|
5
4
|
private readonly dataSourceProvider;
|
|
6
|
-
private readonly logger;
|
|
7
5
|
private _repository;
|
|
8
6
|
constructor(dataSourceProvider: AuthDataSourceProvider);
|
|
9
7
|
private getRepository;
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
revokeBranchAccess(userId: string, branchId: string): Promise<void>;
|
|
8
|
+
findUserPermissions(userId: string, type: PermissionType): Promise<UserCompanyPermission[]>;
|
|
9
|
+
assignPermission(userId: string, targetId: string, type: PermissionType, metadata?: Record<string, any>): Promise<void>;
|
|
10
|
+
revokePermission(userId: string, targetId: string, type: PermissionType): Promise<void>;
|
|
11
|
+
findUserCompanies: (userId: string) => Promise<UserCompanyPermission[]>;
|
|
12
|
+
findUserBranches(userId: string, companyId?: string): Promise<UserCompanyPermission[]>;
|
|
16
13
|
}
|
|
@@ -20,11 +20,14 @@ export declare class UserService extends RequestScopedApiService<CreateUserDto,
|
|
|
20
20
|
protected resolveEntity(): EntityTarget<User>;
|
|
21
21
|
protected getDataSourceProvider(): AuthDataSourceProvider;
|
|
22
22
|
protected ensureRepositoryInitialized(): Promise<void>;
|
|
23
|
+
private getUserForProfile;
|
|
23
24
|
verifyEmail(id: string): Promise<void>;
|
|
24
25
|
verifyPhone(id: string): Promise<void>;
|
|
25
26
|
updateStatus(id: string, isActive: boolean, user?: ILoggedUserInfo | null): Promise<void>;
|
|
26
27
|
protected convertSingleDtoToEntity(dto: CreateUserDto | UpdateUserDto, user: ILoggedUserInfo | null): Promise<User>;
|
|
27
28
|
protected convertEntityToResponseDto(entity: User, isRaw: boolean): IUser;
|
|
29
|
+
private convertRawToResponseDto;
|
|
30
|
+
private convertEntityToDto;
|
|
28
31
|
protected convertEntityListToResponseListDto(entities: User[], isRaw: boolean): IUser[];
|
|
29
32
|
protected getGlobalSearchQuery(query: any, search: string, _user: any): Promise<{
|
|
30
33
|
query: any;
|
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
import { ILoggedUserInfo } from '@flusys/nestjs-shared/interfaces';
|
|
2
2
|
import { ModuleRef } from '@nestjs/core';
|
|
3
3
|
import { Request } from 'express';
|
|
4
|
-
import { AuthConfigService } from '../services/auth-config.service';
|
|
5
4
|
import { TokenPayload, TokenPayloadWithCompany } from '../interfaces/authentication.interface';
|
|
5
|
+
import { AuthConfigService } from '../services/auth-config.service';
|
|
6
6
|
declare const JwtStrategy_base: new (...args: any) => any;
|
|
7
7
|
export declare class JwtStrategy extends JwtStrategy_base {
|
|
8
8
|
private readonly authConfig;
|
|
9
9
|
private readonly moduleRef;
|
|
10
10
|
constructor(authConfig: AuthConfigService, moduleRef: ModuleRef);
|
|
11
11
|
validate(_req: Request, payload: TokenPayload | TokenPayloadWithCompany): Promise<ILoggedUserInfo>;
|
|
12
|
+
private resolveUserRepository;
|
|
13
|
+
private checkTokenRevocation;
|
|
14
|
+
private buildUserInfo;
|
|
12
15
|
}
|
|
13
16
|
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ValidationOptions } from 'class-validator';
|
|
2
|
+
export interface PasswordComplexityOptions {
|
|
3
|
+
minLength?: number;
|
|
4
|
+
maxLength?: number;
|
|
5
|
+
requireUppercase?: boolean;
|
|
6
|
+
requireLowercase?: boolean;
|
|
7
|
+
requireNumber?: boolean;
|
|
8
|
+
requireSpecialChar?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export declare function IsStrongPassword(options?: PasswordComplexityOptions, validationOptions?: ValidationOptions): (object: object, propertyName: string) => void;
|
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
function _export(target, all) {
|
|
6
|
-
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
-
enumerable: true,
|
|
8
|
-
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
9
|
-
});
|
|
10
|
-
}
|
|
11
|
-
_export(exports, {
|
|
12
|
-
get AssignBranchPermissionDto () {
|
|
13
|
-
return AssignBranchPermissionDto;
|
|
14
|
-
},
|
|
15
|
-
get AssignCompanyPermissionDto () {
|
|
16
|
-
return AssignCompanyPermissionDto;
|
|
17
|
-
}
|
|
18
|
-
});
|
|
19
|
-
const _swagger = require("@nestjs/swagger");
|
|
20
|
-
const _classvalidator = require("class-validator");
|
|
21
|
-
function _define_property(obj, key, value) {
|
|
22
|
-
if (key in obj) {
|
|
23
|
-
Object.defineProperty(obj, key, {
|
|
24
|
-
value: value,
|
|
25
|
-
enumerable: true,
|
|
26
|
-
configurable: true,
|
|
27
|
-
writable: true
|
|
28
|
-
});
|
|
29
|
-
} else {
|
|
30
|
-
obj[key] = value;
|
|
31
|
-
}
|
|
32
|
-
return obj;
|
|
33
|
-
}
|
|
34
|
-
function _ts_decorate(decorators, target, key, desc) {
|
|
35
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
36
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
37
|
-
else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
38
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
39
|
-
}
|
|
40
|
-
function _ts_metadata(k, v) {
|
|
41
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
42
|
-
}
|
|
43
|
-
let AssignCompanyPermissionDto = class AssignCompanyPermissionDto {
|
|
44
|
-
constructor(){
|
|
45
|
-
_define_property(this, "userId", void 0);
|
|
46
|
-
_define_property(this, "companyId", void 0);
|
|
47
|
-
_define_property(this, "metadata", void 0);
|
|
48
|
-
}
|
|
49
|
-
};
|
|
50
|
-
_ts_decorate([
|
|
51
|
-
(0, _swagger.ApiProperty)({
|
|
52
|
-
example: '550e8400-e29b-41d4-a716-446655440000',
|
|
53
|
-
description: 'User ID to assign company access to'
|
|
54
|
-
}),
|
|
55
|
-
(0, _classvalidator.IsUUID)(),
|
|
56
|
-
_ts_metadata("design:type", String)
|
|
57
|
-
], AssignCompanyPermissionDto.prototype, "userId", void 0);
|
|
58
|
-
_ts_decorate([
|
|
59
|
-
(0, _swagger.ApiProperty)({
|
|
60
|
-
example: '550e8400-e29b-41d4-a716-446655440001',
|
|
61
|
-
description: 'Company ID to grant access to'
|
|
62
|
-
}),
|
|
63
|
-
(0, _classvalidator.IsUUID)(),
|
|
64
|
-
_ts_metadata("design:type", String)
|
|
65
|
-
], AssignCompanyPermissionDto.prototype, "companyId", void 0);
|
|
66
|
-
_ts_decorate([
|
|
67
|
-
(0, _swagger.ApiPropertyOptional)({
|
|
68
|
-
example: {
|
|
69
|
-
role: 'member'
|
|
70
|
-
},
|
|
71
|
-
description: 'Additional permission metadata'
|
|
72
|
-
}),
|
|
73
|
-
(0, _classvalidator.IsOptional)(),
|
|
74
|
-
(0, _classvalidator.IsObject)(),
|
|
75
|
-
_ts_metadata("design:type", typeof Record === "undefined" ? Object : Record)
|
|
76
|
-
], AssignCompanyPermissionDto.prototype, "metadata", void 0);
|
|
77
|
-
let AssignBranchPermissionDto = class AssignBranchPermissionDto {
|
|
78
|
-
constructor(){
|
|
79
|
-
_define_property(this, "userId", void 0);
|
|
80
|
-
_define_property(this, "branchId", void 0);
|
|
81
|
-
_define_property(this, "metadata", void 0);
|
|
82
|
-
}
|
|
83
|
-
};
|
|
84
|
-
_ts_decorate([
|
|
85
|
-
(0, _swagger.ApiProperty)({
|
|
86
|
-
example: '550e8400-e29b-41d4-a716-446655440000',
|
|
87
|
-
description: 'User ID to assign branch access to'
|
|
88
|
-
}),
|
|
89
|
-
(0, _classvalidator.IsUUID)(),
|
|
90
|
-
_ts_metadata("design:type", String)
|
|
91
|
-
], AssignBranchPermissionDto.prototype, "userId", void 0);
|
|
92
|
-
_ts_decorate([
|
|
93
|
-
(0, _swagger.ApiProperty)({
|
|
94
|
-
example: '550e8400-e29b-41d4-a716-446655440002',
|
|
95
|
-
description: 'Branch ID to grant access to'
|
|
96
|
-
}),
|
|
97
|
-
(0, _classvalidator.IsUUID)(),
|
|
98
|
-
_ts_metadata("design:type", String)
|
|
99
|
-
], AssignBranchPermissionDto.prototype, "branchId", void 0);
|
|
100
|
-
_ts_decorate([
|
|
101
|
-
(0, _swagger.ApiPropertyOptional)({
|
|
102
|
-
example: {
|
|
103
|
-
role: 'staff'
|
|
104
|
-
},
|
|
105
|
-
description: 'Additional permission metadata'
|
|
106
|
-
}),
|
|
107
|
-
(0, _classvalidator.IsOptional)(),
|
|
108
|
-
(0, _classvalidator.IsObject)(),
|
|
109
|
-
_ts_metadata("design:type", typeof Record === "undefined" ? Object : Record)
|
|
110
|
-
], AssignBranchPermissionDto.prototype, "metadata", void 0);
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
function _define_property(obj, key, value) {
|
|
2
|
-
if (key in obj) {
|
|
3
|
-
Object.defineProperty(obj, key, {
|
|
4
|
-
value: value,
|
|
5
|
-
enumerable: true,
|
|
6
|
-
configurable: true,
|
|
7
|
-
writable: true
|
|
8
|
-
});
|
|
9
|
-
} else {
|
|
10
|
-
obj[key] = value;
|
|
11
|
-
}
|
|
12
|
-
return obj;
|
|
13
|
-
}
|
|
14
|
-
function _ts_decorate(decorators, target, key, desc) {
|
|
15
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
16
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
17
|
-
else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
18
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
19
|
-
}
|
|
20
|
-
function _ts_metadata(k, v) {
|
|
21
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
22
|
-
}
|
|
23
|
-
import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
|
|
24
|
-
import { IsObject, IsOptional, IsUUID } from 'class-validator';
|
|
25
|
-
/**
|
|
26
|
-
* Assign Company Permission DTO
|
|
27
|
-
* Used internally by UserPermissionService
|
|
28
|
-
*/ export class AssignCompanyPermissionDto {
|
|
29
|
-
constructor(){
|
|
30
|
-
_define_property(this, "userId", void 0);
|
|
31
|
-
_define_property(this, "companyId", void 0);
|
|
32
|
-
_define_property(this, "metadata", void 0);
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
_ts_decorate([
|
|
36
|
-
ApiProperty({
|
|
37
|
-
example: '550e8400-e29b-41d4-a716-446655440000',
|
|
38
|
-
description: 'User ID to assign company access to'
|
|
39
|
-
}),
|
|
40
|
-
IsUUID(),
|
|
41
|
-
_ts_metadata("design:type", String)
|
|
42
|
-
], AssignCompanyPermissionDto.prototype, "userId", void 0);
|
|
43
|
-
_ts_decorate([
|
|
44
|
-
ApiProperty({
|
|
45
|
-
example: '550e8400-e29b-41d4-a716-446655440001',
|
|
46
|
-
description: 'Company ID to grant access to'
|
|
47
|
-
}),
|
|
48
|
-
IsUUID(),
|
|
49
|
-
_ts_metadata("design:type", String)
|
|
50
|
-
], AssignCompanyPermissionDto.prototype, "companyId", void 0);
|
|
51
|
-
_ts_decorate([
|
|
52
|
-
ApiPropertyOptional({
|
|
53
|
-
example: {
|
|
54
|
-
role: 'member'
|
|
55
|
-
},
|
|
56
|
-
description: 'Additional permission metadata'
|
|
57
|
-
}),
|
|
58
|
-
IsOptional(),
|
|
59
|
-
IsObject(),
|
|
60
|
-
_ts_metadata("design:type", typeof Record === "undefined" ? Object : Record)
|
|
61
|
-
], AssignCompanyPermissionDto.prototype, "metadata", void 0);
|
|
62
|
-
/**
|
|
63
|
-
* Assign Branch Permission DTO
|
|
64
|
-
* Used internally by UserPermissionService
|
|
65
|
-
*/ export class AssignBranchPermissionDto {
|
|
66
|
-
constructor(){
|
|
67
|
-
_define_property(this, "userId", void 0);
|
|
68
|
-
_define_property(this, "branchId", void 0);
|
|
69
|
-
_define_property(this, "metadata", void 0);
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
_ts_decorate([
|
|
73
|
-
ApiProperty({
|
|
74
|
-
example: '550e8400-e29b-41d4-a716-446655440000',
|
|
75
|
-
description: 'User ID to assign branch access to'
|
|
76
|
-
}),
|
|
77
|
-
IsUUID(),
|
|
78
|
-
_ts_metadata("design:type", String)
|
|
79
|
-
], AssignBranchPermissionDto.prototype, "userId", void 0);
|
|
80
|
-
_ts_decorate([
|
|
81
|
-
ApiProperty({
|
|
82
|
-
example: '550e8400-e29b-41d4-a716-446655440002',
|
|
83
|
-
description: 'Branch ID to grant access to'
|
|
84
|
-
}),
|
|
85
|
-
IsUUID(),
|
|
86
|
-
_ts_metadata("design:type", String)
|
|
87
|
-
], AssignBranchPermissionDto.prototype, "branchId", void 0);
|
|
88
|
-
_ts_decorate([
|
|
89
|
-
ApiPropertyOptional({
|
|
90
|
-
example: {
|
|
91
|
-
role: 'staff'
|
|
92
|
-
},
|
|
93
|
-
description: 'Additional permission metadata'
|
|
94
|
-
}),
|
|
95
|
-
IsOptional(),
|
|
96
|
-
IsObject(),
|
|
97
|
-
_ts_metadata("design:type", typeof Record === "undefined" ? Object : Record)
|
|
98
|
-
], AssignBranchPermissionDto.prototype, "metadata", void 0);
|