gnss-auth
Version:
Shared singleton authorization service for Angular MFE architecture
145 lines (140 loc) • 5.03 kB
JavaScript
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