{"version":3,"file":"adjai-ngx-library-src-lib-auth.mjs","sources":["../../../projects/ngx-library/src/lib/auth/auth-configuration.ts","../../../projects/ngx-library/src/lib/auth/auth.service.ts","../../../projects/ngx-library/src/lib/auth/oauth2.service.ts","../../../projects/ngx-library/src/lib/auth/oauth2-login/oauth2-login.component.ts","../../../projects/ngx-library/src/lib/auth/oauth2-login/oauth2-login.component.html","../../../projects/ngx-library/src/lib/auth/login/login.component.ts","../../../projects/ngx-library/src/lib/auth/login/login.component.html","../../../projects/ngx-library/src/lib/auth/auth-token.interceptor.ts","../../../projects/ngx-library/src/lib/auth/register/register.component.ts","../../../projects/ngx-library/src/lib/auth/register/register.component.html","../../../projects/ngx-library/src/lib/auth/activation/activation.component.ts","../../../projects/ngx-library/src/lib/auth/activation/activation.component.html","../../../projects/ngx-library/src/lib/auth/reset-password/reset-password.component.ts","../../../projects/ngx-library/src/lib/auth/reset-password/reset-password.component.html","../../../projects/ngx-library/src/lib/auth/reset-password-request/reset-password-request.component.ts","../../../projects/ngx-library/src/lib/auth/reset-password-request/reset-password-request.component.html","../../../projects/ngx-library/src/lib/auth/register-complete/register-complete.component.ts","../../../projects/ngx-library/src/lib/auth/register-complete/register-complete.component.html","../../../projects/ngx-library/src/lib/auth/oauth2-redirect/oauth2-redirect.component.ts","../../../projects/ngx-library/src/lib/auth/auth.module.ts","../../../projects/ngx-library/src/lib/auth/auth.guard.ts","../../../projects/ngx-library/src/lib/auth/adjai-ngx-library-src-lib-auth.ts"],"sourcesContent":["import {RegistrationFormField} from \"./auth.service\";\r\nimport {Oauth2Providers, OauthProviderSecretOptions} from \"./oauth2.service\";\r\n\r\nexport interface AuthResetPasswordConfiguration {\r\n  title?: string\r\n  actionLabel: string\r\n  fieldLabels?: {\r\n    email: string,\r\n  }\r\n}\r\n\r\nexport interface AuthLoginConfiguration {\r\n  title?: string\r\n  actionLabel: string\r\n  fieldLabels?: {\r\n    email: string,\r\n    password: string,\r\n  }\r\n}\r\n\r\nexport interface AuthRegisterConfiguration {\r\n  title?: string\r\n  actionLabel: string\r\n  fieldLabels?: {\r\n    name: string,\r\n    email: string,\r\n    password: string,\r\n    password2: string,\r\n  }\r\n}\r\n\r\nexport class AuthConfiguration {\r\n  authApiBaseUrl?: string | null = null\r\n  loginPage? = '/auth'\r\n  registerCompletePage? = '/cabinet'\r\n  loggedInPage? = '/cabinet'\r\n  loggedOutPage? = '/auth'\r\n  homePage? = '/'\r\n  ifProcessQuickRegistration? = false\r\n  ifNameRequired? = false\r\n  registrationFormFields?: RegistrationFormField[] = []\r\n  providers?: {[key in Oauth2Providers]?: OauthProviderSecretOptions} = {}\r\n  ifShowFieldLabels?: boolean = false\r\n  actionLabels?: {\r\n    auth: string\r\n    reg: string\r\n    reset: string\r\n  } = {\r\n    auth: 'AUTH_LINK',\r\n    reg: 'REG_LINK',\r\n    reset: 'FORGOT_PASSWORD_LINK',\r\n  }\r\n  login?: AuthLoginConfiguration = {\r\n    title: 'LOGIN_FORM_TITLE',\r\n    actionLabel: 'LOGIN_BUTTON',\r\n    fieldLabels: {\r\n      email: 'EMAIL_LABEL',\r\n      password: 'PASSWORD_LABEL',\r\n    }\r\n  }\r\n  reset?: AuthResetPasswordConfiguration = {\r\n    title: 'RESET_PASSWORD_FORM_TITLE',\r\n    actionLabel: 'SEND_BUTTON',\r\n    fieldLabels: {\r\n      email: 'EMAIL_LABEL',\r\n    }\r\n  }\r\n  register?: AuthRegisterConfiguration = {\r\n    title: 'REGISTRATION_FORM_TITLE',\r\n    actionLabel: 'REGISTER_BUTTON',\r\n    fieldLabels: {\r\n      name: 'NAME_LABEL',\r\n      email: 'EMAIL_LABEL',\r\n      password: 'PASSWORD_LABEL',\r\n      password2: 'PASSWORD2_LABEL',\r\n    }\r\n  }\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {BehaviorSubject, Observable, Subject} from \"rxjs\";\r\nimport {ApiService, Response} from \"@adjai/ngx-library/src/lib/api\";\r\nimport {Router} from \"@angular/router\";\r\nimport {SystemLoaderService} from \"@adjai/ngx-library/src/lib/elements\";\r\nimport {MessageButtonsPresets, MessageService, MessageTypes} from \"@adjai/ngx-library/src/lib/message\";\r\nimport {tap} from \"rxjs/operators\";\r\nimport {AuthConfiguration} from \"./auth-configuration\";\r\nimport {LanguageService} from \"@adjai/ngx-library/src/lib/language\";\r\n\r\nexport enum RegistrationFormFieldTypes {\r\n  input,\r\n  text,\r\n  select,\r\n  hidden,\r\n}\r\n\r\nexport interface RegistrationFormField {\r\n  name: string\r\n  label: string\r\n  type: RegistrationFormFieldTypes\r\n  required?: boolean\r\n  options?: string[]\r\n  value?: string\r\n}\r\n\r\nexport interface UserRegisterInfo {\r\n  name: string,\r\n  email: string,\r\n  password: string,\r\n  roles: string[],\r\n  network?: string,\r\n  network_user_id?: string,\r\n  meta?: {[key: string]: string},\r\n}\r\n\r\nexport interface User {\r\n  id: number | null,\r\n  email: string,\r\n  name?: string,\r\n  roles: string[],\r\n  deleted_time: null | string,\r\n  blocked_time: null | string,\r\n  registration_incomplete?: boolean\r\n}\r\n\r\n/*export interface UserMeta {\r\n  id?: number,\r\n  name: string,\r\n  value: string,\r\n}*/\r\n\r\nexport interface AuthResponse {\r\n  token: string,\r\n  refreshToken: string,\r\n  tokenExpire: number,\r\n  user: User,\r\n}\r\n\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\nexport class AuthService {\r\n  refreshTokenNotFound$ = new Subject<void>()\r\n  sessionChanged$ = new BehaviorSubject<AuthResponse | null>(null)\r\n\r\n  constructor(\r\n    private apiService: ApiService,\r\n    private router: Router,\r\n    public configuration: AuthConfiguration,\r\n    private systemLoaderService: SystemLoaderService,\r\n    private messageService: MessageService,\r\n  ) {\r\n\r\n  }\r\n\r\n  public goHome() {\r\n    const gotoUrl = this.isLoggedIn() ? this.configuration.loggedInPage : this.configuration.loginPage\r\n    if (this.router.url === gotoUrl) {\r\n      window.location.reload()\r\n    } else {\r\n      this.router.navigate([gotoUrl])\r\n    }\r\n  }\r\n\r\n  auth$(email: string, password: string): Observable<AuthResponse> {\r\n    return this.apiService.execute<AuthResponse>('user', 'auth', {email, password}, 'post', errorResponse => {\r\n      this.systemLoaderService.updateLoaderState(false)\r\n      this.messageService.show({\r\n        text: LanguageService.text(LanguageService.text(errorResponse.message, 'auth'), 'auth'),\r\n        type: MessageTypes.error,\r\n      }, MessageButtonsPresets.close)\r\n    }, this.configuration.authApiBaseUrl)\r\n      .pipe(tap(this.saveSession.bind(this)))\r\n  }\r\n\r\n  register$(userRegisterInfo: UserRegisterInfo): Observable<void> {\r\n    return this.apiService.execute<void>('user', 'register', {userRegisterInfo}, 'post', errorResponse => {\r\n      this.systemLoaderService.updateLoaderState(false)\r\n      this.messageService.show({\r\n        text: LanguageService.text(errorResponse.message, 'auth'),\r\n        type: MessageTypes.error,\r\n      }, MessageButtonsPresets.close)\r\n    }, this.configuration.authApiBaseUrl)\r\n  }\r\n\r\n  logout() {\r\n    this.clearSession()\r\n    if (this.router.url === this.configuration.loggedOutPage) {\r\n      window.location.reload()\r\n    } else {\r\n      this.router.navigate([this.configuration.loggedOutPage])\r\n    }\r\n  }\r\n\r\n  saveSession(response: AuthResponse): void {\r\n    localStorage.setItem('token', response.token)\r\n    localStorage.setItem('refreshToken', response.refreshToken)\r\n    localStorage.setItem('tokenExpire', response.tokenExpire.toString())\r\n    localStorage.setItem('user', JSON.stringify(response.user))\r\n    this.sessionChanged$.next(response)\r\n  }\r\n\r\n  updateSessionSection(name: string, value: string) {\r\n    localStorage.setItem(name, value)\r\n    this.sessionChanged$.next(this.getFullSession())\r\n  }\r\n\r\n  clearSession(): void {\r\n    this.sessionChanged$.next(null)\r\n    const removeItemKeys = ['token', 'refreshToken', 'tokenExpire', 'user']\r\n    removeItemKeys.forEach(removeItemKey => {\r\n      localStorage.removeItem(removeItemKey)\r\n    })\r\n  }\r\n\r\n  isLoggedIn(): boolean {\r\n    return this.getSession('token') !== null\r\n  }\r\n\r\n  getToken(): string | null {\r\n    return this.getSession('token')\r\n  }\r\n\r\n  getRefreshToken(): string | null {\r\n    return this.getSession('refreshToken')\r\n  }\r\n\r\n  getSession(name: string = '', defaultValue = null): string | null {\r\n    return localStorage.getItem(name) ?? defaultValue\r\n  }\r\n\r\n  getFullSession(): AuthResponse | null {\r\n    return this.isLoggedIn() ? {\r\n      token: this.getSession('token') as string,\r\n      refreshToken: this.getSession('refreshToken') as string,\r\n      tokenExpire: +this.getSession('tokenExpire')! as number,\r\n      user: JSON.parse(this.getSession('user')!) as User,\r\n    } : null\r\n  }\r\n\r\n  refreshToken$(): Observable<AuthResponse> {\r\n    //const refreshToken = null\r\n    const refreshToken = this.getRefreshToken()\r\n    //console.log(refreshToken)\r\n    return this.apiService.execute<AuthResponse>('user', 'refresh-token', {refreshToken: refreshToken}, 'post', response => {\r\n      if (response.message === 'refresh_token_not_found') {\r\n        this.refreshTokenNotFound$.next()\r\n        this.clearSession()\r\n        this.goHome()\r\n        this.messageService.show({\r\n          text: LanguageService.text('NEED_LOGIN_AGAIN_MESSAGE', 'auth'),\r\n        }, MessageButtonsPresets.close)\r\n        this.systemLoaderService.updateLoaderState(false)\r\n      }\r\n    }, this.configuration.authApiBaseUrl)\r\n      .pipe(\r\n        tap(this.saveSession.bind(this)),\r\n      )\r\n  }\r\n\r\n  getUser(): null | User {\r\n    const user = this.getSession('user')\r\n    return user === null ? null : JSON.parse(user)\r\n  }\r\n\r\n  getUserId(): number | null {\r\n    const user = this.getUser()\r\n    return user === null ? null : user.id\r\n  }\r\n\r\n  hasAllRoles(roles: string[]) {\r\n    return roles.every(role => this.hasRole(role))\r\n  }\r\n\r\n  hasAnyRole(roles: string[]) {\r\n    return roles.some(role => this.hasRole(role))\r\n  }\r\n\r\n  hasRole(role: string) {\r\n    const user = this.getUser()\r\n    return user !== null && user.roles.includes(role)\r\n  }\r\n\r\n  getFirstRole() {\r\n    const user = this.getUser()\r\n    return user !== null && user.roles.length ? user.roles[0] : null\r\n  }\r\n\r\n  requestResetPassword$(email: string): Observable<void> {\r\n    return this.apiService.execute('user', 'request-reset-password', {email}, 'post', errorResponse => {\r\n      this.systemLoaderService.updateLoaderState(false)\r\n      this.messageService.show({\r\n        text: LanguageService.text(errorResponse.message, 'auth'),\r\n        type: MessageTypes.error,\r\n      }, MessageButtonsPresets.close)\r\n    }, this.configuration.authApiBaseUrl)\r\n  }\r\n\r\n  resetPassword$(password: string, code: string, userId: number, errorCallback: (response: Response<void>) => void): Observable<void> {\r\n    return this.apiService.execute('user', 'reset-password', {password, code, userId}, 'post', errorCallback, this.configuration.authApiBaseUrl)\r\n  }\r\n\r\n  activate$(id: number, activationCode: string, errorCallback: null | ((response: Response<any>) => void) = null): Observable<AuthResponse> {\r\n    return this.apiService.execute<any>('user', 'activate', {id, activationCode}, 'post', errorCallback, this.configuration.authApiBaseUrl)\r\n  }\r\n\r\n  checkResetPassword$(params: any, callback: (response: Response<any>) => void): Observable<Response<any>> {\r\n    return this.apiService.execute('user', 'check-reset-password', params, 'post', callback, this.configuration.authApiBaseUrl)\r\n  }\r\n\r\n  goAuthPage() {\r\n    this.router.navigate([this.configuration.loginPage])\r\n  }\r\n}\r\n","import {Injectable, NgZone, Renderer2, RendererFactory2} from '@angular/core';\nimport {tap} from \"rxjs/operators\";\nimport {AuthConfiguration} from \"./auth-configuration\";\nimport {Observable, of} from \"rxjs\";\nimport {AuthResponse, AuthService} from \"./auth.service\";\nimport {ApiService} from \"@adjai/ngx-library/src/lib/api\";\n\nimport {Md5} from 'ts-md5';\n\nexport enum Oauth2Providers {\n  VK = 'VK',\n  Google = 'Google',\n  Ok = 'Ok',\n  MailRu = 'MailRu',\n}\n\ninterface OauthProviderOptions {\n  requestAccessTokenUri: string,\n  requestUserInfoUri: string,\n  scope: string[],\n}\n\nexport interface OauthProviderSecretOptions {\n  clientId: string,\n  publicKey?: string,\n  clientSecret?: string,\n}\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class Oauth2Service {\n  private renderer: Renderer2\n\n  static oauth2ProvidersOptions: {[key in Oauth2Providers]?: OauthProviderOptions} = {\n    [Oauth2Providers.VK]: {\n      requestAccessTokenUri: 'https://oauth.vk.com/authorize',\n      requestUserInfoUri: 'https://api.vk.com/method/users.get?user_ids={user_id}&fields=city,country&access_token={access_token}&v=5.131',\n      scope: [(1<<16 | 1<<22).toString()],\n    },\n    [Oauth2Providers.Google]: {\n      requestAccessTokenUri: 'https://accounts.google.com/o/oauth2/v2/auth',\n      requestUserInfoUri: 'https://www.googleapis.com/oauth2/v3/userinfo?access_token={access_token}',\n      scope: ['email', 'profile'],\n    },\n    [Oauth2Providers.MailRu]: {\n      requestAccessTokenUri: 'https://connect.mail.ru/oauth/authorize',\n      requestUserInfoUri: 'http://www.appsmail.ru/platform/api?method=users.getInfo&secure=1&app_id={clientId}&session_key={access_token}&sig={signature}',\n      scope: [],\n    },\n    [Oauth2Providers.Ok]: {\n      requestAccessTokenUri: 'https://connect.ok.ru/oauth/authorize',\n      requestUserInfoUri: 'https://api.ok.ru/api/users/getCurrentUser?application_key={publicKey}&access_token={access_token}&fields=UID,LOCALE,GENDER,AGE,BIRTHDAY,HAS_EMAIL,PIC_1,PIC_2,PIC1024X768,EMAIL,LOCATION,PIC_FULL,PIC_BASE,URL_PROFILE,FIRST_NAME,LAST_NAME&sig={signature}',\n      scope: ['VALUABLE_ACCESS'],\n    },\n  }\n\n  private openedAuthWindow: Window | null | undefined\n\n  constructor(\n    private configuration: AuthConfiguration,\n    private rendererFactory: RendererFactory2,\n    private apiService: ApiService,\n    private authService: AuthService,\n    private ngZone: NgZone,\n  ) {\n    this.renderer = rendererFactory.createRenderer(null, null)\n  }\n\n  waitForAccessCode$(): Observable<AuthResponse> {\n    return new Observable(subscribe => {\n      let ifMessageReceived = false\n      const messageListener = this.renderer.listen('window', 'message', (event: MessageEvent) => {\n        if (event.data.type) {\n          if (event.data.type === 'access_token') {\n            ifMessageReceived = true\n            const provider = event.data.provider as Oauth2Providers\n            if (provider === Oauth2Providers.MailRu) {\n              let requestUserInfoUri = event.data.requestUserInfoUri\n              requestUserInfoUri = requestUserInfoUri.replace('{access_token}', event.data.access_token)\n              requestUserInfoUri = requestUserInfoUri.replace('{clientId}', event.data.clientId)\n              const requestUserInfoUriParams: string[] = requestUserInfoUri.substr(requestUserInfoUri.indexOf('?') + 1).split('&')\n                .filter((item: string) => item.indexOf('sig=') !== 0).sort()\n              const signature = Md5.hashStr(requestUserInfoUriParams.join('') + this.configuration.providers![provider]?.clientSecret)\n              requestUserInfoUri = requestUserInfoUri.replace('{signature}', signature)\n              event.data.requestUserInfoUri = requestUserInfoUri\n            }\n            this.apiService.execute<AuthResponse>('user', 'socialAuth', event.data, 'post', response => {\n              subscribe.complete()\n            }, this.authService.configuration.authApiBaseUrl).subscribe(response => {\n              messageListener() // This function removes listener\n              subscribe.next(response)\n              subscribe.complete()\n            })\n          } else if (!ifMessageReceived && event.data.type === 'access_error') {\n            subscribe.complete()\n          }\n        }\n      })\n    })\n  }\n\n  auth$(provider: Oauth2Providers, params: {[key: string]: string} = {}, processSessionCallback = this.authService.saveSession.bind(this.authService)): Observable<AuthResponse> {\n    if (Oauth2Service.oauth2ProvidersOptions[provider]) {\n      if (provider === Oauth2Providers.Google && location.protocol === 'chrome-extension:') {\n        return new Observable(chromeExtGoogleAuthObservable => {\n          chrome.identity.clearAllCachedAuthTokens()\n          chrome.identity.getAuthToken({interactive: true}, (token) => {\n            if (token) {\n              this.apiService.execute<AuthResponse>('user', 'socialAuth', {\n                access_token: token,\n                provider: \"Google\",\n                requestUserInfoUri: \"https:\\/\\/www.googleapis.com\\/oauth2\\/v3\\/userinfo?access_token={access_token}\",\n              }, 'post', null, this.authService.configuration.authApiBaseUrl).subscribe(response => {\n                this.ngZone.run(() => {\n                  processSessionCallback(response)\n                  chromeExtGoogleAuthObservable.next(response)\n                })\n              })\n            } else {\n              chromeExtGoogleAuthObservable.complete()\n            }\n          })\n        })\n      }\n      if (provider === Oauth2Providers.MailRu && !this.configuration.providers![provider]?.clientSecret) {\n        throw new Error('\"clientSecret\" option should be defined for MailRu provider while importing Oauth2Module in main module')\n      }\n      const providerOptions = Oauth2Service.oauth2ProvidersOptions[provider]\n      const clientId = this.configuration.providers![provider]?.clientId\n      let requestUserInfoUri = providerOptions!.requestUserInfoUri;\n      const state = Object.assign(params, {\n        provider: provider,\n        requestUserInfoUri: requestUserInfoUri,\n        clientId: clientId,\n        publicKey: this.configuration.providers![provider]?.publicKey,\n      })\n      const stateString = btoa(unescape(encodeURIComponent(JSON.stringify(state))))\n      const redirectUrl = `${location.protocol}//${location.host}/auth/oauth2/redirect`\n\n\n      let scopeString = providerOptions!.scope.join(' ')\n      if (provider === Oauth2Providers.Ok) {\n        scopeString = providerOptions!.scope.join(';')\n      }\n      const authUrl = `${providerOptions!.requestAccessTokenUri}?client_id=${clientId}&display=popup&redirect_uri=` + encodeURIComponent(redirectUrl) + `&response_type=token&scope=${scopeString}&state=${stateString}`\n      const width = 600\n      const height = 400\n      const left = (window.screen.width - width) / 2\n      const top = (window.screen.height - height) / 2\n      this.openedAuthWindow = window.open(authUrl, 'ngx-library social authorization', `width=${width}, height=${height}, left=${left}, top=${top}`)\n      if (this.openedAuthWindow) {\n        const timer = setInterval(() => {\n          if (this.openedAuthWindow?.closed) {\n            clearInterval(timer)\n            window.postMessage({\n              type: 'access_error'\n            })\n          }\n        }, 500)\n      }\n      return this.waitForAccessCode$()\n        .pipe(tap(processSessionCallback))\n    } else {\n      throw new Error('Заданный провайдер авторизации в соцсетях не настроен')\n    }\n  }\n\n}\n","import {Component, Input, OnInit} from \"@angular/core\";\r\nimport {Oauth2Providers, Oauth2Service} from \"../oauth2.service\";\r\nimport {ActivatedRoute, Router} from \"@angular/router\";\r\nimport {AuthConfiguration} from \"../auth-configuration\";\r\nimport {AuthService} from \"../auth.service\";\r\nimport {SystemLoaderService} from \"@adjai/ngx-library/src/lib/elements\";\r\nimport {catchError, finalize} from \"rxjs/operators\";\r\nimport {LanguageService} from \"@adjai/ngx-library/src/lib/language\";\r\n\r\n@Component({\r\n  selector: 'mx-oauth2-login',\r\n  templateUrl: './oauth2-login.component.html',\r\n  styleUrls: ['./oauth2-login.component.scss'],\r\n})\r\nexport class Oauth2LoginComponent implements OnInit {\r\n  @Input('title') title = LanguageService.text('SOCIAL_AUTH_FORM_TITLE', 'auth')\r\n  @Input('isVertical') isVertical = false\r\n  @Input('isOnlyIcons') isOnlyIcons = false\r\n  @Input('providers') enabledProviders: Oauth2Providers[] | undefined\r\n  private returnUrl: string | undefined\r\n  isFormProcessing = false\r\n  allProviders: typeof Oauth2Providers = Oauth2Providers\r\n  providerOptions: {[key in Oauth2Providers]: {name: string, image: string}} = {\r\n    [Oauth2Providers.Google]: {\r\n      name: 'Google',\r\n      image: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAMAAACelLz8AAACoFBMVEUAAAAAf+z/u4wAie3L2M7/XzwAgOwuqe57xvP/1gAAuDEAfusAeeoAiez/1wD/2QAAjOv/ZEX/dVYAm/8Avm//YEX/4CoAv28vqu8uqO4Gou1JsvAAsWH/eWT/5ZP/c1eRzvgAtzsAfNQAmDIAmib/SR7+Phn/1gAAtkD8QB7/2gAAtT0Anjb/Sx//VC38Pxr/5wAAhuz8Pxr/WyD/3AD/UCUAuEQAoiAAe+oAf+sAnTMAtD3/TSP/PxkAg+sAj+0AmzoAuUf/aFT6SCYAme7/ZkYAl+3/WzcAuFz/7yMAle4AoUH8TjUArB4AvFT/5DIAtz//NQH/QxwAzXgAxGj/3hgAhusAwmn/dFoAn+0Aukv/UzT/2xn/YEsApDIAvVf/40U2r/L/mYD/6FITp/H/YT38Ti4ArFr/4FT/5lUAsTMAvVP7PBoAoUb/dVb/SRoApfD/5mH/SFr/NAX/4mP/fWEkqe7/iW4+svH/clgfqe8AmLz/1osAyHYAynvO4lMAwGPv65b/75n/lHpovvAArin/NQD/ingAxnMAf+sAe+v/1gD/0wAAtz0AeusAtTP/TCD/SRwAfuv/PQwAdeoAsywAliv4MggAcf8Ag+wAg+oAcekAtTwAtDgAnTQAmDMAsyX/TSP5Pxr7Phr/QhL5NQ0ApAH/NAH/zwAAd+sAX+YAtkMAmTv/OC0AsSoAmif/UST+Pxn7PBj3OhX8Nw//QAv3KwP/6wD/4AD/2QAAmgD/KAAAfv4AffQAZ+8Aa+kAf+QAduMAf7kAkJIAs1MAqUQAsDsApDb8RiP/HCEArx3/RRf1NxH/RQ7/LQ0Aqgn/Bgj4LQT3KQP/+QD/2ADQ1wDq0wD/zQB7ygBHuQAAlAD/jAD/TwD/HwD0HAD1FwDaJqn+AAAAiXRSTlMA6gPMAp5rOwTy7uvpx8GtooB2cF1QTD88PDwqJSIVFQ36+fn39fX08u3q6eno5eXl4+Lg393a1NPMycfBwb66ubaurKqppqWkn5ycmZiWlpWTj46Li4qKiomIh4aFhIOAf3l1bWtpZ2djYFlZV1JQT05OTUdHPDs1NDMxLisqJSEcEQ8KCAgHBYsd7iAAAAHoSURBVCjPYoAB+VJBdxtb52hReSYGFCArZLpk8pKJG89MX6ovKIssk6+3fOvECRMmbFy0ePHSbZo5zXAZod2TJyycMPH05C2bNy1etGjpvQiYoUl3lyxcOHHy5ImqapunT990Ysv92HaITNHurRsmTFyuy5qaJ5rGanRx+rYgqCY54wtrN5xd7loO4VayXvKBmsaUvOL22pPnAhFuKm6DMpq0tl++fseJhQETlPT07NhuUMOABcT0dPes8IRyOKqkJNnLJNgl2SWkFBj4e7q7ezKgUgU83IxAACJ4vBj4gDLqYlAptr4uGOizAAwsxQmXmtQJB5YM/ECpnkyY1JQ+IFgJUtBlxxAKtGuFP1SqgpeZmZnX3hAot1KAobCn+8pOk3pkR3MwT+nsnJ3CIMe5c8fVmx7IUpGzuzq7+qQZmBKu3Vh99Fg8QkZ40pRZM/e7cTAwNHIdP9K7YEFALURCJmzGwZkzp8yWBnFEli1Y3ds/1SwqW1w8N8780IxZsyatSoQoDF7W39s7d12/oraO8vxda/buObDKBRrcLCHnp/YCJfvXrZ82f/2ywzP2CSjALGbJ0jjVP2dO75x58+et2XVLSbgFyb114VxTp/bPnTdt2jQV32rUuOloEPFztLZy8E6XaYUKAQCp47yDoZVykAAAAABJRU5ErkJggg==',\r\n    },\r\n    [Oauth2Providers.VK]: {\r\n      name: 'ВКонтакте',\r\n      image: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAMAAACelLz8AAABmFBMVEX///8AesURl+MAecM/pOkDleAQmuQEg8cAfMYAfccAk94AfskVl+MAf8sAdMQYlt8Ai9oAftcAidMAhtEAgs0AgcsKmOMmkNUFg8ZkruMTleAKlOAAitYAiNIAeNEAhc/e6/Y6oeY2nuMNluE1nOAWl+Atl9wAkNsBjtkmlNggjdIAfdIAhM8AfsUAasQAZrwAYrP9/v35+/zn8PjT4/HD2/DF2+oFk98AjdwAhNkAh9gAgNcAg9EWis4TiMwAccwLiMsAZ8EAZMEAc78AX74AZbT1+Pvs8/ni7Pe51u9SrOutzek1oemz0OikyuigxucjneZnruRequJQot8ymt+dwN1prN0Aj90AituLt9oqltoAhdUkjdAAfM0tjMoAb8YAeMUAZ7bt9frv9PnW5/PN3+6s0O2+1+rA2Om50uePvuRgrOOpyOGox+FJoOFRpeBfqd4elNwZktt3sNoMkNmEs9g9l9QZkNRBltIRjdIsj9E1kdAAdc0si8wAdswAaMs+h8MAXcISgL8AX7MAV7MAXbIAWrAATqwifITmAAAByklEQVQoz3WMB1MaURSFDxDF3WWXZZdeliJSpCMSQKRjN3aNGlt67733/O3c55qMzug3d+537px5D3MLl85lYQ7Lg5ZBxlnRXkbYaHRajEajhUzJ6aRIY3GGWeWl/J/hfzuMyMAZfL4TD0QQ4XmrdWSYv8x7yV4y7x1hdwRR69aEzXbVyvuqtglb1cd7ef2OIio/W/V4nsvxyorngWdNjm/Vnqx4HsvxdURTqwBmtUpqnDyzK2tr5NtaZR2x3XdTQMFlS70vAiG1qpWoeq3FY4jJB1coLzVr6THgpvLlKV2LWTkRw07i4wc6ikrzDVWhg+Y0MCWkXvp3kPTXsneoG/+2N027x754kU34lSSSSuKzuUD3Zi9Er+YpzefqfoUqV0D1d7ZBzF6HzlKvrqiqCy5VDezlbuE09zv1QJCqdDodyJrGcMzM10WmzU4wOIpROxFod0tglH7+ecj8ts0qB0PNHW0UAdwQ278fkQuCdA2TIsMRlH59375XftW1d/sb5bvlT6wSjuHsYu5HPn8kiPbDfD/fNzkm0eBOEEROkgwCx4mHkiRxQgsNw5CBZoiGwaIeGmgZLqCFjOkCMtjPmN1mHTcbtx7dmf2/W5BLX/4C/wgAAAAASUVORK5CYII=',\r\n    },\r\n    [Oauth2Providers.Ok]: {\r\n      name: 'Одноклассники',\r\n      image: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAaCAMAAABfE/ZQAAAA51BMVEUAAABWIwA5FQD/fQDfaAClSgD/ewDubgDRYADNXgCbRAD/jAD/egD/jgD/fAD0cQD3cwDqawDnaQD+dwDzcQDnagDJWwDubgDfaAC+VgDUYQDHWgCiSADKXADhaQC5VADDWAC5VACUQACqTAD/gAD9dgD0cgD0cQDxcAD/fwD/gQD9dgDMYQDoawDwbwDmawDpawDhZwD/kgD7dQDUZADGWQDrbgDxdADjagDtcgDHWwDFWgDJXQCNPwCKPQC3UwBcJwBoKwD/fgD/fQD/gAD/ggD/hQD/hwD/kQD/iQD/lQD/iwD/jgDdXtrhAAAAQnRSTlMABQ31uy3vr3pJF/fv7ODQycjCwLyvrKuml4V2bVJOSToqHBLv6NfTysC/vLu4tbW0s7Gtqaiinp6clY5nVU9MNzNIf7pQAAABFklEQVQY0y3O15KDMAyFYQEhyab33rO9915lS7Yx7/88K0L+GS6+M4MAspbDxmFjuIR9r95ppZ17zvmUiFieZJDxW2joiJzC5EvcTBWfxkHcNio9Bqho4mIge1BkTRtYEbo7yOo75BWsSZuTnZtGUwxBzSDPhDPWHMmLH4nSpjQpyT8k77KHkZfBGFRpFIL0V/UaEbWv/sKuSonYGOpvdlocAGznn/MtwMECYGxN70dmUY/tGDyi4WLrolVjg+ihY7VCYmZCpW0bwjfyrOS+Ikcv2QfX5Q6JqVuOIe/RZX6AfZdWhIrPchYSuRSxHDgXBYVEqfS+MrCoXDeAqdAWAOBGhnQKZYvCrKsU7QTC2/oI8kb16/Afx905S51pf/sAAAAASUVORK5CYII=',\r\n    },\r\n    [Oauth2Providers.MailRu]: {\r\n      name: 'Mail.Ru',\r\n      image: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAMAAACelLz8AAACFlBMVEUAAAAAWP0AZP4AZPwAUv0AZ/wAaP4Aef0LhP19vPoAjf0AT/wAXP0AV/0Agv0AefwYif06kfxZp/tgrfxrsvsAeP1msfsAhvx1uvoAgv0AYf0AX/0AU/8AWv8AYPsAXP8AXvsAVv8AXf0AUf8AT/8ATP8AV///nwAASv8ASP8AX/8AQ/8AYf8ASv4AZP3/owAATv8AXO//xQD/tAAAVfwAX/cAXfQAW/L/vAD/sgD/qAAAVez/0QD/zQD/yAD/wAD/tgD/nAAAY/8AYP0AV/MAV/AAYOwAW+wAXdoobMMVcsGDfoziiEj/3QD/uQD/rwD/qwD/lgAAW/kAWfcAYvEAXOgAXuMAW+MAYuIAY98AZ9wAZ9sAYtQrZdAAa8o/ab9LcLZPc65UdaZqhJJ9fY9qiYuGf4iIgYCifnyti2TFhV3OhlutmFimolXGjVSsoFK4klGzm1DClE/HqTf8kxv/4wD/1wD/1AD/zgD/yQD8yAD/mAAAUP4AWfQAT/MAY9sIYdcEYtYkZdIWZdIAZM8abck0ascabcUZcr9Rbr9Fa70ucbg8cLNWbrBaeaFjd6FteZt0d5uHepNyhJGKeI+eeI2AgIeRh3iVh3SSkG6xi2KnmWDQimCgmV+qkF+4kFy+hlyylFmylVXFjVDLlE2woEy7o0PijkO+pELfj0LIojvIpDr/li//lR/1rwD4rgD8rAD/oQDdK6atAAAAGnRSTlMA9fTt6N/amIUiIPHn35KPfn5LPz83KicbGTn7UV8AAAJLSURBVCjPXZJVc9wwFIWVhlPm1pLXlpl2vcwYZuakYWbGMjMzM+M/rLx5ar8nab65M2fuPQCAo3tyqH8oorLzCgDh4E67lyNAhiYwnIXXnrUfgCM77BQFIaXxToHnBYFnrJ9DzcgHe3VHEXkjpXt4enFxdvi8ExEHHfoukMNT0Kap5dPRmpW1WDTqnu8WNQpSeBsIMBqE6vWN5djUzcuVAy+D0dp+kWOh5geuEq1QubZa87FcUURC21t3sM9pGAEXKCwpw60bNU9UEsLnQwgpo4lQh+SKFAGKK9Y/LH9WkdDz4uevqUu8JD5NvBeLWQpQLF8eW28RhMH4WjLkTjzkUWN96DSCRDHC4MqciHri7selpaPJYAXixzxViCGKFmZXB3T0LPZIx5I6FFyQlN66GUxbCn2LVyolvz1+bLPRtPmnzNlpfqG31Fd3pVAcDvkkS8lyG+qSP20pfj7erzrfJEZUmlFu139v0i+ak5hOx7i3Pq6gC7WeoUDgjhlOXTk5Gb6bjsGiU0FPAPNVyaScqjOfy/IPc8lFs0RxjeqC+5Uo8RVzcupdhXBrqeF163G/RoHCphbUXlc7ImKEm5sljAVfqUT7IicM4I+whtAX8oyX8ciivUNiNNaAEbJ5zmCh80bYI49d7ersfdCweYy2QdbgXCAbkVNywpmZcL2Z2pTlhmpLpU+ZpzsgZCmMzlVNVFdP3D+LibEKkAvyM+wOUgYbQ2LQtIRpxppx2L2HADiQRcrGsixk0rAWXvv2fYBQsDvT9h+ZuYcB+AsRzJFQ6cvpTwAAAABJRU5ErkJggg==',\r\n    },\r\n  }\r\n\r\n  constructor(\r\n    private router: Router,\r\n    private oauth2Service: Oauth2Service,\r\n    private authService: AuthService,\r\n    private route: ActivatedRoute,\r\n    private configuration: AuthConfiguration,\r\n    private systemLoaderService: SystemLoaderService,\r\n  ) {\r\n    if (this.enabledProviders === undefined) {\r\n      this.enabledProviders = Object.keys(this.configuration.providers!) as Oauth2Providers[]\r\n    }\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.route.queryParams.subscribe(params => {\r\n      if (params.returnUrl) {\r\n        this.returnUrl = params.returnUrl\r\n      }\r\n    })\r\n  }\r\n\r\n  private redirectAfterAuth() {\r\n    if (this.returnUrl) {\r\n      this.router.navigate([this.returnUrl])\r\n    } else {\r\n      this.authService.goHome()\r\n    }\r\n  }\r\n\r\n  auth(provider: Oauth2Providers) {\r\n    if (!this.isFormProcessing) {\r\n      this.systemLoaderService.updateLoaderState(true, 'oauth2')\r\n      this.oauth2Service.auth$(provider)\r\n        .pipe(\r\n          finalize(() => {\r\n            this.isFormProcessing = false\r\n            this.systemLoaderService.updateLoaderState(false, 'oauth2')\r\n          }),\r\n          catchError(err => {\r\n            return err\r\n          })\r\n        )\r\n        .subscribe(() => {\r\n          this.redirectAfterAuth()\r\n          this.systemLoaderService.updateLoaderState(false, 'oauth2')\r\n        })\r\n    }\r\n  }\r\n}\r\n","<div class=\"section\" [class.vertical]=\"isVertical\" [class.only-icons]=\"isOnlyIcons\">\r\n  <div class=\"title\" *ngIf=\"title\">{{ title }}</div>\r\n  <div class=\"buttons\">\r\n    <button [disabled]=\"isFormProcessing\" *ngFor=\"let provider of enabledProviders\" class=\"custom\" (click)=\"auth(provider)\" title=\"{{ 'SOCIAL_AUTH_WITH_TITLE' | translate: 'auth' }} {{ providerOptions[provider].name }}\">\r\n      <img src=\"{{ providerOptions[provider].image }}\" alt=\"\"/>\r\n      <span class=\"name\">{{ providerOptions[provider].name }}</span>\r\n    </button>\r\n  </div>\r\n</div>\r\n","import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\nimport {UntypedFormControl, UntypedFormGroup, Validators} from \"@angular/forms\";\nimport {SystemLoaderService} from \"@adjai/ngx-library/src/lib/elements\";\nimport {AuthService} from \"../auth.service\";\nimport {MessageService} from \"@adjai/ngx-library/src/lib/message\";\nimport {AuthConfiguration} from \"../auth-configuration\";\nimport {finalize} from \"rxjs/operators\";\n\n@Component({\n  selector: 'mx-login',\n  templateUrl: './login.component.html',\n  styleUrls: ['./login.component.scss']\n})\nexport class LoginComponent implements OnInit {\n  isFormProcessing = false\n  form = new UntypedFormGroup({\n    email: new UntypedFormControl('', [Validators.required, Validators.email]),\n    password: new UntypedFormControl('', Validators.required)\n  })\n\n  constructor(\n    private authService: AuthService,\n    private systemLoaderService: SystemLoaderService,\n    public configuration: AuthConfiguration\n  ) {\n    if (this.authService.isLoggedIn()) {\n      this.authService.goHome()\n    }\n  }\n\n  ngOnInit(): void {\n\n  }\n\n  submit() {\n    if (this.form.valid && !this.isFormProcessing) {\n      this.isFormProcessing = true\n      this.systemLoaderService.updateLoaderState(true)\n      this.authService.auth$(this.form.value.email, this.form.value.password)\n        .pipe(finalize(() => {\n          this.isFormProcessing = false\n        }))\n        .subscribe(response => {\n        this.systemLoaderService.updateLoaderState(false)\n        this.authService.goHome()\n      })\n    }\n  }\n\n}\n","<div class=\"section\">\n  <h2>{{ configuration.login!.title! | translate: 'auth' }}</h2>\n  <form [formGroup]=\"form\">\n    <div class=\"form-row single-element-row\">\n      <label *ngIf=\"configuration.ifShowFieldLabels\">{{ configuration.login!.fieldLabels!.email | translate: 'auth' }}</label>\n      <input type=\"email\" formControlName=\"email\" [placeholder]=\"configuration.ifShowFieldLabels ? '' : configuration.login!.fieldLabels!.email | translate: 'auth'\"/>\n    </div>\n    <div class=\"form-row single-element-row\">\n      <label *ngIf=\"configuration.ifShowFieldLabels\">{{ configuration.login!.fieldLabels!.password  | translate: 'auth' }}</label>\n      <input type=\"password\" formControlName=\"password\" [placeholder]=\"configuration.ifShowFieldLabels ? '' : configuration.login!.fieldLabels!.password | translate: 'auth'\"/>\n    </div>\n    <div class=\"actions form-row\">\n      <button type=\"submit\" (click)=\"submit()\" [disabled]=\"form.invalid || isFormProcessing\">{{ configuration.login!.actionLabel | translate: 'auth' }}</button>\n    </div>\n  </form>\n  <div class=\"extra-actions\">\n    <a [routerLink]=\"['/auth/register']\">{{ configuration.actionLabels!.reg | translate: 'auth' }}</a>\n    <a [routerLink]=\"['/auth/reset-password-request']\">{{ configuration.actionLabels!.reset | translate: 'auth' }}</a>\n  </div>\n  <mx-oauth2-login *ngIf=\"configuration.providers | mxObjectLength\"></mx-oauth2-login>\n</div>\n","import {HttpEvent, HttpEventType, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse} from \"@angular/common/http\";\r\nimport {BehaviorSubject, Observable, of} from \"rxjs\";\r\nimport {Injectable} from \"@angular/core\";\r\nimport {filter, mergeMap, switchMap, take, tap} from \"rxjs/operators\";\r\nimport {AuthResponse, AuthService} from \"./auth.service\";\r\nimport {MessageButtonsPresets, MessageService} from \"@adjai/ngx-library/src/lib/message\";\r\nimport {LocationStrategy} from \"@angular/common\";\r\nimport {LanguageService} from \"@adjai/ngx-library/src/lib/language\";\r\n\r\n@Injectable()\r\nexport class AuthTokenInterceptor implements HttpInterceptor {\r\n  private isRefreshingToken = false\r\n  private refreshToken$ = new BehaviorSubject<AuthResponse|null>(null)\r\n\r\n  constructor(\r\n    private authService: AuthService,\r\n    private messageService: MessageService,\r\n    private locationStrategy: LocationStrategy,\r\n  ) {\r\n    this.authService.refreshTokenNotFound$.subscribe(() => {\r\n      this.isRefreshingToken = false\r\n      this.refreshToken$.next(null)\r\n    })\r\n  }\r\n\r\n  intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n    const frontendBaseUrl = location.origin + this.locationStrategy.getBaseHref()\r\n    if (this.authService.isLoggedIn()) {\r\n      const token = this.authService.getToken()\r\n      const reqCloned = req.clone({\r\n        headers: req.headers.append('Authorization', `Bearer ${token}`).append('Frontend-Base-Url', frontendBaseUrl)\r\n      })\r\n      if (!req.body.refreshToken && this.isRefreshingToken) {\r\n        return this.refreshToken$\r\n          .pipe(\r\n            filter(value => value !== null),\r\n            take(1),\r\n            switchMap(() => {\r\n              const updatedToken = this.authService.getToken()\r\n              const reqClonedUpdated = req.clone({\r\n                headers: req.headers.append('Authorization', `Bearer ${updatedToken}`).append('Frontend-Base-Url', frontendBaseUrl)\r\n              })\r\n              return next.handle(reqClonedUpdated)\r\n            })\r\n          )\r\n      } else {\r\n        return next.handle(reqCloned)\r\n          .pipe(\r\n            mergeMap(event => {\r\n              if (event.type === HttpEventType.Response) {\r\n                if ((event as HttpResponse<any>).body.message === 'expired_token') {\r\n                  if (this.authService.isLoggedIn()) {\r\n                    return this.getRefreshToken$()\r\n                      .pipe(\r\n                        mergeMap(refreshResponse => {\r\n                          const updatedToken = this.authService.getToken()\r\n                          const reqClonedUpdated = req.clone({\r\n                            headers: req.headers.append('Authorization', `Bearer ${updatedToken}`).append('Frontend-Base-Url', frontendBaseUrl)\r\n                          })\r\n                          return next.handle(reqClonedUpdated)\r\n                        })\r\n                      )\r\n                  } else {\r\n                    return of(event)\r\n                  }\r\n\r\n                } else if ((event as HttpResponse<any>).body.message === 'wrong_token') {\r\n                  this.authService.clearSession()\r\n                  this.authService.goHome()\r\n                  this.messageService.show({\r\n                    text: LanguageService.text('NEED_LOGIN_AGAIN_MESSAGE', 'auth'),\r\n                  }, MessageButtonsPresets.close)\r\n                  return of(event);\r\n                } else {\r\n                  return of(event);\r\n                }\r\n              } else {\r\n                return of(event)\r\n              }\r\n            })\r\n          )\r\n      }\r\n    } else {\r\n      const reqCloned = req.clone({\r\n        headers: req.headers.append('Frontend-Base-Url', frontendBaseUrl)\r\n      })\r\n      return next.handle(reqCloned)\r\n    }\r\n  }\r\n\r\n  private getRefreshToken$(): Observable<AuthResponse|null> {\r\n    if (!this.isRefreshingToken) {\r\n      this.isRefreshingToken = true\r\n      this.refreshToken$.next(null)\r\n      return this.authService.refreshToken$()\r\n        .pipe(\r\n          tap(refreshResponse => {\r\n            this.refreshToken$.next(refreshResponse)\r\n            this.isRefreshingToken = false\r\n          })\r\n        )\r\n    } else {\r\n      return this.refreshToken$.pipe(filter(value => value !== null), take(1))\r\n    }\r\n  }\r\n}\r\n","import {Component, Input, OnInit} from '@angular/core';\r\nimport {UntypedFormControl, UntypedFormGroup, ValidatorFn, Validators} from \"@angular/forms\";\r\nimport {CustomValidators} from \"@adjai/ngx-library/src/lib/mix\";\r\nimport {AuthService, RegistrationFormField, RegistrationFormFieldTypes} from \"../auth.service\";\r\nimport {AuthConfiguration} from \"../auth-configuration\";\r\nimport {MessageService} from \"@adjai/ngx-library/src/lib/message\";\r\nimport {finalize} from \"rxjs/operators\";\r\nimport {LanguageService} from \"@adjai/ngx-library/src/lib/language\";\r\n\r\n// todo реализовать возможность добавлять произвольные поля на входе компонента\r\n\r\n@Component({\r\n  selector: 'mx-register',\r\n  templateUrl: './register.component.html',\r\n  styleUrls: ['./register.component.scss']\r\n})\r\nexport class RegisterComponent implements OnInit {\r\n  @Input() fields: RegistrationFormField[] = []\r\n  @Input() role = ''\r\n  isFormProcessing = false\r\n  allFields: RegistrationFormField[] = []\r\n  ifNameRequired = false\r\n  formFieldTypes = RegistrationFormFieldTypes\r\n\r\n  form = new UntypedFormGroup({\r\n    email: new UntypedFormControl('', [Validators.required, Validators.email]),\r\n    passwords: new UntypedFormGroup({\r\n      password: new UntypedFormControl(null, Validators.required),\r\n      password2: new UntypedFormControl(null, Validators.required),\r\n    }, CustomValidators.childrenControlsAreEqual('Введенные пароли должны совпадать')),\r\n  })\r\n\r\n  constructor(\r\n    private authService: AuthService,\r\n    public configuration: AuthConfiguration,\r\n    private messageService: MessageService,\r\n  ) { }\r\n\r\n  ngOnInit(): void {\r\n    if (!this.configuration.ifProcessQuickRegistration) {\r\n      if (this.configuration.ifNameRequired) {\r\n        this.form.addControl('name', new UntypedFormControl(null, Validators.required))\r\n        this.ifNameRequired = true\r\n      }\r\n      this.allFields = (this.configuration.registrationFormFields ?? []).concat(this.fields)\r\n      this.allFields.forEach(field => {\r\n        const validators: ValidatorFn[] = []\r\n        if (field.required) {\r\n          validators.push(Validators.required)\r\n        }\r\n        this.form.addControl(field.name, new UntypedFormControl(field.value, validators))\r\n      })\r\n    }\r\n\r\n    /*this.form.patchValue({\r\n      email: 'user1@mxsite.ru',\r\n      passwords: {\r\n        password: 'malina',\r\n        password2: 'malina',\r\n      }\r\n    })*/\r\n  }\r\n\r\n  submit() {\r\n    if (this.form.valid && !this.isFormProcessing) {\r\n      this.isFormProcessing = true\r\n      const meta: {[key: string]: string} = {}\r\n      const ifAnyRegistrationFieldRequired = this.configuration.registrationFormFields && !!this.configuration.registrationFormFields.filter(field => field.required).length\r\n      const ifNeedRegistrationComplete = this.configuration.ifProcessQuickRegistration && (this.ifNameRequired || ifAnyRegistrationFieldRequired)\r\n      if (!this.configuration.ifProcessQuickRegistration) {\r\n        this.allFields.forEach(field => {\r\n          meta[field.name] = this.form.get(field.name)?.value\r\n        })\r\n      }\r\n      if (ifNeedRegistrationComplete) {\r\n        meta.__registration_incomplete = '1'\r\n      }\r\n      this.authService.register$({\r\n        name: this.form.value.name ?? '',\r\n        email: this.form.value.email,\r\n        password: this.form.value.passwords.password,\r\n        roles: [this.role],\r\n        meta,\r\n      })\r\n        .pipe(finalize(() => {\r\n        this.isFormProcessing = false\r\n      }))\r\n        .subscribe(() => {\r\n        this.messageService.info(LanguageService.text('ACTIVATION_LINK_SENT_MESSAGE', 'auth'))\r\n          this.authService.goHome()\r\n      })\r\n    }\r\n  }\r\n\r\n}\r\n","<div class=\"section\">\n  <h2>{{ configuration.register!.title! | translate: 'auth' }}</h2>\n\n  <form [formGroup]=\"form\" (submit)=\"submit()\">\n    <div class=\"form-row single-element-row\" *ngIf=\"ifNameRequired\">\n      <label *ngIf=\"configuration.ifShowFieldLabels\">{{ configuration.register!.fieldLabels!.name | translate: 'auth' }}</label>\n      <input type=\"text\" formControlName=\"name\" [placeholder]=\"configuration.ifShowFieldLabels ? '' : configuration.register!.fieldLabels!.name | translate: 'auth'\"/>\n    </div>\n    <div class=\"form-row single-element-row\">\n      <label *ngIf=\"configuration.ifShowFieldLabels\">{{ configuration.register!.fieldLabels!.email | translate: 'auth' }}</label>\n      <input type=\"email\" formControlName=\"email\" [placeholder]=\"configuration.ifShowFieldLabels ? '' : configuration.register!.fieldLabels!.email | translate: 'auth'\"/>\n    </div>\n\n    <div formGroupName=\"passwords\">\n      <div class=\"form-row single-element-row\">\n        <label *ngIf=\"configuration.ifShowFieldLabels\">{{ configuration.register!.fieldLabels!.password | translate: 'auth' }}</label>\n        <input type=\"password\" formControlName=\"password\" [placeholder]=\"configuration.ifShowFieldLabels ? '' : configuration.register!.fieldLabels!.password | translate: 'auth'\"/>\n      </div>\n      <div class=\"form-row single-element-row\">\n        <label *ngIf=\"configuration.ifShowFieldLabels\">{{ configuration.register!.fieldLabels!.password2 | translate: 'auth' }}</label>\n        <input type=\"password\" formControlName=\"password2\" [placeholder]=\"configuration.ifShowFieldLabels ? '' : configuration.register!.fieldLabels!.password2 | translate: 'auth'\"/>\n      </div>\n    </div>\n\n    <div class=\"control\" *ngFor=\"let field of allFields\">\n      <ng-container [ngSwitch]=\"field.type\">\n        <div class=\"form-row single-element-row\">\n          <label *ngIf=\"configuration.ifShowFieldLabels\">{{ field.label | translate: 'auth' }}</label>\n          <input *ngSwitchCase=\"formFieldTypes.input\" type=\"text\" [formControlName]=\"field.name\" [placeholder]=\"configuration.ifShowFieldLabels ? '' : field.label | translate: 'auth'\"/>\n          <input *ngSwitchCase=\"formFieldTypes.hidden\" type=\"hidden\" [formControlName]=\"field.name\" [placeholder]=\"configuration.ifShowFieldLabels ? '' : field.label | translate: 'auth'\"/>\n          <textarea *ngSwitchCase=\"formFieldTypes.text\" [formControlName]=\"field.name\" [placeholder]=\"configuration.ifShowFieldLabels ? '' : field.label | translate: 'auth'\"></textarea>\n        </div>\n      </ng-container>\n    </div>\n    <div class=\"form-row\">\n      <button type=\"submit\" [disabled]=\"form.invalid || isFormProcessing\">{{ configuration.register!.actionLabel | translate: 'auth' }}</button>\n    </div>\n  </form>\n\n  <div class=\"extra-actions\">\n    <a [routerLink]=\"['/auth']\">{{ configuration.actionLabels!.auth | translate: 'auth' }}</a>\n  </div>\n\n</div>\n","import { Component, OnInit } from '@angular/core';\nimport {ActivatedRoute, Route, Router} from \"@angular/router\";\nimport {AuthService} from \"../auth.service\";\nimport {MessageService} from \"@adjai/ngx-library/src/lib/message\";\nimport {AuthConfiguration} from \"../auth-configuration\";\nimport {LanguageService} from \"@adjai/ngx-library/src/lib/language\";\n\n@Component({\n  selector: 'mx-activation',\n  templateUrl: './activation.component.html',\n  styleUrls: ['./activation.component.scss']\n})\nexport class ActivationComponent implements OnInit {\n  errorMessage = ''\n\n  constructor(\n    private activatedRoute: ActivatedRoute,\n    private authService: AuthService,\n    private messageService: MessageService,\n    public configuration: AuthConfiguration,\n  ) { }\n\n  ngOnInit(): void {\n    //console.log(this.route)\n    this.activatedRoute.params.subscribe(params => {\n      this.authService.activate$(params.userId, params.activationCode, response => {\n        this.errorMessage = response.message\n      })\n        .subscribe(response => {\n          this.messageService.info(LanguageService.text('ACTIVATION_COMPLETED_MESSAGE', 'auth'))\n          this.authService.saveSession(response)\n          this.authService.goHome()\n        })\n    })\n  }\n\n}\n","<div class=\"section extra-small-screen align-center\" *ngIf=\"errorMessage\">\n  <p class=\"error-text\">{{ errorMessage | translate: 'auth' }}</p>\n  <div class=\"extra-actions\">\n    <a [routerLink]=\"['/auth']\">{{ configuration.actionLabels!.auth | translate: 'auth' }}</a>\n    <a [routerLink]=\"['/auth/register']\">{{ configuration.actionLabels!.reg | translate: 'auth' }}</a>\n  </div>\n</div>\n","import { Component, OnInit } from '@angular/core';\r\nimport {UntypedFormControl, UntypedFormGroup, Validators} from \"@angular/forms\";\r\nimport {mergeMap, tap} from \"rxjs/operators\";\r\nimport {ActivatedRoute} from \"@angular/router\";\r\nimport {MessageService} from \"@adjai/ngx-library/src/lib/message\";\r\nimport {AuthService} from \"../auth.service\";\r\nimport {AuthConfiguration} from \"../auth-configuration\";\r\nimport {LanguageService} from \"@adjai/ngx-library/src/lib/language\";\r\n\r\n// todo сделать ввод пароля дважды (два поля)\r\n\r\n@Component({\r\n  selector: 'mx-reset-password',\r\n  templateUrl: './reset-password.component.html',\r\n  styleUrls: ['./reset-password.component.scss']\r\n})\r\nexport class ResetPasswordComponent implements OnInit {\r\n  isCorrectCode!: boolean\r\n  incorrectCodeMessage = ''\r\n\r\n  form = new UntypedFormGroup({\r\n    password: new UntypedFormControl(null, Validators.required),\r\n    userId: new UntypedFormControl(null, Validators.required),\r\n    code: new UntypedFormControl(null, Validators.required),\r\n  })\r\n\r\n  constructor(\r\n    private authService: AuthService,\r\n    private activatedRoute: ActivatedRoute,\r\n    private messageService: MessageService,\r\n    public configuration: AuthConfiguration,\r\n  ) { }\r\n\r\n  ngOnInit(): void {\r\n\r\n    this.activatedRoute.params.pipe(\r\n      tap(params => {\r\n        this.form.patchValue({\r\n          userId: params.id,\r\n          code: params.code,\r\n        })\r\n      }),\r\n      mergeMap(params => this.authService.checkResetPassword$(params, response => {\r\n        this.isCorrectCode = false\r\n        this.incorrectCodeMessage = response.message\r\n      })),\r\n    ).subscribe(response => {\r\n      this.isCorrectCode = true\r\n    })\r\n\r\n  }\r\n\r\n  submit(): void {\r\n    if (this.form.valid) {\r\n      this.authService.resetPassword$(this.form.value.password, this.form.value.code, this.form.value.userId, response => {\r\n        this.messageService.error(LanguageService.text(response.message, 'auth'))\r\n      }).subscribe(response => {\r\n        this.messageService.info(LanguageService.text('PASSWORD_CHANGED_MESSAGE', 'auth'))\r\n          this.authService.goAuthPage()\r\n      })\r\n    }\r\n  }\r\n\r\n}\r\n","<div class=\"mx-reset-password\">\n  <ng-container *ngIf=\"isCorrectCode !== undefined\">\n    <form *ngIf=\"isCorrectCode; else incorrectCodeTemplate\" [formGroup]=\"form\" (submit)=\"submit()\">\n      <input type=\"password\" formControlName=\"password\"/>\n      <button type=\"submit\" [disabled]=\"form.invalid\">{{ 'RESET_PASSWORD_BUTTON' | translate: 'auth'}}</button>\n    </form>\n    <ng-template #incorrectCodeTemplate>\n      <div class=\"align-center error-text small-screen\">{{ incorrectCodeMessage | translate: 'auth' }}</div>\n      <div class=\"extra-actions\">\n        <a [routerLink]=\"['/auth']\">{{ configuration.actionLabels!.auth | translate: 'auth' }}</a>\n        <a [routerLink]=\"['/auth/register']\">{{ configuration.actionLabels!.reg | translate: 'auth' }}</a>\n      </div>\n    </ng-template>\n  </ng-container>\n</div>\n","import { Component, OnInit } from '@angular/core';\nimport {UntypedFormControl, UntypedFormGroup, Validators} from \"@angular/forms\";\nimport {AuthService} from \"../auth.service\";\nimport {AuthConfiguration} from \"../auth-configuration\";\nimport {finalize} from \"rxjs/operators\";\n\n@Component({\n  selector: 'mx-reset-password-request',\n  templateUrl: './reset-password-request.component.html',\n  styleUrls: ['./reset-password-request.component.scss']\n})\nexport class ResetPasswordRequestComponent implements OnInit {\n  isFormProcessing = false\n  isRequestSent = false\n\n  form = new UntypedFormGroup({\n    email: new UntypedFormControl(null, [Validators.required, Validators.email])\n  })\n\n  constructor(\n    private authService: AuthService,\n    public configuration: AuthConfiguration,\n  ) { }\n\n  ngOnInit(): void {\n  }\n\n  submit(): void {\n    if (this.form.valid && !this.isFormProcessing) {\n      this.isFormProcessing = true\n      this.authService.requestResetPassword$(this.form.value.email)\n        .pipe(finalize(() => {\n          this.isFormProcessing = false\n        }))\n        .subscribe(() => {\n        this.isRequestSent = true\n      })\n    }\n  }\n\n}\n","<div class=\"section\">\n  <h2>{{ configuration.reset!.title | translate: 'auth' }}</h2>\n  <form [formGroup]=\"form\" (submit)=\"submit()\" *ngIf=\"!isRequestSent; else requestSentMessage\">\n    <div class=\"form-row single-element-row\">\n      <label *ngIf=\"configuration.ifShowFieldLabels\">{{ configuration.reset!.fieldLabels!.email | translate: 'auth' }}</label>\n      <input type=\"email\" formControlName=\"email\" [placeholder]=\"configuration.ifShowFieldLabels ? '' : configuration.reset!.fieldLabels!.email | translate: 'auth'\"/>\n    </div>\n    <div class=\"form-row\">\n      <button type=\"submit\" [disabled]=\"form.invalid || isFormProcessing\">{{ configuration.reset!.actionLabel | translate: 'auth' }}</button>\n    </div>\n  </form>\n  <ng-template #requestSentMessage>\n    <div class=\"align-center small-screen\">\n      <p>{{ 'RESET_PASSWORD_LINK_SENT_MESSAGE' | translate: 'auth' }}</p>\n    </div>\n  </ng-template>\n  <div class=\"extra-actions\">\n    <a [routerLink]=\"['/auth']\">{{ configuration.actionLabels!.auth | translate: 'auth' }}</a>\n    <a [routerLink]=\"['/auth/register']\">{{ configuration.actionLabels!.reg | translate: 'auth' }}</a>\n  </div>\n</div>\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n  selector: 'mx-register-complete',\n  templateUrl: './register-complete.component.html',\n  styleUrls: ['./register-complete.component.css']\n})\nexport class RegisterCompleteComponent implements OnInit {\n\n  constructor() { }\n\n  ngOnInit(): void {\n  }\n\n}\n","<p>register-complete works!</p>\n","import {Component, OnInit} from \"@angular/core\";\r\nimport {Oauth2Providers} from \"../oauth2.service\";\r\n\r\n@Component({\r\n  selector: 'mx-oauth2-redirect',\r\n  template: '',\r\n})\r\nexport class Oauth2RedirectComponent implements OnInit {\r\n\r\n  ngOnInit(): void {\r\n    if (location.hash) {\r\n      let params: {[key: string]: string} = {}\r\n      location.hash.substr(1).split('&').forEach(item => {\r\n        const [key, value] = item.split('=')\r\n        params[key] = value\r\n      })\r\n      params.type = 'access_token'\r\n      const state = JSON.parse(decodeURIComponent(escape(window.atob(params.state))));\r\n      params = Object.assign(params, state)\r\n      const provider: Oauth2Providers = state.provider\r\n      window.opener?.postMessage(params, '*')\r\n      window.close()\r\n    }\r\n  }\r\n\r\n}\r\n","import {ModuleWithProviders, NgModule} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { LoginComponent } from './login/login.component';\r\nimport {ReactiveFormsModule} from \"@angular/forms\";\r\nimport {HTTP_INTERCEPTORS} from \"@angular/common/http\";\r\nimport {AuthTokenInterceptor} from \"./auth-token.interceptor\";\r\nimport {AuthConfiguration} from \"./auth-configuration\";\r\nimport {RouterModule, Routes} from \"@angular/router\";\r\nimport { RegisterComponent } from './register/register.component';\r\nimport { ActivationComponent } from './activation/activation.component';\r\nimport {ResetPasswordComponent} from \"./reset-password/reset-password.component\";\r\nimport { ResetPasswordRequestComponent } from './reset-password-request/reset-password-request.component';\r\nimport { RegisterCompleteComponent } from './register-complete/register-complete.component';\r\n/*import {Oauth2Module} from \"@adjai/ngx-library/src/lib/oauth2\";*/\r\nimport {Oauth2LoginComponent} from \"./oauth2-login/oauth2-login.component\";\r\nimport {Oauth2RedirectComponent} from \"./oauth2-redirect/oauth2-redirect.component\";\r\nimport {MixModule} from \"@adjai/ngx-library/src/lib/mix\";\r\nimport {LanguageModule, LanguageService} from \"@adjai/ngx-library/src/lib/language\";\r\n\r\nLanguageService.addTranslations('auth', [\r\n  {\r\n    alias: 'LOGIN_FORM_TITLE',\r\n    en: 'Sign In',\r\n    ru: 'Вход в систему',\r\n  },\r\n  {\r\n    alias: 'LOGIN_BUTTON',\r\n    en: 'Sign In',\r\n    ru: 'Войти',\r\n  },\r\n  {\r\n    alias: 'EMAIL_LABEL',\r\n    en: 'Email',\r\n    ru: 'Email',\r\n  },\r\n  {\r\n    alias: 'PASSWORD_LABEL',\r\n    en: 'Password',\r\n    ru: 'Пароль',\r\n  },\r\n  {\r\n    alias: 'PASSWORD2_LABEL',\r\n    en: 'Enter password again',\r\n    ru: 'Повторите пароль',\r\n  },\r\n  {\r\n    alias: 'AUTH_LINK',\r\n    en: 'Login',\r\n    ru: 'Вход в систему',\r\n  },\r\n  {\r\n    alias: 'REG_LINK',\r\n    en: 'Registration',\r\n    ru: 'Регистрация',\r\n  },\r\n  {\r\n    alias: 'FORGOT_PASSWORD_LINK',\r\n    en: 'Forgot password?',\r\n    ru: 'Забыли пароль?',\r\n  },\r\n  {\r\n    alias: 'REGISTRATION_FORM_TITLE',\r\n    en: 'Sign Up',\r\n    ru: 'Регистрация',\r\n  },\r\n  {\r\n    alias: 'REGISTER_BUTTON',\r\n    en: 'Register',\r\n    ru: 'Зарегистрироваться',\r\n  },\r\n  {\r\n    alias: 'NAME_LABEL',\r\n    en: 'Name',\r\n    ru: 'Имя',\r\n  },\r\n  {\r\n    alias: 'RESET_PASSWORD_FORM_TITLE',\r\n    en: 'Reset password',\r\n    ru: 'Задание нового пароля',\r\n  },\r\n  {\r\n    alias: 'SEND_BUTTON',\r\n    en: 'Send',\r\n    ru: 'Отправить',\r\n  },\r\n  {\r\n    alias: 'RESET_PASSWORD_LINK_SENT_MESSAGE',\r\n    en: 'Link for resetting the password have been sent to your email.',\r\n    ru: 'На ваш email отправлена ссылка для восстановления пароля',\r\n  },\r\n  {\r\n    alias: 'SOCIAL_AUTH_FORM_TITLE',\r\n    en: 'Or Sign Up Using',\r\n    ru: 'Авторизация через соцсети',\r\n  },\r\n  {\r\n    alias: 'SOCIAL_AUTH_WITH_TITLE',\r\n    en: 'Sign Up With',\r\n    ru: 'Авторизация через',\r\n  },\r\n  {\r\n    alias: 'RESET_PASSWORD_BUTTON',\r\n    en: 'Change',\r\n    ru: 'Изменить',\r\n  },\r\n  {\r\n    alias: 'WRONG_RESET_PASSWORD_LINK_MESSAGE',\r\n    en: 'Incorrect link for setting new password or link lifetime is over',\r\n    ru: 'Неверная ссылка для задания нового пароля, либо срок действия ссылки истек.',\r\n  },\r\n  {\r\n    alias: 'ACTIVATION_PROCESSED_SUCCESSFUL_MESSAGE',\r\n    en: 'Activation have been processed.',\r\n    ru: 'Активация успешно выполнена.',\r\n  },\r\n  {\r\n    alias: 'REG_EMAIL_EXIST_MESSAGE',\r\n    en: 'User with such email is already registered.',\r\n    ru: 'Пользователь с указанным email не зарегистрирован в системе.',\r\n  },\r\n  {\r\n    alias: 'RESET_PASSWORD_CODE_EXPIRED_MESSAGE',\r\n    en: 'The code for resetting password has been expired.',\r\n    ru: 'Просроченный код для изменения пароля.',\r\n  },\r\n  {\r\n    alias: 'RESET_PASSWORD_CODE_WRONG',\r\n    en: 'Incorrect code for resetting password',\r\n    ru: 'Неверный код для изменения пароля.',\r\n  },\r\n  {\r\n    alias: 'ACTIVATION_LINK_SENT_MESSAGE',\r\n    en: 'The link for activating your account has been sent to your email.',\r\n    ru: 'На ваш email отправлена ссылка для активации аккаунта.',\r\n  },\r\n  {\r\n    alias: 'NEED_LOGIN_AGAIN_MESSAGE',\r\n    en: 'You need to sign in again.',\r\n    ru: 'Вам необходимо заново войти в систему.',\r\n  },\r\n  {\r\n    alias: 'REGISTRATION_COMPLETED_MESSAGE',\r\n    en: 'Registration has been completed successfully',\r\n    ru: 'Регистрация выполнена успешно',\r\n  },\r\n  {\r\n    alias: 'ACTIVATION_COMPLETED_MESSAGE',\r\n    en: 'Activation has been completed successfully',\r\n    ru: 'Активация успешно выполнена',\r\n  },\r\n  {\r\n    alias: 'PASSWORD_CHANGED_MESSAGE',\r\n    en: 'The password has been changed successfully',\r\n    ru: 'Пароль успешно изменен',\r\n  },\r\n  {\r\n    alias: 'AUTH_NOT_FOUND_MESSAGE',\r\n    en: 'User\\'s not found',\r\n    ru: 'Пользователь не найден'\r\n  },\r\n  {\r\n    alias: 'AUTH_BLOCKED_MESSAGE',\r\n    en: 'User\\'s blocked',\r\n    ru: 'Пользователь заблокирован',\r\n  },\r\n  {\r\n    alias: 'AUTH_NOT_ACTIVATED_MESSAGE',\r\n    en: \"Account's not activated\",\r\n    ru: 'Аккаунт неактивирован',\r\n  },\r\n  {\r\n    alias: '',\r\n    en: '',\r\n    ru: '',\r\n  },\r\n  {\r\n    alias: '',\r\n    en: '',\r\n    ru: '',\r\n  },\r\n], 'alias')\r\n\r\nconst routes: Routes = [\r\n  /*{\r\n    path: \"auth\",\r\n    component: LoginComponent,\r\n  },\r\n  {\r\n    path: \"register\",\r\n    component: RegisterComponent,\r\n  },\r\n  {\r\n    path: \"reset-password-request\",\r\n    component: ResetPasswordRequestComponent,\r\n  },*/\r\n  {\r\n    path: \"auth\",\r\n    children: [\r\n      {\r\n        path: \"\",\r\n        component: LoginComponent,\r\n        pathMatch: 'full',\r\n      },\r\n      {\r\n        path: \"register\",\r\n        component: RegisterComponent,\r\n      },\r\n      {\r\n        path: \"reset-password-request\",\r\n        component: ResetPasswordRequestComponent,\r\n      },\r\n      {\r\n        path: \"reset-password/:id/:code\",\r\n        component: ResetPasswordComponent,\r\n      },\r\n      {\r\n        path: \"activation/:userId/:activationCode\",\r\n        component: ActivationComponent,\r\n      },\r\n      {\r\n        path: 'oauth2/redirect',\r\n        component: Oauth2RedirectComponent,\r\n      },\r\n    ],\r\n  },\r\n]\r\n\r\n@NgModule({\r\n  declarations: [\r\n    Oauth2LoginComponent,\r\n    Oauth2RedirectComponent,\r\n    LoginComponent,\r\n    RegisterComponent,\r\n    ActivationComponent,\r\n    ResetPasswordComponent,\r\n    ResetPasswordRequestComponent,\r\n    RegisterCompleteComponent,\r\n  ],\r\n  imports: [\r\n    CommonModule,\r\n    ReactiveFormsModule,\r\n    RouterModule.forChild(routes),\r\n    MixModule,\r\n    LanguageModule,\r\n    /*Oauth2Module*/\r\n  ],\r\n  exports: [\r\n    Oauth2LoginComponent,\r\n    ActivationComponent,\r\n    LoginComponent,\r\n    RegisterComponent,\r\n    RegisterCompleteComponent,\r\n    ResetPasswordComponent,\r\n    ResetPasswordRequestComponent,\r\n    RouterModule,\r\n  ],\r\n  providers: [\r\n    {\r\n      provide: HTTP_INTERCEPTORS,\r\n      useClass: AuthTokenInterceptor,\r\n      multi: true,\r\n    }\r\n  ]\r\n})\r\nexport class AuthModule {\r\n\r\n  static forRoot(configuration: AuthConfiguration): ModuleWithProviders<AuthModule> {\r\n    const defaultConfiguration = new AuthConfiguration()\r\n    configuration.login = Object.assign({}, defaultConfiguration.login, configuration.login)\r\n    configuration = Object.assign({}, defaultConfiguration, configuration)\r\n    return {\r\n      ngModule: AuthModule,\r\n      providers: [\r\n        {\r\n          provide: AuthConfiguration,\r\n          useValue: configuration,\r\n        }\r\n      ]\r\n    }\r\n  }\r\n\r\n}\r\n","import {ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot, UrlTree} from \"@angular/router\";\r\nimport {Observable} from \"rxjs\";\r\nimport {Injectable} from \"@angular/core\";\r\nimport {AuthService} from \"./auth.service\";\r\nimport {AuthConfiguration} from \"./auth-configuration\";\r\nimport {MessageService} from \"@adjai/ngx-library/src/lib/message\";\r\nimport {LanguageService} from \"@adjai/ngx-library/src/lib/language\";\r\n\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\nexport class AuthGuard implements CanActivate {\r\n\r\n  constructor(\r\n    private authService: AuthService,\r\n    private router: Router,\r\n    private configuration: AuthConfiguration,\r\n    private messageService: MessageService,\r\n  ) {\r\n  }\r\n\r\n  canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\r\n    const isLoggedIn = this.authService.isLoggedIn()\r\n    const allowedRoles: string[] = route.data.canActivateRoles ?? []\r\n    const isAllowedAccess = isLoggedIn && (!allowedRoles.length || this.authService.hasAnyRole(allowedRoles))\r\n    if (!isLoggedIn) {\r\n      this.router.navigate([this.configuration.loginPage], {queryParams: {returnUrl: state.url}})\r\n      //return true\r\n    }\r\n    if (this.authService.getUser()?.registration_incomplete && state.url !== this.configuration.registerCompletePage) {\r\n      this.messageService.info(LanguageService.text('REGISTRATION_COMPLETED_MESSAGE', 'auth'))\r\n        this.router.navigate([this.configuration.registerCompletePage])\r\n      return false\r\n    }\r\n    return isAllowedAccess\r\n  }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i3.AuthConfiguration","i5","i1.AuthConfiguration","i3.AuthService","i1","i2.Oauth2Service","i4.AuthConfiguration","i6","i1.AuthService","i4","i7.Oauth2LoginComponent","i9","i3","i2.AuthConfiguration","i2.AuthService"],"mappings":"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"}