UNPKG

@formio-tmt/angular

Version:

This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 10.1.4.

1 lines 26.1 kB
{"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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"}