Files
threshold-ui/ui/core/app/session-stores/application.js
T

63 lines
1.8 KiB
JavaScript

import LocalStorageSessionStore from 'auth/session-stores/local-storage';
import { inject as service } from '@ember/service';
import { get } from '@ember/object';
//import config from '../config/environment';
export default class ApplicationSessionStore extends LocalStorageSessionStore {
@service store;
/**
* If the auth sessionData includes a token, apply it as a bearer token in the
* application adapter's Authorization header. Otherwise clear the header.
* @param {object} sessionData
* @return {object}
*/
persist(sessionData) {
this.addTokenToAuthorization(sessionData);
this.addScopeToSession(sessionData);
return super.persist(...arguments);
}
/**
* If the session has a full token, it is added as a bearer token to the
* `Authorization` header for all API requests.
* @param {object} sessionData
*/
addTokenToAuthorization(sessionData) {
const token = get(sessionData, 'authenticated.token');
const adapter = this.store.adapterFor('application');
const headers = get(adapter, 'headers');
if (!headers) adapter.headers = {};
adapter.headers.Authorization = null;
if (token) adapter.headers.Authorization = `Bearer ${token}`;
}
/**
* @param {object} sessionData
*/
addScopeToSession(sessionData) {
const scope = get(this, 'scope');
const authenticated = get(sessionData, 'authenticated');
if (scope && authenticated) authenticated.scope = scope;
}
}
// import CookieSessionStore from 'auth/session-stores/cookie';
// import config from '../config/environment';
//
// export default class ApplicationSessionStore extends CookieSessionStore {
//
// // =attributes
//
// /**
// * @type {string}
// */
// cookiePath = config.rootURL;
//
// /**
// * @type {string}
// */
// cookieName = config.auth.passwordCookieName;
//
// }