formioangular-colfuturo
Version:
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 10.1.4.
1 lines • 25.6 kB
Source Map (JSON)
{"version":3,"file":"formioangular-colfuturo-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/formioangular-colfuturo-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 \"formioangular-colfuturo\";\r\nimport { get, each } from \"lodash\";\r\nimport { Formio } from \"formiojs-colfuturo\";\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, \"resetpass.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 (\r\n window.location.hash &&\r\n window.location.hash.match(/^#\\/access_token/)\r\n ) {\r\n history.pushState(\r\n null,\r\n null,\r\n window.location.hash.replace(/^#\\/access_token/, \"#access_token\")\r\n );\r\n }\r\n\r\n // Initiate the SSO if they provide oauth settings.\r\n currentUserPromise = Formio.ssoInit(\r\n this.config.oauth.type,\r\n this.config.oauth.options\r\n );\r\n } else {\r\n currentUserPromise = Formio.currentUser(null, {\r\n ignoreCache: true,\r\n });\r\n }\r\n\r\n this.userReady = currentUserPromise\r\n .then((user: any) => {\r\n this.setUser(user);\r\n return user;\r\n })\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 const namespace = Formio.namespace || \"formio\";\r\n const tokenName = `${namespace}Token`;\r\n\r\n localStorage.removeItem(tokenName);\r\n if (\r\n (Formio as any).tokens &&\r\n (Formio as any).tokens.hasOwnProperty(tokenName)\r\n ) {\r\n delete (Formio as any).tokens[tokenName];\r\n }\r\n\r\n Formio.logout()\r\n .then(() => {\r\n this.setUser(null);\r\n if (localStorage.getItem(`${namespace}LogoutAuthUrl`)) {\r\n window.open(\r\n localStorage.getItem(`${namespace}LogoutAuthUrl`),\r\n null,\r\n \"width=1020,height=618\"\r\n );\r\n localStorage.removeItem(`${namespace}LogoutAuthUrl`);\r\n }\r\n this.onLogout.emit();\r\n })\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 \"formioangular-colfuturo\";\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 \"formioangular-colfuturo\";\r\n\r\n@NgModule({\r\n imports: [CommonModule, FormioModule, RouterModule],\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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"}