1 | import { Injector, NgModule } from '@angular/core';
|
2 | import { CommonModule } from '@angular/common';
|
3 | import { RouterModule } from '@angular/router';
|
4 | import { FormsModule } from '@angular/forms';
|
5 | import { NbAlertModule, NbButtonModule, NbCardModule, NbCheckboxModule, NbIconModule, NbInputModule, NbLayoutModule, } from '@nebular/theme';
|
6 | import { NbAuthService } from './services/auth.service';
|
7 | import { NbAuthSimpleToken } from './services/token/token';
|
8 | import { NbTokenLocalStorage, NbTokenStorage } from './services/token/token-storage';
|
9 | import { NbTokenService } from './services/token/token.service';
|
10 | import { NbAuthTokenParceler, NB_AUTH_FALLBACK_TOKEN } from './services/token/token-parceler';
|
11 | import { NbDummyAuthStrategy } from './strategies/dummy/dummy-strategy';
|
12 | import { NbOAuth2AuthStrategy } from './strategies/oauth2/oauth2-strategy';
|
13 | import { NbPasswordAuthStrategy } from './strategies/password/password-strategy';
|
14 | import { defaultAuthOptions, NB_AUTH_INTERCEPTOR_HEADER, NB_AUTH_OPTIONS, NB_AUTH_STRATEGIES, NB_AUTH_TOKEN_INTERCEPTOR_FILTER, NB_AUTH_TOKENS, NB_AUTH_USER_OPTIONS, } from './auth.options';
|
15 | import { NbAuthComponent } from './components/auth.component';
|
16 | import { NbAuthBlockComponent } from './components/auth-block/auth-block.component';
|
17 | import { NbLoginComponent } from './components/login/login.component';
|
18 | import { NbRegisterComponent } from './components/register/register.component';
|
19 | import { NbLogoutComponent } from './components/logout/logout.component';
|
20 | import { NbRequestPasswordComponent } from './components/request-password/request-password.component';
|
21 | import { NbResetPasswordComponent } from './components/reset-password/reset-password.component';
|
22 | import { deepExtend } from './helpers';
|
23 | export function nbStrategiesFactory(options, injector) {
|
24 | const strategies = [];
|
25 | options.strategies
|
26 | .forEach(([strategyClass, strategyOptions]) => {
|
27 | const strategy = injector.get(strategyClass);
|
28 | strategy.setOptions(strategyOptions);
|
29 | strategies.push(strategy);
|
30 | });
|
31 | return strategies;
|
32 | }
|
33 | export function nbTokensFactory(strategies) {
|
34 | const tokens = [];
|
35 | strategies
|
36 | .forEach((strategy) => {
|
37 | tokens.push(strategy.getOption('token.class'));
|
38 | });
|
39 | return tokens;
|
40 | }
|
41 | export function nbOptionsFactory(options) {
|
42 | return deepExtend(defaultAuthOptions, options);
|
43 | }
|
44 | export function nbNoOpInterceptorFilter(req) {
|
45 | return true;
|
46 | }
|
47 | export class NbAuthModule {
|
48 | static forRoot(nbAuthOptions) {
|
49 | return {
|
50 | ngModule: NbAuthModule,
|
51 | providers: [
|
52 | { provide: NB_AUTH_USER_OPTIONS, useValue: nbAuthOptions },
|
53 | { provide: NB_AUTH_OPTIONS, useFactory: nbOptionsFactory, deps: [NB_AUTH_USER_OPTIONS] },
|
54 | { provide: NB_AUTH_STRATEGIES, useFactory: nbStrategiesFactory, deps: [NB_AUTH_OPTIONS, Injector] },
|
55 | { provide: NB_AUTH_TOKENS, useFactory: nbTokensFactory, deps: [NB_AUTH_STRATEGIES] },
|
56 | { provide: NB_AUTH_FALLBACK_TOKEN, useValue: NbAuthSimpleToken },
|
57 | { provide: NB_AUTH_INTERCEPTOR_HEADER, useValue: 'Authorization' },
|
58 | { provide: NB_AUTH_TOKEN_INTERCEPTOR_FILTER, useValue: nbNoOpInterceptorFilter },
|
59 | { provide: NbTokenStorage, useClass: NbTokenLocalStorage },
|
60 | NbAuthTokenParceler,
|
61 | NbAuthService,
|
62 | NbTokenService,
|
63 | NbDummyAuthStrategy,
|
64 | NbPasswordAuthStrategy,
|
65 | NbOAuth2AuthStrategy,
|
66 | ],
|
67 | };
|
68 | }
|
69 | }
|
70 | NbAuthModule.decorators = [
|
71 | { type: NgModule, args: [{
|
72 | imports: [
|
73 | CommonModule,
|
74 | NbLayoutModule,
|
75 | NbCardModule,
|
76 | NbCheckboxModule,
|
77 | NbAlertModule,
|
78 | NbInputModule,
|
79 | NbButtonModule,
|
80 | RouterModule,
|
81 | FormsModule,
|
82 | NbIconModule,
|
83 | ],
|
84 | declarations: [
|
85 | NbAuthComponent,
|
86 | NbAuthBlockComponent,
|
87 | NbLoginComponent,
|
88 | NbRegisterComponent,
|
89 | NbRequestPasswordComponent,
|
90 | NbResetPasswordComponent,
|
91 | NbLogoutComponent,
|
92 | ],
|
93 | exports: [
|
94 | NbAuthComponent,
|
95 | NbAuthBlockComponent,
|
96 | NbLoginComponent,
|
97 | NbRegisterComponent,
|
98 | NbRequestPasswordComponent,
|
99 | NbResetPasswordComponent,
|
100 | NbLogoutComponent,
|
101 | ],
|
102 | },] }
|
103 | ];
|
104 |
|
\ | No newline at end of file |