{"version":3,"file":"formio-tmt-angular-auth.mjs","sources":["../../../projects/angular-formio/auth/src/auth.config.ts","../../../projects/angular-formio/auth/src/auth.service.ts","../../../projects/angular-formio/auth/src/auth.component.ts","../../../projects/angular-formio/auth/src/auth.component.html","../../../projects/angular-formio/auth/src/login/login.component.ts","../../../projects/angular-formio/auth/src/login/login.component.html","../../../projects/angular-formio/auth/src/register/register.component.ts","../../../projects/angular-formio/auth/src/register/register.component.html","../../../projects/angular-formio/auth/src/resetpass/resetpass.component.ts","../../../projects/angular-formio/auth/src/resetpass/resetpass.component.html","../../../projects/angular-formio/auth/src/auth.routes.ts","../../../projects/angular-formio/auth/src/auth.module.ts","../../../projects/angular-formio/auth/src/formio-tmt-angular-auth.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\nexport interface FormioAuthFormConfig {\r\n  path?: string;\r\n  form?: string;\r\n  component?: any;\r\n}\r\n\r\nexport interface FormioAuthRouteConfig {\r\n  auth?: any;\r\n  login?: any;\r\n  register?: any;\r\n  resetpass?: any;\r\n}\r\n\r\n@Injectable()\r\nexport class FormioAuthConfig {\r\n  component?: any;\r\n  delayAuth?: any;\r\n  login?: FormioAuthFormConfig;\r\n  register?: FormioAuthFormConfig;\r\n  resetpass?: FormioAuthFormConfig;\r\n  oauth?: FormioOAuthConfig;\r\n}\r\n\r\n\r\nexport interface FormioOAuthConfig {\r\n  type: FormioOauthType;\r\n  options: FormioOktaConfig | FormioSamlConfig;\r\n}\r\n\r\nexport enum FormioOauthType {\r\n  okta = 'okta',\r\n  saml = 'saml',\r\n}\r\n\r\nexport interface FormioOktaConfig extends OktaConfig {\r\n  formio?: any;\r\n}\r\n\r\nexport interface FormioSamlConfig {\r\n  relay: string;\r\n}\r\n\r\n// for more details about Okta configuration options see https://github.com/okta/okta-auth-js#configuration-reference\r\nexport interface OktaConfig {\r\n  url?: string;\r\n  tokenManager?: OktaTokenManagerConfig;\r\n  issuer?: string;\r\n  clientId?: string;\r\n  redirectUri?: string;\r\n  postLogoutRedirectUri?: string;\r\n  pkce?: boolean;\r\n  authorizeUrl?: string;\r\n  userinfoUrl?: string;\r\n  tokenUrl?: string;\r\n  ignoreSignature?: boolean;\r\n  maxClockSkew?: number;\r\n  scopes?: string[];\r\n  httpRequestClient?: Function;\r\n}\r\n\r\nexport interface OktaTokenManagerConfig {\r\n  storage?: string | {\r\n    getItem?: Function;\r\n    setItem?: Function;\r\n  };\r\n  secure?: boolean;\r\n  autoRenew?: boolean;\r\n  expireEarlySeconds?: number;\r\n  storageKey?: string;\r\n}\r\n","import { EventEmitter, Injectable, Inject } from '@angular/core';\r\nimport { FormioAuthConfig } from './auth.config';\r\nimport { FormioAppConfig } from '@formio-tmt/angular';\r\nimport { get, each } from 'lodash';\r\nimport { Formio } from '@formio-tmt/js';\r\n\r\n@Injectable()\r\nexport class FormioAuthService {\r\n  public user: any;\r\n  public authenticated = false;\r\n\r\n  public loginForm: string;\r\n  public onLogin: EventEmitter<object>;\r\n  public onLogout: EventEmitter<object>;\r\n\r\n  public registerForm: string;\r\n  public onRegister: EventEmitter<object>;\r\n  public onUser: EventEmitter<object>;\r\n  public onError: EventEmitter<any>;\r\n\r\n  public resetPassForm: string;\r\n  public onResetPass: EventEmitter<object>;\r\n\r\n  public ready: Promise<boolean>;\r\n  public readyResolve: any;\r\n  public readyReject: any;\r\n\r\n  public projectReady?: Promise<any>;\r\n  public accessReady?: Promise<any>;\r\n  public userReady?: Promise<any>;\r\n  public formAccess: any = {};\r\n  public submissionAccess: any = {};\r\n  public roles: any;\r\n  public is: any = {};\r\n\r\n  constructor(\r\n    public appConfig: FormioAppConfig,\r\n    public config: FormioAuthConfig\r\n  ) {\r\n    this.user = null;\r\n\r\n    if (this.appConfig && this.appConfig.appUrl) {\r\n      Formio.setBaseUrl(this.appConfig.apiUrl);\r\n      Formio.setProjectUrl(this.appConfig.appUrl);\r\n      Formio.formOnly = !!this.appConfig.formOnly;\r\n    } else {\r\n      console.error('You must provide an AppConfig within your application!');\r\n    }\r\n\r\n    this.loginForm =\r\n      this.appConfig.appUrl +\r\n      '/' +\r\n      get(this.config, 'login.form', 'user/login');\r\n    this.registerForm =\r\n      this.appConfig.appUrl +\r\n      '/' +\r\n      get(this.config, 'register.form', 'user/register');\r\n    this.resetPassForm =\r\n      this.appConfig.appUrl +\r\n      '/' +\r\n      get(this.config, 'register.form', 'resetpass');\r\n    this.onLogin = new EventEmitter();\r\n    this.onLogout = new EventEmitter();\r\n    this.onRegister = new EventEmitter();\r\n    this.onUser = new EventEmitter();\r\n    this.onError = new EventEmitter();\r\n\r\n    this.ready = new Promise((resolve: any, reject: any) => {\r\n      this.readyResolve = resolve;\r\n      this.readyReject = reject;\r\n    });\r\n\r\n    // Register for the core events.\r\n    Formio.events.on('formio.badToken', () => this.logoutError());\r\n    Formio.events.on('formio.sessionExpired', () => this.logoutError());\r\n    if (!this.config.delayAuth) {\r\n      this.init();\r\n    }\r\n  }\r\n\r\n  onLoginSubmit(submission: object) {\r\n    this.setUser(submission);\r\n    this.onLogin.emit(submission);\r\n  }\r\n\r\n  onRegisterSubmit(submission: object) {\r\n    this.setUser(submission);\r\n    this.onRegister.emit(submission);\r\n  }\r\n\r\n  onResetPassSubmit(submission: object) {\r\n    this.onResetPass.emit(submission);\r\n  }\r\n\r\n  init() {\r\n    this.projectReady = Formio.makeStaticRequest(this.appConfig.appUrl).then(\r\n      (project: any) => {\r\n        each(project.access, (access: any) => {\r\n          this.formAccess[access.type] = access.roles;\r\n        });\r\n      },\r\n      (): any => {\r\n        this.formAccess = {};\r\n        return null;\r\n      }\r\n    );\r\n\r\n    // Get the access for this project.\r\n    this.accessReady = Formio.makeStaticRequest(\r\n      this.appConfig.appUrl + '/access'\r\n    )\r\n      .then((access: any) => {\r\n        each(access.forms, (form: any) => {\r\n          this.submissionAccess[form.name] = {};\r\n          form.submissionAccess.forEach((subAccess: any) => {\r\n            this.submissionAccess[form.name][subAccess.type] = subAccess.roles;\r\n          });\r\n        });\r\n        this.roles = access.roles;\r\n        return access;\r\n      })\r\n      .catch((err): any => {\r\n        if (err === 'Token Expired' || err === 'Bad Token') {\r\n          this.setUser(null);\r\n        }\r\n        this.roles = {};\r\n        return null;\r\n      })\r\n\r\n    let currentUserPromise: Promise<any>;\r\n    if (this.config.oauth) {\r\n      // Make a fix to the hash to remove starting \"/\" that angular might put there.\r\n      if (window.location.hash && window.location.hash.match(/^#\\/access_token/)) {\r\n        history.pushState(null, null, window.location.hash.replace(/^#\\/access_token/, '#access_token'));\r\n      }\r\n\r\n      // Initiate the SSO if they provide oauth settings.\r\n      currentUserPromise = Formio.ssoInit(this.config.oauth.type, this.config.oauth.options);\r\n    } else {\r\n      currentUserPromise = Formio.currentUser(null, {\r\n        ignoreCache: true\r\n      });\r\n    }\r\n\r\n    this.userReady = currentUserPromise.then((user: any) => {\r\n      this.setUser(user);\r\n      return user;\r\n    }).catch((err) => {\r\n      this.setUser(null);\r\n      throw err;\r\n    });\r\n\r\n    // Trigger we are redy when all promises have resolved.\r\n    if (this.accessReady) {\r\n      this.accessReady\r\n        .then(() => this.projectReady)\r\n        .then(() => this.userReady)\r\n        .then(() => this.readyResolve(true))\r\n        .catch((err: any) => this.readyReject(err));\r\n    }\r\n  }\r\n\r\n  setUser(user: any) {\r\n    const namespace = Formio.namespace || 'formio';\r\n    if (user) {\r\n      this.user = user;\r\n      localStorage.setItem(`${namespace}AppUser`, JSON.stringify(user));\r\n      this.setUserRoles();\r\n      Formio.setUser(user);\r\n    } else {\r\n      this.user = null;\r\n      this.is = {};\r\n      localStorage.removeItem(`${namespace}AppUser`);\r\n      Formio.clearCache();\r\n      Formio.setUser(null);\r\n    }\r\n\r\n    this.authenticated = !!Formio.getToken();\r\n    this.onUser.emit(this.user);\r\n  }\r\n\r\n  setUserRoles() {\r\n    if (this.accessReady) {\r\n      this.accessReady.then(() => {\r\n        each(this.roles, (role: any, roleName: string) => {\r\n          if (this.user.roles.indexOf(role._id) !== -1) {\r\n            this.is[roleName] = true;\r\n          }\r\n        });\r\n      });\r\n    }\r\n  }\r\n\r\n  logoutError() {\r\n    this.setUser(null);\r\n    const namespace = Formio.namespace || 'formio';\r\n    localStorage.removeItem(`${namespace}Token`);\r\n    this.onError.emit();\r\n  }\r\n\r\n  logout() {\r\n    this.setUser(null);\r\n    const namespace = Formio.namespace || 'formio';\r\n    if (localStorage.getItem(`${namespace}LogoutAuthUrl`)) {\r\n      window.open(localStorage.getItem(`${namespace}LogoutAuthUrl`), null, 'width=1020,height=618');\r\n      localStorage.removeItem(`${namespace}LogoutAuthUrl`)\r\n    }\r\n    this.handleLogout(namespace);\r\n  }\r\n\r\n  handleLogout(namespace) {\r\n    localStorage.removeItem(`${namespace}Token`);\r\n    Formio.logout()\r\n      .then(() => this.onLogout.emit())\r\n      .catch(() => this.logoutError());\r\n  }\r\n}\r\n","import { Component } from '@angular/core';\r\n@Component({\r\n  templateUrl: './auth.component.html'\r\n})\r\nexport class FormioAuthComponent {}\r\n","<div class=\"card card-primary panel panel-default\">\r\n  <div class=\"card-header panel-heading\">\r\n    <ul class=\"nav nav-tabs card-header-tabs\">\r\n      <li class=\"nav-item\" role=\"presentation\" routerLinkActive=\"active\"><a class=\"nav-link\" routerLink=\"login\" routerLinkActive=\"active\">Login</a></li>\r\n      <li class=\"nav-item\" role=\"presentation\" routerLinkActive=\"active\"><a class=\"nav-link\" routerLink=\"register\" routerLinkActive=\"active\">Register</a></li>\r\n    </ul>\r\n  </div>\r\n  <div class=\"card-body panel-body\">\r\n    <router-outlet></router-outlet>\r\n  </div>\r\n</div>\r\n","import { Component } from '@angular/core';\r\nimport { FormioAuthService } from '../auth.service';\r\n@Component({\r\n  templateUrl: './login.component.html'\r\n})\r\nexport class FormioAuthLoginComponent {\r\n  public renderOptions: any = {\r\n    submitOnEnter: true\r\n  };\r\n  constructor(public service: FormioAuthService) {}\r\n}\r\n","<formio [src]=\"service.loginForm\" [renderOptions]=\"renderOptions\" (submit)=\"service.onLoginSubmit($event)\"></formio>\r\n","import { Component } from '@angular/core';\r\nimport { FormioAuthService } from '../auth.service';\r\n@Component({\r\n  templateUrl: './register.component.html'\r\n})\r\nexport class FormioAuthRegisterComponent {\r\n  public renderOptions: any = {\r\n    submitOnEnter: true\r\n  };\r\n  constructor(public service: FormioAuthService) {}\r\n}\r\n","<formio [src]=\"service.registerForm\" [renderOptions]=\"renderOptions\" (submit)=\"service.onRegisterSubmit($event)\"></formio>\r\n","import { Component } from '@angular/core';\r\nimport { FormioAuthService } from '../auth.service';\r\n@Component({\r\n  templateUrl: './resetpass.component.html'\r\n})\r\nexport class FormioResetPassComponent {\r\n  constructor(public service: FormioAuthService) {}\r\n}\r\n","<formio [src]=\"service.resetPassForm\" (submit)=\"service.onResetPassSubmit($event)\"></formio>\r\n","import { Routes } from '@angular/router';\r\nimport { FormioAuthRouteConfig } from './auth.config';\r\nimport { FormioAuthComponent } from './auth.component';\r\nimport { FormioAuthLoginComponent } from './login/login.component';\r\nimport { FormioAuthRegisterComponent } from './register/register.component';\r\nimport { FormioResetPassComponent } from './resetpass/resetpass.component';\r\n\r\nexport function FormioAuthRoutes(config?: FormioAuthRouteConfig): Routes {\r\n  return [\r\n    {\r\n      path: '',\r\n      component: config && config.auth ? config.auth : FormioAuthComponent,\r\n      children: [\r\n        {\r\n          path: '',\r\n          redirectTo: 'login',\r\n          pathMatch: 'full'\r\n        },\r\n        {\r\n          path: 'login',\r\n          component: config && config.login ? config.login : FormioAuthLoginComponent\r\n        },\r\n        {\r\n          path: 'register',\r\n          component: config && config.register ? config.register : FormioAuthRegisterComponent\r\n        },\r\n        {\r\n          path: 'resetpass',\r\n          component: config && config.resetpass ? config.resetpass : FormioResetPassComponent\r\n        }\r\n      ]\r\n    }\r\n  ];\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterModule } from '@angular/router';\r\nimport { FormioModule } from '@formio-tmt/angular';\r\nimport { FormioAuthComponent } from './auth.component';\r\nimport { FormioAuthLoginComponent } from './login/login.component';\r\nimport { FormioAuthRegisterComponent } from './register/register.component';\r\nimport { FormioResetPassComponent } from './resetpass/resetpass.component';\r\nimport { FormioAuthRouteConfig } from './auth.config';\r\nimport { FormioAuthRoutes } from './auth.routes';\r\nimport { extendRouter } from '@formio-tmt/angular';\r\n\r\n@NgModule({\r\n  imports: [\r\n    CommonModule,\r\n    FormioModule,\r\n    RouterModule\r\n  ],\r\n  declarations: [\r\n    FormioAuthComponent,\r\n    FormioAuthLoginComponent,\r\n    FormioAuthRegisterComponent,\r\n    FormioResetPassComponent\r\n  ]\r\n})\r\nexport class FormioAuth {\r\n  static forRoot(config?: FormioAuthRouteConfig): any {\r\n    return extendRouter(FormioAuth, config, FormioAuthRoutes);\r\n  }\r\n  static forChild(config?: FormioAuthRouteConfig): any {\r\n    return extendRouter(FormioAuth, config, FormioAuthRoutes);\r\n  }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2.FormioAuthConfig","i1.FormioAuthService"],"mappings":"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"}