UNPKG

gnss-auth

Version:

Shared singleton authorization service for Angular MFE architecture

145 lines (140 loc) 5.03 kB
import * as i0 from '@angular/core'; import { Injectable } from '@angular/core'; import { fetchAuthSession, signIn, signOut } from 'aws-amplify/auth'; import { Amplify } from 'aws-amplify'; class AuthService { // -------------------- SUBSCRIPTIONS -------------------- // // -------------------- SUBSCRIBER_ATTRIBUTES -------------------- // // -------------------- SUBSCRIBER_OBJECT_REFERENCES -------------------- // // -------------------- ATTRIBUTES -------------------- // configured = false; userEmail = null; // -------------------- OBJECTS -------------------- // // -------------------- CONSTRUCTOR -------------------- // // -------------------- LIFE_CYCLE_HOOKS -------------------- // // -------------------- INITIATOR_LOADER_METHODS -------------------- // // -------------------- SUBSCRIBER_METHODS -------------------- // // -------------------- SERVICE_METHODS -------------------- // clearLocalStorage(debug = true) { try { if (debug) { console.info('==> Clearing localStorage and window.sessionStorage'); } localStorage.clear(); window.sessionStorage.clear(); if (debug) { console.info('*** Local Storage and session storage is: '); console.info('Local Storage: ', localStorage); console.info('Windows Session: ', window.sessionStorage); } } catch (error) { if (debug) { console.error('!!! Error: ', error); } } } configureAmplify(authConfig) { if (!this.configured) { Amplify.configure(authConfig); this.configured = true; } } async isLogged() { try { const session = await fetchAuthSession(); if (session && session.tokens) { return true; } else { return false; } } catch (error) { return false; } } async logAuthSession() { try { const session = await fetchAuthSession(); console.info('Session:'); console.info(session); } catch (error) { console.error({ type: 'error', message: error }); } } logLocalStorage() { console.info('localStorage: '); console.info(localStorage); } async userLogin(userLogin, debug = false) { const message = { type: 'success', message: '', }; return new Promise(async (resolve, reject) => { try { const userEmail = userLogin.loginEmail; const password = userLogin.password; if (debug) { console.info(`==> Signing in user ${userEmail}`); } const response = await signIn({ username: userEmail, password: password, }); if (debug) { console.info(`*** User ${userEmail} login response: `, response); } if (response.isSignedIn) { const session = await fetchAuthSession(); if (debug) { console.info('AuthSession:'); console.info(session); } // this.accessToken = session.tokens?.accessToken; // this.idToken = session.tokens?.idToken; message.message = 'User logged in successfully.'; resolve(message); } } catch (error) { if (debug) { console.error('!!! Error: ', error); } message.type = 'error'; message.message = error.message; message.body = error; reject(message); } }); } async logout(debug = false) { try { if (debug) { console.info(``); } await signOut(); } catch (error) { console.info({ type: 'error', message: error }); } } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: AuthService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: AuthService, providedIn: 'root' }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: AuthService, decorators: [{ type: Injectable, args: [{ providedIn: 'root', }] }] }); /* * Public API Surface of gnss-auth */ /** * Generated bundle index. Do not edit. */ export { AuthService }; //# sourceMappingURL=gnss-auth.mjs.map