UNPKG

50.9 kBSource Map (JSON)View Raw
1{"version":3,"sources":["null","ng://@naker/naco/domains/values/config.ts","ng://@naker/naco/domains/models/user.ts","ng://@naker/naco/domains/services/naco.service.ts","ng://@naker/naco/domains/services/naco.express.service.ts","ng://@naker/naco/domains/values/signature.ts","ng://@naker/naco/guards/authenticated.guard.ts","ng://@naker/naco/interceptors/auth.interceptor.ts","ng://@naker/naco/views/pages/auth.page.ts","ng://@naker/naco/views/pages/auth-silent.page.ts","ng://@naker/naco/views/routes.ts","ng://@naker/naco/views/module.ts","ng://@naker/naco/naco.module.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__generator","thisArg","body","f","y","t","g","_","label","sent","trys","ops","next","verb","throw","return","Symbol","iterator","this","n","v","step","op","TypeError","call","done","value","pop","length","push","e","Config","data","assign","__decorate","decorators","target","key","desc","c","arguments","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","Type","forwardRef","Date","__metadata","metadataKey","metadataValue","metadata","config","router","storage","http","location","clientSecret","setClientSecret","NacoService","prototype","setUser","user","getUser","of","uri","getUri","from","getSignature","pipe","switchMap","signature","_this","refreshUser","scopes","options","headers","Authorization","type","token","get","map","res","Error","authUser","plainToClass","User","catchError","status","getProfilePicture","endpoint","Promise","resolve","setSignature","set","secret","setRefreshToken","refreshToken","forkJoin","getRefreshToken","getClientSecret","results","refreshWithRefreshToken","refreshWithSilentAuth","post","grant_type","client_id","clientId","client_secret","refresh_token","tap","tokens","expiresIn","expires_in","token_type","tokenType","access_token","accessToken","decodeURIComponent","hasToken","Observable","observer","redirectUri","getCurrentOrigin","login","iframe","document","createElement","setAttribute","style","display","addEventListener","__awaiter","_arguments","P","generator","reject","fulfilled","rejected","result","then","apply","queryString","contentWindow","search","substring","parentNode","removeChild","queryParts","split","params","queryParts_1","__values","o","m","tslib_1.__values","queryParts_1_1","item","itemParts","toPromise","_b","appendChild","getAccessTokenFromAuthCode","code","fromPromise","getState","state","redirect_uri","silent","responseType","needState","url","response_type","client","continue","encodeURIComponent","generateState","query","buildQueryString","logout","clear","remove","all","buildNestedUri","route","routeConfig","path","routePath","re","RegExp","replace","children","forEach","VERSION","window","origin","prepareExternalUrl","possible","text","charAt","Math","floor","random","keys","join","goToAccountEndpoint","root","redirect","goToIntendedUrl","href","Injectable","Router","Storage","HttpClient","Location","request","response","_super","__extends","__","constructor","create","tslib_1.__extends","NacoExpressService","protocol","host","end","Inject","args","REQUEST","RESPONSE","Signature","AuthenticatedGuard","naco","canActivate","first","canActivateChild","AuthInterceptor","intercept","req","needRetry","handle","clone","setHeaders","retryWhen","error","throwError","AuthPage","message$","concat","queryParams","message","Component","selector","template","ActivatedRoute","AuthSilentPage","ngOnInit","timeout","setTimeout","clearTimeout","routes","component","AUTH_ROUTING","RouterModule","forChild","NacoViewModule","NgModule","imports","CommonModule","declarations","NACO_ROOT_CONFIG","InjectionToken","nacoConfigFactory","NacoModule","forRoot","ngModule","providers","provide","useValue","useFactory","deps"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","export class Config {\n public endpoint?: string = 'https://account.kemnaker.go.id';\n public clientId?: string;\n public clientSecret?: string;\n public scopes?: string = 'basic email';\n public responseType?: 'token' | 'code' = 'token';\n\n public constructor(data?: Partial<Config>) {\n Object.assign(this, data);\n }\n}\n","import { forwardRef } from '@angular/core';\nimport { Type } from 'class-transformer';\n\nexport class User {\n public id: string;\n public username: string;\n public email?: string;\n public name: string;\n public status: number;\n\n @Type(forwardRef(() => Date) as any)\n public updatedAt: Date;\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, Params, Router } from '@angular/router';\nimport { Storage } from '@ubud/storage';\nimport { Config } from '../values/config';\nimport { User } from '../models/user';\nimport { forkJoin, from, Observable, Observer, of } from 'rxjs';\nimport { Signature } from '../values/signature';\nimport { catchError, map, switchMap, tap } from 'rxjs/operators';\nimport { plainToClass } from 'class-transformer';\nimport { HttpClient, HttpErrorResponse } from '@angular/common/http';\nimport { Location } from '@angular/common';\nimport { fromPromise } from 'rxjs-compat/observable/fromPromise';\n\n@Injectable()\nexport class NacoService {\n public readonly VERSION = 'v1';\n\n private signature: Signature | null = null;\n private user: User | null = null;\n private refreshToken: Signature | null = null;\n private clientSecret: string | null = null;\n\n public constructor(\n protected config: Config,\n protected router: Router,\n protected storage: Storage,\n protected http: HttpClient,\n protected location: Location,\n ) {\n if (this.config.clientSecret) {\n this.setClientSecret(this.config.clientSecret);\n }\n }\n\n public setUser(user: User | null): void {\n this.user = user;\n }\n\n public getUser(): Observable<User | null> {\n if (null !== this.user) {\n return of(this.user);\n }\n\n const uri = this.getUri('/users/me');\n\n return from(this.getSignature()).pipe(\n switchMap((signature: Signature | null) => {\n if (!signature) {\n return this.refreshUser(this.config.scopes);\n }\n\n const options = {\n headers: {\n Authorization: `${signature.type} ${signature.token}`,\n },\n };\n\n return this.http.get<any>(uri, options).pipe(\n map((res: any) => {\n if (res.data) {\n return res.data;\n }\n\n throw new Error('There are no body to be transformed');\n }),\n map((data: any) => {\n const authUser: any = plainToClass(User, data);\n\n this.setUser(authUser);\n\n return authUser;\n }),\n catchError((e: HttpErrorResponse) => {\n if (401 === e.status) {\n return this.refreshUser(signature.scopes);\n }\n\n return of(null);\n }),\n );\n }),\n );\n }\n\n public getProfilePicture(user: string): string {\n return this.config.endpoint + '/users/' + user + '/picture';\n }\n\n public getSignature(): Promise<Signature | null> {\n if (this.signature) {\n return Promise.resolve(this.signature);\n }\n\n return this.storage.get('signature');\n }\n\n public setSignature(signature: Signature | null): void {\n this.signature = signature;\n\n this.storage.set('signature', signature);\n }\n\n public setClientSecret(secret: string): void {\n this.clientSecret = secret;\n }\n\n public setRefreshToken(refreshToken: Signature): void {\n this.refreshToken = refreshToken;\n this.storage.set('refresh_token', refreshToken);\n }\n\n public refreshUser(scopes?: string): Observable<User | null> {\n this.setUser(null);\n this.setSignature(null);\n\n return forkJoin(this.getRefreshToken(), this.getClientSecret()).pipe(\n switchMap((results: any) => {\n const refreshToken: Signature = results[0];\n const clientSecret: string = results[1];\n\n if (refreshToken && clientSecret) {\n return this.refreshWithRefreshToken(clientSecret, refreshToken.token, scopes);\n }\n\n return this.refreshWithSilentAuth(scopes);\n }),\n );\n }\n\n public refreshWithRefreshToken(clientSecret: string, refreshToken: string, scopes?: string): Observable<User | null> {\n const request = this.http.post(this.getUri('/tokens'), {\n grant_type: 'refresh_token',\n scopes: scopes || this.config.scopes,\n client_id: this.config.clientId,\n client_secret: clientSecret,\n refresh_token: refreshToken,\n });\n\n return request.pipe(\n tap((tokens: any) => {\n if (tokens && tokens.data) {\n this.setSignature({\n expiresIn: tokens.data.expires_in || tokens.data.expiresIn,\n type: tokens.data.token_type || tokens.data.tokenType,\n token: tokens.data.access_token || tokens.data.accessToken,\n scopes: decodeURIComponent(tokens.data.scopes || this.config.scopes),\n });\n\n this.setRefreshToken({\n type: tokens.data.token_type || tokens.data.tokenType,\n token: tokens.data.refresh_token || tokens.data.refreshToken,\n });\n }\n }),\n map((tokens: any) => tokens && tokens.data),\n switchMap((hasToken: boolean) => {\n if (hasToken) {\n return this.getUser();\n }\n\n return of(null);\n }),\n );\n }\n\n public refreshWithSilentAuth(scopes?: string): Observable<User | null> {\n return new Observable<User | null>((observer: Observer<User | null>) => {\n const redirectUri = this.getCurrentOrigin('auth/silent');\n const uri = this.login(scopes || this.config.scopes, redirectUri, true, 'token', false);\n\n const iframe = document.createElement('iframe');\n iframe.setAttribute('src', uri);\n iframe.style.display = 'none';\n\n iframe.addEventListener(\n 'load',\n async () => {\n try {\n const queryString = iframe.contentWindow.location.search.substring(1);\n\n iframe.parentNode.removeChild(iframe);\n\n if (queryString) {\n const queryParts = queryString.split('&');\n const params = {};\n\n for (const item of queryParts) {\n const itemParts = item.split('=');\n\n params[itemParts[0]] = itemParts[1];\n }\n\n if (params.hasOwnProperty('access_token')) {\n this.setSignature({\n token: params['access_token'],\n type: params['token_type'],\n expiresIn: params['expires_in'],\n scopes: decodeURIComponent(params['scopes'] || this.config.scopes),\n });\n\n const user = await this.getUser().toPromise();\n\n if (user) {\n this.setUser(user);\n }\n\n observer.next(user);\n } else {\n observer.next(null);\n }\n\n return;\n }\n\n observer.next(null);\n } catch (e) {\n observer.next(null);\n }\n },\n false,\n );\n\n document.body.appendChild(iframe);\n });\n }\n\n public getAccessTokenFromAuthCode(code: string, redirectUri: string, scopes?: string): Observable<any> {\n return fromPromise(this.getState()).pipe(\n switchMap((state?: string) => {\n const params: Params = {\n code,\n grant_type: 'authorization_code',\n scopes: scopes || this.config.scopes,\n client_id: this.config.clientId,\n client_secret: this.config.clientSecret,\n redirect_uri: redirectUri,\n };\n\n if (state) {\n params.state = state;\n }\n\n return this.http.post(this.getUri('/tokens'), params);\n }),\n map((res: any) => {\n if (res.data) {\n return res.data;\n }\n\n throw new Error('There are no body to be transformed');\n }),\n );\n }\n\n public login(\n scopes: string,\n redirectUri?: string,\n silent: boolean = false,\n responseType: 'token' | 'code' = 'token',\n needState: boolean = true,\n ): string {\n if (!redirectUri) {\n redirectUri = this.router.url;\n }\n\n const params: any = {\n response_type: responseType,\n scopes: scopes,\n client: this.config.clientId,\n silent: silent,\n continue: encodeURIComponent(redirectUri),\n };\n\n if (needState) {\n const state = this.generateState();\n\n this.storage.set('state', state);\n params.state = state;\n }\n\n const query: string = this.buildQueryString(params);\n\n return this.config.endpoint + '/auth?' + query;\n }\n\n public logout(redirectUri?: string): Promise<string> {\n this.signature = null;\n this.user = null;\n this.refreshToken = null;\n\n return new Promise(resolve => {\n const clear = [this.storage.remove('signature'), this.storage.remove('user'), this.storage.remove('refresh_token')];\n\n Promise.all(clear).then(() => {\n let endpoint = this.config.endpoint + '/auth/logout';\n\n if (redirectUri) {\n endpoint += '?continue=' + encodeURIComponent(redirectUri);\n }\n\n resolve(endpoint);\n });\n });\n }\n\n public getState(): Promise<string | null> {\n return this.storage.get('state');\n }\n\n public buildNestedUri(route: ActivatedRouteSnapshot): string {\n let uri = '';\n\n if (route.routeConfig && route.routeConfig.path) {\n let routePath = route.routeConfig.path;\n\n for (const key in route.params) {\n if (key) {\n const re = new RegExp(':' + key);\n\n routePath = routePath.replace(re, route.params[key]);\n }\n }\n\n uri += '/' + routePath;\n }\n\n if (route.children) {\n route.children.forEach((item: ActivatedRouteSnapshot) => {\n uri += this.buildNestedUri(item);\n });\n }\n\n return uri;\n }\n\n private getRefreshToken(): Promise<Signature | null> {\n if (null !== this.refreshToken) {\n return Promise.resolve(this.refreshToken);\n }\n\n return this.storage.get('refresh_token');\n }\n\n private getClientSecret(): Promise<string | null> {\n if (null !== this.clientSecret) {\n return Promise.resolve(this.clientSecret);\n }\n\n return this.storage.get('client_secret');\n }\n\n private getUri(path: string): string {\n return this.config.endpoint + '/api/' + this.VERSION + path;\n }\n\n public getCurrentOrigin(path?: string): string {\n return window.location.origin + this.location.prepareExternalUrl(path || '');\n }\n\n private generateState(): string {\n const possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n let text = '';\n\n for (let i = 0; i < 5; i++) {\n text += possible.charAt(Math.floor(Math.random() * possible.length));\n }\n\n return text;\n }\n\n private buildQueryString(params: object): string {\n const queryParams = Object.keys(params).map((key: string) => {\n return encodeURIComponent(key) + '=' + encodeURIComponent(params[key]);\n });\n\n return queryParams.join('&');\n }\n\n public goToAccountEndpoint(route: ActivatedRouteSnapshot, responseType?: 'token' | 'code'): void {\n const ltrim = text => text.replace(/^\\/+/, '');\n\n const next = this.getCurrentOrigin('/' + ltrim(this.buildNestedUri(route.root)));\n\n this.storage.set('naco_intended_url', next).then(() => {\n this.redirect(\n this.login(this.config.scopes, this.getCurrentOrigin('/auth'), false, responseType || this.config.responseType, true),\n );\n });\n }\n\n public goToIntendedUrl(): void {\n this.storage.get<string>('naco_intended_url').then(url => {\n this.storage.remove('naco_intended_url');\n this.redirect(url || '/');\n });\n }\n\n public redirect(url: string): void {\n window.location.href = url;\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Storage } from '@ubud/storage';\nimport { Config } from '../values/config';\nimport { User } from '../models/user';\nimport { Observable, of } from 'rxjs';\nimport { HttpClient } from '@angular/common/http';\nimport { Location } from '@angular/common';\nimport { REQUEST, RESPONSE } from '@nguniversal/express-engine/tokens';\nimport { NacoService } from './naco.service';\n\n@Injectable()\nexport class NacoExpressService extends NacoService {\n public constructor(\n config: Config,\n router: Router,\n storage: Storage,\n http: HttpClient,\n location: Location,\n @Inject(REQUEST) private request: any,\n @Inject(RESPONSE) private response: any,\n ) {\n super(config, router, storage, http, location);\n }\n\n public refreshWithSilentAuth(): Observable<User | null> {\n return of(null);\n }\n\n public getCurrentOrigin(path: string = ''): string {\n return `${this.request.protocol}://${this.request.headers.host}${this.location.prepareExternalUrl(path || '')}`;\n }\n\n public redirect(url: string): void {\n this.response.redirect(302, url);\n this.response.end();\n }\n}\n","export class Signature {\n public expiresIn?: number;\n public token: string;\n public type: string;\n public scopes?: string;\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, CanActivateChild } from '@angular/router';\nimport { NacoService } from '../domains/services/naco.service';\nimport { first, map } from 'rxjs/internal/operators';\nimport { User } from '../domains/models/user';\nimport { Observable } from 'rxjs';\nimport { Storage } from '@ubud/storage';\nimport { Location } from '@angular/common';\n\n@Injectable()\nexport class AuthenticatedGuard implements CanActivate, CanActivateChild {\n public constructor(private naco: NacoService, private storage: Storage, private location: Location) {}\n\n public canActivate(route: ActivatedRouteSnapshot): Observable<boolean> {\n return this.naco.getUser().pipe(\n first(),\n map((user: User | null) => {\n if (null === user) {\n this.naco.goToAccountEndpoint(route.root);\n }\n\n return !!user;\n }),\n );\n }\n\n public canActivateChild(route: ActivatedRouteSnapshot): Observable<boolean> {\n return this.canActivate(route);\n }\n}\n","import { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { from, Observable, of, throwError } from 'rxjs';\nimport { NacoService } from '../domains/services/naco.service';\nimport { Signature } from '../domains/values/signature';\nimport { retryWhen, switchMap } from 'rxjs/operators';\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class AuthInterceptor implements HttpInterceptor {\n public constructor(private naco: NacoService) {}\n\n public intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n let needRetry: boolean = true;\n\n return from(this.naco.getSignature()).pipe(\n switchMap((signature: Signature | null) => {\n if (!signature) {\n needRetry = false;\n return next.handle(req);\n }\n\n return next.handle(\n req.clone({\n setHeaders: {\n Authorization: `${signature.type} ${signature.token}`,\n },\n }),\n );\n }),\n retryWhen((error: Observable<HttpErrorResponse>) => {\n return error.pipe(\n switchMap((error: HttpErrorResponse) => {\n if (error.status !== 401 || !needRetry) {\n return throwError(error);\n }\n\n needRetry = false;\n return this.naco.refreshUser().pipe(\n switchMap((user: any) => {\n if (!user) {\n return of(null);\n }\n\n return throwError(error);\n }),\n );\n }),\n );\n }),\n );\n }\n}\n","import { Component } from '@angular/core';\nimport { ActivatedRoute, Params } from '@angular/router';\nimport { NacoService } from '../../domains/services/naco.service';\nimport { Storage } from '@ubud/storage';\nimport { concat, from, Observable, of, throwError } from 'rxjs';\nimport { catchError, switchMap, tap } from 'rxjs/operators';\nimport { Location } from '@angular/common';\n\n@Component({\n selector: 'naker-auth-page',\n template: '{{ message$ | async }}',\n})\nexport class AuthPage {\n public message$: Observable<string>;\n\n public constructor(private route: ActivatedRoute, private naco: NacoService, private storage: Storage, private location: Location) {\n this.message$ = concat(of('Authenticating...'), this.handle());\n }\n\n public handle(): Observable<string> {\n return from(this.naco.getState()).pipe(\n switchMap(state => {\n return this.route.queryParams.pipe(\n switchMap(params => {\n if (state && params.state !== state) {\n return throwError('Invalid CSRF Token');\n }\n\n return of(params);\n }),\n );\n }),\n switchMap((params: Params) => {\n this.naco.setUser(null);\n\n if (params.access_token) {\n this.naco.setSignature({\n expiresIn: params.expires_in,\n type: params.token_type,\n token: params.access_token,\n scopes: decodeURIComponent(params.scopes),\n });\n\n return this.naco.getUser();\n }\n\n if (params.code) {\n return this.naco.getAccessTokenFromAuthCode(params.code, this.naco.getCurrentOrigin('/auth')).pipe(\n tap((tokens: any) => {\n this.naco.setSignature({\n expiresIn: tokens.expires_in || tokens.expiresIn,\n type: tokens.token_type || tokens.tokenType,\n token: tokens.access_token || tokens.accessToken,\n scopes: decodeURIComponent(tokens.scopes),\n });\n\n this.naco.setRefreshToken({\n expiresIn: tokens.expires_in || tokens.expiresIn,\n type: tokens.token_type || tokens.tokenType,\n token: tokens.refresh_token || tokens.refreshToken,\n scopes: decodeURIComponent(tokens.scopes),\n });\n }),\n switchMap(() => this.naco.getUser()),\n );\n }\n\n return of(null);\n }),\n switchMap(user => {\n if (null === user) {\n return throwError(new Error('Unauthenticated!'));\n }\n\n this.naco.goToIntendedUrl();\n\n return of('Success, please wait for redirecting...');\n }),\n catchError(e => {\n return of(e.message);\n }),\n );\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { NacoService } from '../../domains/services/naco.service';\n\n@Component({\n selector: 'naker-auth-silent',\n template: 'Please wait...',\n})\nexport class AuthSilentPage implements OnInit {\n public constructor(private naco: NacoService) {}\n\n public ngOnInit(): void {\n const timeout = setTimeout(() => {\n clearTimeout(timeout);\n this.naco.redirect('/');\n }, 2000);\n }\n}\n","import { ModuleWithProviders } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { AuthPage } from './pages/auth.page';\nimport { AuthSilentPage } from './pages/auth-silent.page';\n\nconst routes: Routes = [\n {\n path: 'auth',\n component: AuthPage\n },\n {\n path: 'auth/silent',\n component: AuthSilentPage\n },\n];\n\nexport const AUTH_ROUTING: ModuleWithProviders = RouterModule.forChild(routes);\n","import { NgModule } from '@angular/core';\nimport { AUTH_ROUTING } from './routes';\nimport { AuthPage } from './pages/auth.page';\nimport { AuthSilentPage } from './pages/auth-silent.page';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n imports: [CommonModule, AUTH_ROUTING],\n declarations: [AuthPage, AuthSilentPage],\n})\nexport class NacoViewModule {}\n","import { InjectionToken, ModuleWithProviders, NgModule } from '@angular/core';\nimport { NacoService } from './domains/services/naco.service';\nimport { AuthenticatedGuard } from './guards/authenticated.guard';\nimport { NacoViewModule } from './views/module';\nimport { Config } from './domains/values/config';\n\nconst NACO_ROOT_CONFIG = new InjectionToken('NACO_ROOT_CONFIG');\n\nexport function nacoConfigFactory(config: Config) {\n return new Config(config);\n}\n\n@NgModule({\n imports: [NacoViewModule],\n})\nexport class NacoModule {\n public static forRoot(config: Config): ModuleWithProviders {\n return {\n ngModule: NacoModule,\n providers: [\n {\n provide: NACO_ROOT_CONFIG,\n useValue: config,\n },\n {\n provide: Config,\n useFactory: nacoConfigFactory,\n deps: [NACO_ROOT_CONFIG],\n },\n NacoService,\n AuthenticatedGuard,\n ],\n };\n }\n}\n"]}
\No newline at end of file