UNPKG

49.7 kBSource Map (JSON)View Raw
1{"version":3,"file":"soushians-authentication.js.map","sources":["ng://@soushians/authentication/lib/models/user.model.ts","ng://@soushians/authentication/lib/actions/signin.actions.ts","ng://@soushians/authentication/lib/authentication.config.ts","ng://@soushians/authentication/lib/services/authentication-configuration.service.ts","ng://@soushians/authentication/lib/actions/authentication.actions.ts","ng://@soushians/authentication/lib/actions/captcha.actions.ts","ng://@soushians/authentication/lib/services/signin.service.ts","ng://@soushians/authentication/lib/smart-components/signin-container/signin-container.component.ts","ng://@soushians/authentication/lib/smart-components/authentication-container/authentication-container.component.ts","ng://@soushians/authentication/lib/smart-components/signup-container/signup-container.component.ts","ng://@soushians/authentication/lib/authentication-routing.module.ts","ng://@soushians/authentication/lib/dump-components/signin/signin.component.ts","ng://@soushians/authentication/lib/interceptors/with-credential.interceptor.ts","ng://@soushians/authentication/lib/interceptors/unauthorized.interceptor.ts","ng://@soushians/authentication/lib/reducers/user.reducer.ts","ng://@soushians/authentication/lib/reducers/index.ts","ng://@soushians/authentication/lib/effects/signin.effects.ts","ng://@soushians/authentication/lib/effects/authentication.effects.ts","ng://@soushians/authentication/lib/dump-components/signup/signup.component.ts","ng://@soushians/authentication/lib/routing-guards/signin.guard.ts","ng://@soushians/authentication/lib/authentication.module.ts"],"sourcesContent":["export class UserModel {\r\n\t_id: string;\r\n\t// FirstName: string;\r\n\t// LastName: string;\r\n\tUsername: string;\r\n\t// MobileNumber: string;\r\n\t// Sex: string;\r\n\t// Birthdate: string;\r\n\tEmail: string;\r\n\t// IdentificationNo: string;\r\n\t// IdentifierType: string;\r\n\t// RegisterDate: string;\r\n\t// UserType: string;\r\n\tRoles: string[] = [];\r\n\r\n\tconstructor(params?: any) {\r\n\t\tparams &&\r\n\t\t\tObject.keys(params).forEach(key => {\r\n\t\t\t\tif (key in params) (this as any)[key] = params[key];\r\n\t\t\t});\r\n\t}\r\n}\r\n","import { Action } from \"@ngrx/store\";\r\n\r\nimport { Signin_ApiModel } from \"../models\";\r\n\r\nexport enum SignInActionTypes {\r\n\tWHO_AM_I = \"[AUTHENTICATION] who am i\",\r\n\tSIGNUP = \"[AUTHENTICATION][SIGNUP] start\",\r\n\tSIGNUP_SUCCEED = \"[AUTHENTICATION][SIGNUP] Success\",\r\n\tSIGNUP_FAILURE = \"[AUTHENTICATION][SIGNUP] Failure\",\r\n\tSIGNIN = \"[AUTHENTICATION] Signin\",\r\n\tDO_SIGNOUT = \"[AUTHENTICATION] Do Signout\",\r\n\tSIGNOUT = \"[AUTHENTICATION] Signout\",\r\n\tSIGNIN_SUCCEED = \"[AUTHENTICATION][Signin] Success\",\r\n\tSIGNIN_FAILURE = \"[AUTHENTICATION][Signin] Failure\",\r\n\tSIGNIN_REDIRECT = \"[AUTHENTICATION][Signin] Redirect\",\r\n\tSIGNIN_REQUIRED = \"[AUTHENTICATION][Signin] Required\"\r\n}\r\n\r\nexport class WhoAmIAction implements Action {\r\n\treadonly type = SignInActionTypes.WHO_AM_I;\r\n}\r\n\r\n/**\r\n * \tsign up\r\n */\r\nexport class Signup implements Action {\r\n\treadonly type = SignInActionTypes.SIGNUP;\r\n\tconstructor(public payload: Signin_ApiModel.Request) {}\r\n}\r\n\r\nexport class SignupSecceed implements Action {\r\n\treadonly type = SignInActionTypes.SIGNUP_SUCCEED;\r\n\tconstructor(public payload: any) {}\r\n}\r\n\r\nexport class SignupFailed implements Action {\r\n\treadonly type = SignInActionTypes.SIGNUP_FAILURE;\r\n\tconstructor(public payload: any) {}\r\n}\r\n\r\n/**\r\n * Sign in\r\n */\r\nexport class Signin implements Action {\r\n\treadonly type = SignInActionTypes.SIGNIN;\r\n\tconstructor(public payload: Signin_ApiModel.Request) {}\r\n}\r\n\r\nexport class SigninSecceed implements Action {\r\n\treadonly type = SignInActionTypes.SIGNIN_SUCCEED;\r\n\tconstructor(public payload: any) {}\r\n}\r\n\r\nexport class SigninFailed implements Action {\r\n\treadonly type = SignInActionTypes.SIGNIN_FAILURE;\r\n\tconstructor(public payload: any) {}\r\n}\r\n\r\nexport class SigninRedirect implements Action {\r\n\treadonly type = SignInActionTypes.SIGNIN_REDIRECT;\r\n}\r\n\r\nexport class DoSignoutAction implements Action {\r\n\treadonly type = SignInActionTypes.DO_SIGNOUT;\r\n}\r\n\r\nexport class SignoutAction implements Action {\r\n\treadonly type = SignInActionTypes.SIGNOUT;\r\n}\r\n\r\nexport class SigninRequiredAction implements Action {\r\n\treadonly type = SignInActionTypes.SIGNIN_REQUIRED;\r\n}\r\n\r\nexport type SigninAction =\r\n\t| WhoAmIAction\r\n\t| Signup\r\n\t| SignupSecceed\r\n\t| SignupFailed\r\n\t| Signin\r\n\t| SigninSecceed\r\n\t| SigninFailed\r\n\t| SigninRedirect\r\n\t| DoSignoutAction\r\n\t| SignoutAction\r\n\t| SigninRequiredAction;\r\n","import { InjectionToken } from \"@angular/core\";\r\nimport { Observable, of } from \"rxjs\";\r\n\r\nexport interface AuthenticationModuleConfig {\r\n mode?: string; // \"token-base\" | \"cookie-base\";\r\n token?: {\r\n time: number\r\n };\r\n server?: string;\r\n endpoints?: {\r\n signOut?: string;\r\n signIn?: string;\r\n signUp?: string;\r\n whoAmI?: string;\r\n };\r\n forms?: {\r\n signIn: string;\r\n signUp: string;\r\n };\r\n env?: {\r\n production: boolean;\r\n frontend_server: string;\r\n server: string;\r\n };\r\n afterSignoutRedirectTo?: string;\r\n signupValidator?: (value: any) => Observable<boolean>;\r\n afterSignin?: (user: any) => void;\r\n responseToUser?: (user: any) => any;\r\n\r\n}\r\n\r\nexport const MODULE_DEFAULT_CONFIG: AuthenticationModuleConfig = {\r\n mode: \"cookie-base\",\r\n token: {\r\n time: 24 * 12 * 60 * 60\r\n },\r\n server: \"frontend_server\",\r\n endpoints: {\r\n signOut: \"\",\r\n signIn: \"\",\r\n signUp: \"\",\r\n whoAmI: \"\"\r\n },\r\n forms: {\r\n signIn: \"\",\r\n signUp: \"\"\r\n },\r\n env: {\r\n production: false,\r\n frontend_server: \"auth/module/frontend_server/did/not/set\",\r\n server: \"auth/module/server/did/not/set\"\r\n },\r\n afterSignoutRedirectTo: \"/\",\r\n signupValidator: value => of(true),\r\n afterSignin: (user) => { },\r\n responseToUser: user => user\r\n};\r\n\r\nexport const MODULE_CONFIG_TOKEN = new InjectionToken<AuthenticationModuleConfig>(\"ModuleConfig\");\r\n","import { Injectable, Inject } from \"@angular/core\";\r\nimport { Store } from \"@ngrx/store\";\r\nimport { Observable } from \"rxjs/Observable\";\r\nimport { BehaviorSubject } from \"rxjs\";\r\n\r\nimport { getAuthenticationModuleConfig } from \"@soushians/config\";\r\n\r\nimport { MODULE_CONFIG_TOKEN, AuthenticationModuleConfig, MODULE_DEFAULT_CONFIG } from \"../authentication.config\";\r\nimport { AuthenticationState } from \"../reducers\";\r\n\r\n@Injectable({\r\n\tprovidedIn: \"root\"\r\n})\r\nexport class AuthenticationConfigurationService {\r\n\tprivate _config: AuthenticationModuleConfig;\r\n\tget config() {\r\n\t\treturn this._config;\r\n\t}\r\n\tconfig$ = new BehaviorSubject(this._config);\r\n\r\n\tconstructor(@Inject(MODULE_CONFIG_TOKEN) configFile: any, private store: Store<AuthenticationState>) {\r\n\t\tthis._config = Object.assign({}, MODULE_DEFAULT_CONFIG, configFile);\r\n\t\tthis.config$.next(this._config);\r\n\t\tthis.store.select(getAuthenticationModuleConfig).subscribe(storeConfig => {\r\n\t\t\tif (!storeConfig) return;\r\n\t\t\tthis._config = Object.assign({}, this._config, storeConfig.Config);\r\n\t\t\tthis.config$.next(this._config);\r\n\t\t});\r\n\t}\r\n}\r\n","import { Action } from '@ngrx/store';\r\n\r\nexport const enum AuthenticationActionTypes {\r\n\tPROGRESSING_STARTED = '[AUTHENTICATION] PROGRESSING_STARTED',\r\n\tPROGRESSING_FINISHED = '[AUTHENTICATION] PROGRESSING_FINISHED',\r\n\tFAILED_HAPPENED = '[AUTHENTICATION] FAILED_HAPPENED'\r\n}\r\n\r\nexport class ProgressingStarted implements Action {\r\n\treadonly type = AuthenticationActionTypes.PROGRESSING_STARTED;\r\n}\r\nexport class ProgressingFinished implements Action {\r\n\treadonly type = AuthenticationActionTypes.PROGRESSING_FINISHED;\r\n}\r\nexport class FailedHappened implements Action {\r\n\treadonly type = AuthenticationActionTypes.FAILED_HAPPENED;\r\n\tconstructor(public payload: any) {}\r\n}\r\n\r\nexport type AuthenticationAction = ProgressingStarted | ProgressingFinished | FailedHappened;\r\n","import { Action } from '@ngrx/store';\r\n\r\nimport { TokenModel } from '../models';\r\n\r\nexport const NEW_CAPTCHA = '[captcha] new captcha';\r\nexport const TOKEN_REQUESTED = '[captcha] token_requested';\r\nexport const TOKEN_RECEIVED = '[captcha] token_received';\r\nexport const CAPTCHA_IMAGE_REQUESTED = '[captcha] captcha_image_requested';\r\nexport const CAPTCHA_IMAGE_LOADED = '[captcha] captcha_image_loaded';\r\nexport const CAPTCHA_ENTERED = '[captcha] CAPTCHA_ENTERED';\r\nexport const CLEAR_CAPTCHA = '[captcha] CLEAR_CAPTCHA';\r\n\r\nexport class NewCaptcha implements Action {\r\n readonly type = NEW_CAPTCHA;\r\n}\r\nexport class TokenRequested implements Action {\r\n readonly type = TOKEN_REQUESTED;\r\n}\r\nexport class TokenReceived implements Action {\r\n readonly type = TOKEN_RECEIVED;\r\n constructor(public payload: TokenModel) { }\r\n}\r\nexport class CaptchaImageRequested implements Action {\r\n readonly type = CAPTCHA_IMAGE_REQUESTED;\r\n}\r\nexport class CaptchaImageLoaded implements Action {\r\n readonly type = CAPTCHA_IMAGE_LOADED;\r\n}\r\nexport class CaptchaEntered implements Action {\r\n readonly type = CAPTCHA_ENTERED;\r\n constructor(public payload: string) { }\r\n}\r\nexport class ClearCaptcha implements Action {\r\n readonly type = CLEAR_CAPTCHA;\r\n}\r\nexport type CaptchaAction =\r\n | NewCaptcha\r\n | TokenRequested\r\n | TokenReceived\r\n | CaptchaImageRequested\r\n | CaptchaImageLoaded\r\n | CaptchaEntered\r\n | ClearCaptcha;","import { Injectable } from \"@angular/core\";\r\nimport { HttpClient } from \"@angular/common/http\";\r\nimport { Observable } from \"rxjs\";\r\nimport { MatSnackBar } from \"@angular/material\";\r\nimport { BehaviorSubject } from \"rxjs/BehaviorSubject\";\r\nimport { map, switchMap, take, filter, tap, catchError } from \"rxjs/operators\";\r\nimport { Store } from \"@ngrx/store\";\r\n\r\n// import { environment } from \"../../environments/environment\";\r\nimport { stringTemplate } from \"@soushians/shared\";\r\n\r\nimport { Signin_ApiModel, UserModel } from \"../models\";\r\nimport { AuthenticationConfigurationService } from \"./authentication-configuration.service\";\r\nimport { FeatureState } from \"../reducers\";\r\nimport { WhoAmIAction } from \"../actions\";\r\nimport { Cookie } from \"@soushians/shared\";\r\n\r\nconst COOKIE_NAME = \"ngs-authentication\";\r\n\r\n@Injectable({\r\n\tprovidedIn: \"root\"\r\n})\r\nexport class SigninService {\r\n\tconstructor(\r\n\t\tprivate http: HttpClient,\r\n\t\tprivate store: Store<FeatureState>,\r\n\t\tprivate configurationService: AuthenticationConfigurationService,\r\n\t\tprivate snackBar: MatSnackBar\r\n\t) {\r\n\t\tsetTimeout(() => this.store.dispatch(new WhoAmIAction()), 300);\r\n\t}\r\n\r\n\tsignup(model: any): Observable<UserModel> {\r\n\t\treturn this.configurationService.config$.pipe(\r\n\t\t\tfilter(config => config.endpoints.signUp != \"\"),\r\n\t\t\ttake(1),\r\n\t\t\tswitchMap(config =>\r\n\t\t\t\tthis.http.post<Signin_ApiModel.Response>(config.env[config.server] + config.endpoints.signUp, model)\r\n\t\t\t),\r\n\t\t\tmap(response => {\r\n\t\t\t\tconst user: any = Object.assign({}, response.Result);\r\n\t\t\t\tif (user.Role) {\r\n\t\t\t\t\tuser.Roles = [user.Role];\r\n\t\t\t\t}\r\n\t\t\t\treturn user;\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\tsignin(model: any): Observable<UserModel> {\r\n\t\treturn this.configurationService.config$.pipe(\r\n\t\t\tfilter(config => config.endpoints.signIn != \"\"),\r\n\t\t\ttake(1),\r\n\t\t\tswitchMap(config =>\r\n\t\t\t\tthis.http.post<any>(config.env[config.server] + config.endpoints.signIn, model)\r\n\t\t\t),\r\n\t\t\tmap(this.configurationService.config.responseToUser),\r\n\t\t\tmap((user) => {\r\n\t\t\t\tif (user.Role) {\r\n\t\t\t\t\tuser.Roles = [user.Role];\r\n\t\t\t\t}\r\n\t\t\t\treturn user;\r\n\t\t\t}),\r\n\t\t\ttap(user => {\r\n\t\t\t\tif (this.configurationService.config.mode == \"token-base\")\r\n\t\t\t\t\tCookie.setCookie(COOKIE_NAME, JSON.stringify(user), this.configurationService.config.token.time);\r\n\t\t\t}),\r\n\t\t\ttap((user) => this.configurationService.config.afterSignin(user)),\r\n\t\t);\r\n\t}\r\n\r\n\t// TODO:\r\n\tsignout(): Observable<any> {\r\n\t\tCookie.deleteCookie(COOKIE_NAME);\r\n\t\treturn this.http\r\n\t\t\t.get(\r\n\t\t\t\tthis.configurationService.config.env[this.configurationService.config.server] + this.configurationService.config.endpoints.signOut\r\n\t\t\t)\r\n\t\t\t.pipe(\r\n\t\t\t\ttap(() => {\r\n\t\t\t\t\tCookie.deleteCookie(COOKIE_NAME);\r\n\t\t\t\t})\r\n\t\t\t);\r\n\t}\r\n\r\n\twhoAmI(): Observable<any> {\r\n\t\tdebugger;\r\n\t\tlet user = { Token: \"--\" };\r\n\t\tif (this.configurationService.config.mode == \"token-base\") {\r\n\t\t\ttry {\r\n\t\t\t\tuser = JSON.parse(Cookie.getCookie(COOKIE_NAME));\r\n\t\t\t} catch (error) { }\r\n\t\t}\r\n\t\treturn this.configurationService.config$.pipe(\r\n\t\t\tfilter(config => config.endpoints.whoAmI != \"\"),\r\n\t\t\ttake(1),\r\n\t\t\tswitchMap(config =>\r\n\t\t\t\tthis.http.get(stringTemplate(config.env[config.server] + config.endpoints.whoAmI, { user }))\r\n\t\t\t)\r\n\t\t);\r\n\t}\r\n}\r\n","import { Component, OnInit, OnDestroy, Output, EventEmitter } from \"@angular/core\";\r\nimport { Observable } from \"rxjs/Observable\";\r\nimport { Store } from \"@ngrx/store\";\r\n\r\nimport { Signin } from \"../../actions\";\r\nimport { AuthenticationConfigurationService } from \"../../services/authentication-configuration.service\";\r\nimport { FeatureState } from \"../../reducers\";\r\n\r\n@Component({\r\n\ttemplate: `\r\n <auth-signin \r\n [formId]='(formId$ | async)'\r\n (signedin)=\"signIn($event)\"\r\n ></auth-signin>\r\n `\r\n})\r\nexport class SigninContainerComponent {\r\n\tformId$: Observable<string>;\r\n\t@Output() signedIn$ = new EventEmitter<boolean>();\r\n\tconstructor(private configurationService: AuthenticationConfigurationService, private store: Store<FeatureState>) {\r\n\t\tthis.formId$ = this.configurationService.config$.map(config => config.forms.signIn);\r\n\t}\r\n\r\n\tsignIn(formValue: any) {\r\n\t\tthis.store.dispatch(new Signin(formValue));\r\n\t\tthis.signedIn$.emit(true);\r\n\t}\r\n}\r\n","import { Component } from \"@angular/core\";\r\n\r\n@Component({\r\n\ttemplate: `\r\n <router-outlet></router-outlet>\r\n `\r\n})\r\nexport class AuthenticationContainerComponent {}\r\n","import { Component, OnInit, OnDestroy, Output, EventEmitter } from \"@angular/core\";\r\nimport { Observable } from \"rxjs/Observable\";\r\nimport { Store } from \"@ngrx/store\";\r\n\r\nimport { Signup } from \"../../actions\";\r\nimport { CaptchaModel } from \"../../models\";\r\nimport { AuthenticationConfigurationService } from \"../../services/authentication-configuration.service\";\r\nimport { FeatureState } from \"../../reducers\";\r\nimport { MatSnackBar } from \"@angular/material\";\r\nimport { take, switchMap, filter, tap } from \"rxjs/operators\";\r\n\r\n@Component({\r\n\ttemplate: `\r\n <auth-signup \r\n [formId]='(formId$ | async)'\r\n (signedup)=\"signup($event)\"\r\n ></auth-signup>\r\n `\r\n})\r\nexport class SignupContainerComponent {\r\n\tformId$: Observable<string>;\r\n\t@Output() signedUp$ = new EventEmitter<boolean>();\r\n\tconstructor(\r\n\t\tprivate configurationService: AuthenticationConfigurationService,\r\n\t\tprivate store: Store<FeatureState>,\r\n\t\tprivate snackBar: MatSnackBar\r\n\t) {\r\n\t\tthis.formId$ = this.configurationService.config$.map(config => config.forms.signUp);\r\n\t}\r\n\r\n\tsignup(formValue: any) {\r\n\t\tthis.configurationService.config$\r\n\t\t\t.pipe(take(1), switchMap(config => config.signupValidator(formValue)))\r\n\t\t\t.subscribe(validation => {\r\n\t\t\t\tif (validation) {\r\n\t\t\t\t\tthis.store.dispatch(new Signup(formValue));\r\n\t\t\t\t\tthis.signedUp$.emit(true);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.snackBar.open(\"رمز عبور یکسان نیست\", null, {\r\n\t\t\t\t\t\tduration: 2222\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n}\r\n","import { ModuleWithProviders } from \"@angular/core\";\r\nimport { RouterModule, Routes } from \"@angular/router\";\r\n\r\nimport { SigninGuard } from \"./routing-guards\";\r\nimport { AuthenticationContainerComponent } from \"./smart-components/authentication-container/authentication-container.component\";\r\nimport { SigninContainerComponent } from \"./smart-components/signin-container/signin-container.component\";\r\nimport { SignupContainerComponent } from \"./smart-components/signup-container/signup-container.component\";\r\n\r\nconst routes: Routes = [\r\n\t{\r\n\t\tpath: \"auth\",\r\n\t\tcomponent: AuthenticationContainerComponent,\r\n\t\tchildren: [\r\n\t\t\t{\r\n\t\t\t\tpath: \"signin\",\r\n\t\t\t\t// canActivate: [ SigninGuard ],\r\n\t\t\t\tcomponent: SigninContainerComponent\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: \"signup\",\r\n\t\t\t\t// canActivate: [ SigninGuard ],\r\n\t\t\t\tcomponent: SignupContainerComponent\r\n\t\t\t}\r\n\t\t]\r\n\t}\r\n];\r\n\r\nexport const AuthenticationRoutingModule: ModuleWithProviders = RouterModule.forChild(routes);\r\n","import { Component, Input, Output, EventEmitter } from \"@angular/core\";\r\nimport { FormGroup } from \"@angular/forms\";\r\nimport { Observable } from \"rxjs/Rx\";\r\n\r\n@Component({\r\n\tselector: \"auth-signin\",\r\n\ttemplateUrl: \"./signin.component.html\",\r\n\tstyleUrls: [ \"./signin.component.scss\" ]\r\n})\r\nexport class SigninComponent {\r\n\t@Output() signedin = new EventEmitter();\r\n\r\n\t@Input() formId: string;\r\n\r\n\tsignin(formGroup: FormGroup) {\r\n\t\tif (!formGroup.valid) return;\r\n\t\tthis.signedin.emit(formGroup.value);\r\n\t}\r\n\r\n\tconstructor() {}\r\n}\r\n","import \"rxjs/add/operator/do\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { HttpInterceptor } from \"@angular/common/http\";\r\nimport { HttpRequest } from \"@angular/common/http\";\r\nimport { HttpHandler } from \"@angular/common/http\";\r\nimport { Observable } from \"rxjs/Observable\";\r\nimport { HttpEvent } from \"@angular/common/http\";\r\nimport { HttpResponse } from \"@angular/common/http\";\r\nimport { AuthenticationConfigurationService } from \"../services/authentication-configuration.service\";\r\n// import { environment } from \"../../../environments/environment\";\r\n\r\n@Injectable()\r\nexport class WithCredentialInterceptor implements HttpInterceptor {\r\n\tconstructor(private configurationService: AuthenticationConfigurationService) {}\r\n\tintercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n\t\t// if (!this.configurationService.config.env.production)\r\n\t\t(request as any).withCredentials = true;\r\n\t\treturn next.handle(request);\r\n\t}\r\n}\r\n","import { HttpInterceptor } from \"@angular/common/http\";\r\nimport { HttpRequest } from \"@angular/common/http\";\r\nimport { HttpHandler } from \"@angular/common/http\";\r\nimport { Observable } from \"rxjs/Observable\";\r\nimport { HttpEvent } from \"@angular/common/http\";\r\nimport { HttpResponse } from \"@angular/common/http\";\r\nimport { HttpErrorResponse } from \"@angular/common/http\";\r\n\r\nimport { Store } from \"@ngrx/store\";\r\nimport { SignoutAction } from \"../actions\";\r\nimport * as fromAuth from \"../reducers\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\nimport { of, throwError } from \"rxjs\";\r\n\r\n@Injectable()\r\nexport class UnauthorizedInterceptor implements HttpInterceptor {\r\n\tconstructor(\r\n\t\tprivate router: Router,\r\n\t\tprivate store: Store<fromAuth.FeatureState> // private signinService: SigninService\r\n\t) {}\r\n\tintercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n\t\treturn next\r\n\t\t\t.handle(request)\r\n\t\t\t.map((event: HttpEvent<any>) => {\r\n\t\t\t\tif (event instanceof HttpResponse) return event;\r\n\t\t\t})\r\n\t\t\t.catch(err => {\r\n\t\t\t\tif (!(err instanceof HttpErrorResponse)) return throwError(err);\r\n\t\t\t\tif (err.status != 401) return throwError(err);\r\n\t\t\t\tif (err.url.includes(\"logout\")) return throwError(err);\r\n\t\t\t\tif (err.url.includes(\"user/account/profile\")) return throwError(err);\r\n\r\n\t\t\t\tthis.store.dispatch(new SignoutAction());\r\n\r\n\t\t\t\treturn throwError(\"Unauthorized\");\r\n\t\t\t});\r\n\t}\r\n}\r\n","import { SigninAction, SignInActionTypes } from \"../actions/signin.actions\";\r\nimport { UserModel } from \"../models/user.model\";\r\n\r\nexport interface State {\r\n\tloggedIn: boolean;\r\n\tuser: UserModel;\r\n}\r\n\r\nexport const initialState: State = {\r\n\tloggedIn: false,\r\n\tuser: new UserModel({ Id: 1 })\r\n};\r\n\r\nexport function UserReducer(state = initialState, action: SigninAction): State {\r\n\tswitch (action.type) {\r\n\t\tcase SignInActionTypes.SIGNIN_SUCCEED: {\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tloggedIn: true,\r\n\t\t\t\tuser: action.payload\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tcase SignInActionTypes.SIGNOUT: {\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tloggedIn: false,\r\n\t\t\t\tuser: new UserModel()\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tdefault: {\r\n\t\t\treturn state;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n//#region selectors\r\nexport const getLoggedIn = (state: State) => state.loggedIn;\r\nexport const getUser = (state: State) => state.user;\r\n//#endregion\r\n","import { createSelector, createFeatureSelector, MemoizedSelector } from \"@ngrx/store\";\r\n\r\nimport * as userReducer from \"./user.reducer\";\r\n// import * as captchaReducer from \"./captcha.reducer\";\r\n\r\nimport { UserModel } from \"../models/user.model\";\r\n\r\nexport interface AuthenticationState {\r\n\tuserStatus: userReducer.State;\r\n\t// captcha: captchaReducer.State;\r\n}\r\n\r\nexport interface FeatureState {\r\n\t\"authentication\": AuthenticationState;\r\n}\r\n\r\nexport const AuthenticationReducers = {\r\n\tuserStatus: userReducer.UserReducer\r\n\t// captcha: captchaReducer.CaptchaReducer\r\n};\r\n\r\n//#region selectors\r\n\r\nexport const selectAuthenticationState = createFeatureSelector<AuthenticationState>(\"authentication\");\r\n\r\nexport const selectAuthState = createSelector(\r\n\tselectAuthenticationState,\r\n\t(state: AuthenticationState) => state.userStatus\r\n);\r\n\r\nexport const getLoggedIn = createSelector(selectAuthState, userReducer.getLoggedIn);\r\nexport const getUser = createSelector(selectAuthState, userReducer.getUser);\r\n\r\n// export const selectCaptchaState = createSelector(selectAuthenticationState, (state: AuthenticationState) => {\r\n// \treturn state.captcha;\r\n// });\r\n\r\n// export const getCaptcha = createSelector(selectCaptchaState, captchaReducer.getCaptcha);\r\n","import { Injectable } from \"@angular/core\";\r\nimport { Router, ActivatedRoute } from \"@angular/router\";\r\nimport { Observable } from \"rxjs/Observable\";\r\nimport { Action } from \"@ngrx/store\";\r\nimport { Actions, Effect } from \"@ngrx/effects\";\r\nimport { RouterAction } from \"@ngrx/router-store\";\r\nimport { switchMap, map, catchError, tap, pluck } from \"rxjs/operators\";\r\nimport { of } from \"rxjs\";\r\n\r\nimport {\r\n\tSignoutAction,\r\n\tSignInActionTypes,\r\n\tSigninSecceed,\r\n\tSigninFailed,\r\n\tSigninRedirect,\r\n\tSignin,\r\n\tSignupSecceed,\r\n\tSignupFailed\r\n} from \"../actions/signin.actions\";\r\nimport { SigninService } from \"../services/signin.service\";\r\nimport { NewCaptcha } from \"../actions\";\r\nimport { SigninContainerComponent } from \"../smart-components/signin-container\";\r\nimport { MatBottomSheet } from \"@angular/material\";\r\nimport { AuthenticationConfigurationService } from \"../services/authentication-configuration.service\";\r\n\r\n@Injectable()\r\nexport class SigninEffects {\r\n\tconstructor(\r\n\t\tprivate actions$: Actions,\r\n\t\tprivate router: Router,\r\n\t\tpublic signinService: SigninService,\r\n\t\tpublic configurationService: AuthenticationConfigurationService,\r\n\t\tprivate bottomSheet: MatBottomSheet\r\n\t) { }\r\n\r\n\t@Effect()\r\n\twhoAmI$ = this.actions$\r\n\t\t.ofType(SignInActionTypes.WHO_AM_I)\r\n\t\t.pipe(\r\n\t\t\tswitchMap(() =>\r\n\t\t\t\tthis.signinService\r\n\t\t\t\t\t.whoAmI()\r\n\t\t\t\t\t.pipe(map(user => new SigninSecceed(user)), catchError(error => of(new SigninFailed(error))))\r\n\t\t\t)\r\n\t\t);\r\n\r\n\t@Effect()\r\n\tSignin$ = this.actions$\r\n\t\t.ofType(SignInActionTypes.SIGNIN)\r\n\t\t.pipe(\r\n\t\t\tpluck(\"payload\"),\r\n\t\t\tswitchMap(payload =>\r\n\t\t\t\tthis.signinService\r\n\t\t\t\t\t.signin(payload)\r\n\t\t\t\t\t.pipe(map(user => new SigninSecceed(user)), catchError(error => of(new SigninFailed(error))))\r\n\t\t\t)\r\n\t\t);\r\n\r\n\t@Effect()\r\n\tsignup$ = this.actions$\r\n\t\t.ofType(SignInActionTypes.SIGNUP)\r\n\t\t.pipe(\r\n\t\t\tpluck(\"payload\"),\r\n\t\t\tswitchMap(payload =>\r\n\t\t\t\tthis.signinService\r\n\t\t\t\t\t.signup(payload)\r\n\t\t\t\t\t.pipe(map(user => new SignupSecceed(user)), catchError(error => of(new SignupFailed(error))))\r\n\t\t\t)\r\n\t\t);\r\n\r\n\t@Effect({ dispatch: false })\r\n\tsignupSucceed$ = this.actions$.ofType(SignInActionTypes.SIGNUP_SUCCEED).pipe(\r\n\t\ttap(() => {\r\n\t\t\tdebugger;\r\n\t\t\tthis.router.navigate([\"auth/signin\"]);\r\n\t\t})\r\n\t);\r\n\r\n\t@Effect({ dispatch: false })\r\n\tSignInRequired$ = this.actions$.ofType(SignInActionTypes.SIGNIN_REQUIRED).pipe(\r\n\t\ttap((data: any) => {\r\n\t\t\tconst signinBottomSheetRef = this.bottomSheet.open(SigninContainerComponent, {\r\n\t\t\t\tpanelClass: \"clear-mat-card-box\"\r\n\t\t\t});\r\n\t\t\tsigninBottomSheetRef.instance.signedIn$.subscribe(() => {\r\n\t\t\t\tsigninBottomSheetRef.dismiss();\r\n\t\t\t});\r\n\t\t\treturn signinBottomSheetRef;\r\n\t\t})\r\n\t);\r\n\r\n\t@Effect({ dispatch: false })\r\n\tSigninSucceed$ = this.actions$.ofType(SignInActionTypes.SIGNIN_SUCCEED).pipe(\r\n\t\ttap((data: any) => {\r\n\t\t\tif (location.pathname.indexOf(\"signin\") > -1) this.router.navigate([\"/\"]);\r\n\t\t})\r\n\t);\r\n\r\n\t@Effect() AfterSigninFiled$ = this.actions$.ofType(SignInActionTypes.SIGNIN_FAILURE).map(() => new NewCaptcha());\r\n\r\n\t@Effect()\r\n\tDoSignout$ = this.actions$.ofType(SignInActionTypes.DO_SIGNOUT).pipe(\r\n\t\tswitchMap(data =>\r\n\t\t\tthis.signinService.signout().pipe(\r\n\t\t\t\tmap(() => new SignoutAction()),\r\n\t\t\t\tcatchError(err => {\r\n\t\t\t\t\t// TODO: dispatch valid action\r\n\t\t\t\t\tdebugger;\r\n\t\t\t\t\treturn of(err);\r\n\t\t\t\t})\r\n\t\t\t)\r\n\t\t)\r\n\t);\r\n\r\n\t// TODO\r\n\t// @Effect() Signout$ = this.actions$.ofType(SignInActionTypes.DO_SIGNOUT).pipe(map(() => new SignoutAction()));\r\n\r\n\t@Effect({ dispatch: false })\r\n\tredirectToLoginPage$ = this.actions$\r\n\t\t.ofType(SignInActionTypes.SIGNIN_REDIRECT)\r\n\t\t.pipe(tap(authed => this.router.navigate([\"auth/signin\"])));\r\n\r\n\t@Effect({ dispatch: false })\r\n\tredirectAfterSignout$ = this.actions$\r\n\t\t.ofType(SignInActionTypes.SIGNOUT)\r\n\t\t.pipe(\r\n\t\t\ttap(authed => this.router.navigate([this.configurationService.config$.getValue().afterSignoutRedirectTo]))\r\n\t\t);\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\nimport { Observable } from \"rxjs/Observable\";\r\nimport { of } from \"rxjs/observable/of\";\r\nimport \"rxjs/add/operator/map\";\r\nimport \"rxjs/add/operator/mergeMap\";\r\nimport { Action } from \"@ngrx/store\";\r\nimport { Actions, Effect } from \"@ngrx/effects\";\r\n\r\nimport { SignInActionTypes, FailedHappened, ProgressingStarted, ProgressingFinished } from \"../actions\";\r\nimport { map } from \"rxjs/operators\";\r\n\r\n@Injectable()\r\nexport class AuthenticationEffects {\r\n\tconstructor(private actions$: Actions<any>, private router: Router) {}\r\n\r\n\t@Effect()\r\n\tdispachProgressingStarted$ = this.actions$\r\n\t\t.ofType(SignInActionTypes.SIGNIN)\r\n\t\t.pipe(map(() => new ProgressingStarted()));\r\n\r\n\t@Effect()\r\n\tdispachProgressingFinished$ = this.actions$\r\n\t\t.ofType(SignInActionTypes.SIGNIN_FAILURE, SignInActionTypes.SIGNIN_SUCCEED)\r\n\t\t.pipe(map(() => new ProgressingFinished()));\r\n}\r\n","import { Component, Input, Output, EventEmitter } from \"@angular/core\";\r\nimport { FormGroup } from \"@angular/forms\";\r\nimport { Observable } from \"rxjs/Rx\";\r\n\r\n@Component({\r\n\tselector: \"auth-signup\",\r\n\ttemplateUrl: \"./signup.component.html\",\r\n\tstyleUrls: [ \"./signup.component.scss\" ]\r\n})\r\nexport class SignupComponent {\r\n\t@Output() signedup = new EventEmitter();\r\n\r\n\t@Input() formId: string;\r\n\r\n\tsignup(formGroup: FormGroup) {\r\n\t\tif (!formGroup.valid) return;\r\n\t\tthis.signedup.emit(formGroup.value);\r\n\t}\r\n\r\n\tconstructor() {}\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { CanActivate, RouterStateSnapshot, ActivatedRouteSnapshot } from \"@angular/router\";\r\nimport { Store } from \"@ngrx/store\";\r\nimport { Observable } from \"rxjs/Observable\";\r\n\r\nimport { FeatureState, getLoggedIn } from \"../reducers\";\r\n\r\n@Injectable()\r\nexport class SigninGuard implements CanActivate {\r\n\tconstructor(private store: Store<FeatureState>) {}\r\n\r\n\tcanActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {\r\n\t\treturn this.store.select(getLoggedIn).take(1).map(authed => !authed);\r\n\t}\r\n}\r\n","import { NgModule, ModuleWithProviders, InjectionToken, Injectable, Inject } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { RouterModule } from \"@angular/router\";\r\nimport { HttpClientModule, HTTP_INTERCEPTORS } from \"@angular/common/http\";\r\nimport { FlexLayoutModule } from \"@angular/flex-layout\";\r\nimport {\r\n\tMatIconModule,\r\n\tMatButtonModule,\r\n\tMatCardModule,\r\n\tMatSnackBarModule,\r\n\tMatSidenavModule,\r\n\tMatExpansionModule,\r\n\tMatSelectModule,\r\n\tMatFormFieldModule,\r\n\tMatListModule,\r\n\tMatMenuModule,\r\n\tMatRadioModule,\r\n\tMatInputModule,\r\n\tMatToolbarModule,\r\n\tMatDatepickerModule,\r\n\tMatProgressBarModule,\r\n\tMatBottomSheetModule\r\n} from \"@angular/material\";\r\nimport { BrowserAnimationsModule } from \"@angular/platform-browser/animations\";\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { StoreModule } from \"@ngrx/store\";\r\nimport { EffectsModule } from \"@ngrx/effects\";\r\n\r\nimport { NgsFormModule } from \"@soushians/form\";\r\n\r\nimport { AuthenticationModuleConfig, MODULE_CONFIG_TOKEN } from \"./authentication.config\";\r\nimport { AuthenticationRoutingModule } from \"./authentication-routing.module\";\r\nimport { SigninContainerComponent } from \"./smart-components/signin-container/signin-container.component\";\r\nimport { SigninComponent } from \"./dump-components/signin/signin.component\";\r\nimport { AuthenticationContainerComponent } from \"./smart-components/authentication-container/authentication-container.component\";\r\n\r\nimport { WithCredentialInterceptor } from \"./interceptors/with-credential.interceptor\";\r\nimport { UnauthorizedInterceptor } from \"./interceptors/unauthorized.interceptor\";\r\n\r\nimport { AuthenticationReducers } from \"./reducers/index\";\r\n\r\nimport { SigninEffects } from \"./effects/signin.effects\";\r\nimport { AuthenticationEffects } from \"./effects/authentication.effects\";\r\nimport { SigninService } from \"./services/signin.service\";\r\nimport { SignupContainerComponent } from \"./smart-components/signup-container/signup-container.component\";\r\nimport { SignupComponent } from \"./dump-components/signup/signup.component\";\r\nimport { SigninGuard } from \"./routing-guards/signin.guard\";\r\n\r\n@NgModule({\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tRouterModule,\r\n\t\tFormsModule,\r\n\t\tHttpClientModule,\r\n\t\tFlexLayoutModule,\r\n\t\tMatIconModule,\r\n\t\tMatButtonModule,\r\n\t\tMatCardModule,\r\n\t\tMatSnackBarModule,\r\n\t\tMatSidenavModule,\r\n\t\tMatExpansionModule,\r\n\t\tMatSelectModule,\r\n\t\tMatBottomSheetModule,\r\n\t\tMatFormFieldModule,\r\n\t\tMatListModule,\r\n\t\tMatMenuModule,\r\n\t\tMatRadioModule,\r\n\t\tMatInputModule,\r\n\t\tMatToolbarModule,\r\n\t\tMatDatepickerModule,\r\n\t\tMatProgressBarModule,\r\n\t\tBrowserAnimationsModule,\r\n\t\tReactiveFormsModule,\r\n\t\tFormsModule,\r\n\t\tNgsFormModule\r\n\t],\r\n\tdeclarations: [\r\n\t\tSigninContainerComponent,\r\n\t\tSigninComponent,\r\n\t\tAuthenticationContainerComponent,\r\n\t\tSignupContainerComponent,\r\n\t\tSignupComponent\r\n\t],\r\n\tentryComponents: [SigninContainerComponent],\r\n\tproviders: [SigninGuard],\r\n\texports: []\r\n})\r\nexport class NgsAuthenticationModule {\r\n\tstatic forRoot(config: AuthenticationModuleConfig = <AuthenticationModuleConfig>{}): ModuleWithProviders {\r\n\t\treturn {\r\n\t\t\tngModule: RootNgsAuthenticationModule,\r\n\t\t\tproviders: [\r\n\t\t\t\t{ provide: MODULE_CONFIG_TOKEN, useValue: config },\r\n\t\t\t\t{\r\n\t\t\t\t\tprovide: HTTP_INTERCEPTORS,\r\n\t\t\t\t\tuseClass: UnauthorizedInterceptor,\r\n\t\t\t\t\tmulti: true\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tprovide: HTTP_INTERCEPTORS,\r\n\t\t\t\t\tuseClass: WithCredentialInterceptor,\r\n\t\t\t\t\tmulti: true\r\n\t\t\t\t},\r\n\t\t\t\tSigninService\r\n\t\t\t]\r\n\t\t};\r\n\t}\r\n}\r\n\r\n@NgModule({\r\n\timports: [\r\n\t\tStoreModule.forFeature(\"authentication\", AuthenticationReducers),\r\n\t\tEffectsModule.forFeature([SigninEffects, AuthenticationEffects]),\r\n\t\tAuthenticationRoutingModule,\r\n\t\tNgsAuthenticationModule\r\n\t]\r\n})\r\nexport class RootNgsAuthenticationModule { }\r\n"],"names":["userReducer.UserReducer","getLoggedIn","userReducer.getLoggedIn","getUser","userReducer.getUser"],"mappings":"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"}