@flusys/nestjs-auth 7.0.2 → 7.1.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 +67 -0
- package/cjs/config/auth.constants.js +8 -0
- package/cjs/config/event-actions.js +4 -2
- package/cjs/config/message-keys.js +27 -0
- package/cjs/controllers/index.js +2 -0
- package/cjs/controllers/social-auth-config.controller.js +107 -0
- package/cjs/controllers/social-auth.controller.js +175 -0
- package/cjs/controllers/social-auth.controller.spec.js +79 -0
- package/cjs/docs/auth-swagger.config.js +9 -1
- package/cjs/dtos/index.js +1 -0
- package/cjs/dtos/social-auth.dto.js +318 -0
- package/cjs/entities/index.js +3 -1
- package/cjs/entities/index.spec.js +12 -1
- package/cjs/entities/social-auth-config.entity.js +102 -0
- package/cjs/enums/index.js +1 -0
- package/cjs/enums/social-provider-type.enum.js +17 -0
- package/cjs/index.js +1 -0
- package/cjs/interfaces/index.js +1 -0
- package/cjs/interfaces/social-auth.interface.js +4 -0
- package/cjs/modules/auth.module.js +6 -0
- package/cjs/modules/auth.module.spec.js +15 -0
- package/cjs/providers/facebook.social-provider.js +73 -0
- package/cjs/providers/google.social-provider.js +68 -0
- package/cjs/providers/index.js +18 -0
- package/cjs/providers/linkedin.social-provider.js +66 -0
- package/cjs/providers/microsoft.social-provider.js +78 -0
- package/cjs/providers/oauth-http.util.js +107 -0
- package/cjs/providers/social-provider.registry.js +24 -0
- package/cjs/providers/social-provider.registry.spec.js +135 -0
- package/cjs/services/auth-config.service.js +3 -0
- package/cjs/services/auth-config.service.spec.js +3 -0
- package/cjs/services/auth-datasource.provider.js +4 -0
- package/cjs/services/auth-datasource.provider.spec.js +30 -0
- package/cjs/services/authentication.service.js +38 -8
- package/cjs/services/authentication.service.spec.js +58 -0
- package/cjs/services/index.js +2 -0
- package/cjs/services/social-auth-config.service.js +103 -0
- package/cjs/services/social-auth-config.service.spec.js +71 -0
- package/cjs/services/social-auth.service.js +310 -0
- package/cjs/services/social-auth.service.spec.js +310 -0
- package/config/auth.constants.d.ts +2 -0
- package/config/event-actions.d.ts +2 -0
- package/config/message-keys.d.ts +21 -0
- package/controllers/index.d.ts +2 -0
- package/controllers/social-auth-config.controller.d.ts +22 -0
- package/controllers/social-auth.controller.d.ts +11 -0
- package/dtos/index.d.ts +1 -0
- package/dtos/social-auth.dto.d.ts +42 -0
- package/entities/index.d.ts +3 -1
- package/entities/social-auth-config.entity.d.ts +9 -0
- package/enums/index.d.ts +1 -0
- package/enums/social-provider-type.enum.d.ts +6 -0
- package/fesm/config/auth.constants.js +3 -0
- package/fesm/config/event-actions.js +4 -2
- package/fesm/config/message-keys.js +21 -0
- package/fesm/controllers/index.js +2 -0
- package/fesm/controllers/social-auth-config.controller.js +97 -0
- package/fesm/controllers/social-auth.controller.js +165 -0
- package/fesm/controllers/social-auth.controller.spec.js +75 -0
- package/fesm/docs/auth-swagger.config.js +9 -1
- package/fesm/dtos/index.js +1 -0
- package/fesm/dtos/social-auth.dto.js +282 -0
- package/fesm/entities/index.js +4 -1
- package/fesm/entities/index.spec.js +12 -1
- package/fesm/entities/social-auth-config.entity.js +92 -0
- package/fesm/enums/index.js +1 -0
- package/fesm/enums/social-provider-type.enum.js +7 -0
- package/fesm/index.js +1 -0
- package/fesm/interfaces/index.js +1 -0
- package/fesm/interfaces/social-auth.interface.js +1 -0
- package/fesm/modules/auth.module.js +8 -2
- package/fesm/modules/auth.module.spec.js +17 -2
- package/fesm/providers/facebook.social-provider.js +63 -0
- package/fesm/providers/google.social-provider.js +58 -0
- package/fesm/providers/index.js +1 -0
- package/fesm/providers/linkedin.social-provider.js +56 -0
- package/fesm/providers/microsoft.social-provider.js +68 -0
- package/fesm/providers/oauth-http.util.js +77 -0
- package/fesm/providers/social-provider.registry.js +14 -0
- package/fesm/providers/social-provider.registry.spec.js +131 -0
- package/fesm/services/auth-config.service.js +3 -0
- package/fesm/services/auth-config.service.spec.js +3 -0
- package/fesm/services/auth-datasource.provider.js +4 -0
- package/fesm/services/auth-datasource.provider.spec.js +30 -0
- package/fesm/services/authentication.service.js +38 -8
- package/fesm/services/authentication.service.spec.js +58 -0
- package/fesm/services/index.js +2 -0
- package/fesm/services/social-auth-config.service.js +93 -0
- package/fesm/services/social-auth-config.service.spec.js +67 -0
- package/fesm/services/social-auth.service.js +300 -0
- package/fesm/services/social-auth.service.spec.js +265 -0
- package/index.d.ts +1 -0
- package/interfaces/index.d.ts +1 -0
- package/interfaces/social-auth.interface.d.ts +43 -0
- package/package.json +3 -3
- package/providers/facebook.social-provider.d.ts +10 -0
- package/providers/google.social-provider.d.ts +10 -0
- package/providers/index.d.ts +1 -0
- package/providers/linkedin.social-provider.d.ts +10 -0
- package/providers/microsoft.social-provider.d.ts +10 -0
- package/providers/oauth-http.util.d.ts +10 -0
- package/providers/social-provider.registry.d.ts +3 -0
- package/services/auth-config.service.d.ts +1 -0
- package/services/auth-datasource.provider.d.ts +1 -0
- package/services/authentication.service.d.ts +4 -0
- package/services/index.d.ts +2 -0
- package/services/social-auth-config.service.d.ts +21 -0
- package/services/social-auth.service.d.ts +24 -0
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { SocialProviderTypeEnum } from '../enums/social-provider-type.enum';
|
|
2
|
+
import { ISocialAuthProvider, ISocialProfile, ISocialProviderCredentials } from '../interfaces/social-auth.interface';
|
|
3
|
+
declare class MicrosoftSocialProvider implements ISocialAuthProvider {
|
|
4
|
+
readonly provider = SocialProviderTypeEnum.MICROSOFT;
|
|
5
|
+
readonly defaultScopes: string[];
|
|
6
|
+
buildAuthorizationUrl(credentials: ISocialProviderCredentials, state: string): string;
|
|
7
|
+
fetchProfile(credentials: ISocialProviderCredentials, code: string): Promise<ISocialProfile>;
|
|
8
|
+
}
|
|
9
|
+
export declare const microsoftSocialProvider: MicrosoftSocialProvider;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
type JsonRecord = Record<string, unknown>;
|
|
2
|
+
export declare function postForm(provider: string, url: string, form: Record<string, string>): Promise<JsonRecord>;
|
|
3
|
+
export declare function getJson(provider: string, url: string, accessToken: string): Promise<JsonRecord>;
|
|
4
|
+
export declare function readAccessToken(provider: string, token: JsonRecord): string;
|
|
5
|
+
export declare function readString(source: JsonRecord, key: string): string | null;
|
|
6
|
+
export declare function buildQuery(params: Record<string, string | undefined>): string;
|
|
7
|
+
export declare function resolveScopes(credentials: {
|
|
8
|
+
scopes?: string[] | null;
|
|
9
|
+
}, defaults: string[], separator?: string): string;
|
|
10
|
+
export {};
|
|
@@ -9,6 +9,7 @@ export declare class AuthConfigService implements IModuleConfigService {
|
|
|
9
9
|
isMultiTenant(): boolean;
|
|
10
10
|
isCompanyFeatureEnabled(): boolean;
|
|
11
11
|
isEmailVerificationEnabled(): boolean;
|
|
12
|
+
isSignUpEnabled(): boolean;
|
|
12
13
|
isPermissionModeFound(): boolean;
|
|
13
14
|
getJwtSecret(): string;
|
|
14
15
|
getJwtExpiration(): string;
|
|
@@ -15,6 +15,7 @@ export declare class AuthDataSourceProvider extends MultiTenantDataSourceService
|
|
|
15
15
|
private static buildParentOptions;
|
|
16
16
|
isCompanyFeatureEnabled(tenant?: ITenantDatabaseConfig): boolean;
|
|
17
17
|
isEmailVerificationEnabled(tenant?: ITenantDatabaseConfig): boolean;
|
|
18
|
+
isSignUpEnabled(tenant?: ITenantDatabaseConfig): boolean;
|
|
18
19
|
getAuthEntities(): Promise<any[]>;
|
|
19
20
|
protected createDataSourceFromConfig(config: IDatabaseConfig): Promise<DataSource>;
|
|
20
21
|
}
|
|
@@ -2,6 +2,7 @@ import { HybridCache } from '@flusys/nestjs-shared/classes';
|
|
|
2
2
|
import { INotificationAdapter } from '@flusys/nestjs-shared/interfaces';
|
|
3
3
|
import { JwtService } from '@nestjs/jwt';
|
|
4
4
|
import { RegistrationDto } from '../dtos/authentication.dto';
|
|
5
|
+
import { AppUser } from '../entities/app-user.entity';
|
|
5
6
|
import { CompanyBranch } from '../entities/company-branch.entity';
|
|
6
7
|
import { Company } from '../entities/company.entity';
|
|
7
8
|
import { PendingRegistration } from '../entities/pending-registration.entity';
|
|
@@ -23,9 +24,12 @@ export declare class AuthenticationService {
|
|
|
23
24
|
constructor(jwtService: JwtService, authConfig: AuthConfigService, cacheManager?: HybridCache | undefined, dataSourceProvider?: AuthDataSourceProvider | undefined, sessionService?: CompanySelectionSessionService | undefined, authEmailService?: AuthEmailService | undefined, userEnricher?: IUserEnricher | undefined, notificationAdapter?: INotificationAdapter | undefined);
|
|
24
25
|
private isCompanyFeatureEnabled;
|
|
25
26
|
private isEmailVerificationEnabled;
|
|
27
|
+
private isSignUpEnabled;
|
|
26
28
|
private getUserRepository;
|
|
27
29
|
private getCompanyScopedRepository;
|
|
28
30
|
login(email: string, password: string): Promise<LoginResponse | LoginResponseRequiresSelection | LoginResponseRequiresEmailVerification>;
|
|
31
|
+
issueLoginForUser(user: AppUser): Promise<LoginResponse | LoginResponseRequiresSelection>;
|
|
32
|
+
private ensureUserActive;
|
|
29
33
|
private handleCompanyBasedLogin;
|
|
30
34
|
register(dto: RegistrationDto, verifyUrlBase?: string): Promise<RegistrationResponse | {
|
|
31
35
|
requiresEmailVerification: true;
|
package/services/index.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export * from './authentication.service';
|
|
2
2
|
export * from './auth-email.service';
|
|
3
3
|
export * from './company-selection-session.service';
|
|
4
|
+
export * from './social-auth.service';
|
|
5
|
+
export * from './social-auth-config.service';
|
|
4
6
|
export * from './user.service';
|
|
5
7
|
export * from './company.service';
|
|
6
8
|
export * from './branch.service';
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { ApiService, HybridCache } from '@flusys/nestjs-shared/classes';
|
|
2
|
+
import { FilterAndPaginationDto } from '@flusys/nestjs-shared/dtos';
|
|
3
|
+
import { ILoggedUserInfo } from '@flusys/nestjs-shared/interfaces';
|
|
4
|
+
import { UtilsService } from '@flusys/nestjs-shared/modules';
|
|
5
|
+
import { QueryRunner, SelectQueryBuilder } from 'typeorm';
|
|
6
|
+
import { CreateSocialAuthConfigDto, UpdateSocialAuthConfigDto } from '../dtos/social-auth.dto';
|
|
7
|
+
import { SocialAuthConfig } from '../entities/social-auth-config.entity';
|
|
8
|
+
import { ISocialAuthConfig } from '../interfaces/social-auth.interface';
|
|
9
|
+
import { AuthDataSourceProvider } from './auth-datasource.provider';
|
|
10
|
+
export declare class SocialAuthConfigService extends ApiService<CreateSocialAuthConfigDto, UpdateSocialAuthConfigDto, ISocialAuthConfig, SocialAuthConfig> {
|
|
11
|
+
protected cacheManager: HybridCache;
|
|
12
|
+
protected utilsService: UtilsService;
|
|
13
|
+
constructor(cacheManager: HybridCache, utilsService: UtilsService, dataSourceProvider: AuthDataSourceProvider);
|
|
14
|
+
protected beforeInsertOperation(dto: CreateSocialAuthConfigDto | CreateSocialAuthConfigDto[], _user: ILoggedUserInfo | null, _queryRunner: QueryRunner): Promise<void>;
|
|
15
|
+
protected beforeUpdateOperation(dto: UpdateSocialAuthConfigDto | UpdateSocialAuthConfigDto[], _user: ILoggedUserInfo | null, _queryRunner: QueryRunner): Promise<void>;
|
|
16
|
+
private ensureProviderUnclaimed;
|
|
17
|
+
protected getExtraManipulateQuery(query: SelectQueryBuilder<SocialAuthConfig>, filterDto: FilterAndPaginationDto, user: ILoggedUserInfo | null): Promise<{
|
|
18
|
+
query: SelectQueryBuilder<SocialAuthConfig>;
|
|
19
|
+
isRaw: boolean;
|
|
20
|
+
}>;
|
|
21
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { HybridCache } from '@flusys/nestjs-shared/classes';
|
|
2
|
+
import { SocialProviderTypeEnum } from '../enums/social-provider-type.enum';
|
|
3
|
+
import { LoginResponse, LoginResponseRequiresSelection } from '../interfaces/authentication.interface';
|
|
4
|
+
import { ISocialAuthorization, ISocialProviderInfo } from '../interfaces/social-auth.interface';
|
|
5
|
+
import { AuthDataSourceProvider } from './auth-datasource.provider';
|
|
6
|
+
import { AuthenticationService } from './authentication.service';
|
|
7
|
+
export declare class SocialAuthService {
|
|
8
|
+
private readonly authService;
|
|
9
|
+
private readonly dataSourceProvider;
|
|
10
|
+
private readonly cacheManager?;
|
|
11
|
+
constructor(authService: AuthenticationService, dataSourceProvider: AuthDataSourceProvider, cacheManager?: HybridCache | undefined);
|
|
12
|
+
listEnabledProviders(redirectUri: string): Promise<ISocialProviderInfo[]>;
|
|
13
|
+
createAuthorization(provider: SocialProviderTypeEnum, redirectUri: string): Promise<ISocialAuthorization>;
|
|
14
|
+
completeLogin(code: string, state: string, redirectUri: string): Promise<LoginResponse | LoginResponseRequiresSelection>;
|
|
15
|
+
private resolveUser;
|
|
16
|
+
private ensureVerifiedEmail;
|
|
17
|
+
private registerUser;
|
|
18
|
+
private getUsableConfig;
|
|
19
|
+
private toCredentials;
|
|
20
|
+
private consumeState;
|
|
21
|
+
private stateKey;
|
|
22
|
+
private getCache;
|
|
23
|
+
private publishSocialEvent;
|
|
24
|
+
}
|