UNPKG

@pvway/alpha-oas

Version:

Alpha OAuth Service by p.v.Way

53 lines 7.49 kB
import { v4 as uuidV4 } from 'uuid'; import { AlphaSessionData } from "./alpha-session-data"; export class AlphaOasInterceptor { intercept(req, next) { const eReq = AlphaOasInterceptor.enrichReq(req); return next.handle(eReq); } static handlerFn(req, next) { const eReq = this.enrichReq(req); return next(eReq); } static enrichReq(req) { let headers = req.headers; // getting languageCode // set by the principal when setting the user let languageCode = sessionStorage.getItem('alphaLanguageCode'); if (!languageCode) { const nav = window.navigator; const userLang = (nav.language || nav.userLanguage); languageCode = userLang ? userLang.substring(0, 2)?.toLowerCase() : 'en'; } // always add the language-code header headers = headers.append('language-code', languageCode); /** * the ClientId (client-id header) identifies the client. * There will be one client-id for each browser. * With this in place it will be possible to * map a new user to his browsing history * ClientId is only generated once and stored in * the browser localstorage associated to the url */ let clientId = localStorage.getItem('alphaClientId'); if (clientId == null) { clientId = uuidV4(); localStorage.setItem('alphaClientId', clientId); } // always add the client-id header headers = headers.append('client-id', clientId); /** * when an accessToken is present insert the authorization header * using the accessToken with the bearer scheme */ const sd = AlphaSessionData.retrieve(); const token = sd?.accessToken; if (token) { headers = headers.append('authorization', `bearer ${token}`); } return req.clone({ headers }); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxwaGEtb2FzLWludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYWxwaGEtb2FzL3NyYy9saWIvYWxwaGEtb2FzLWludGVyY2VwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxFQUFFLElBQUksTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXhELE1BQU0sT0FBTyxtQkFBbUI7SUFFOUIsU0FBUyxDQUFDLEdBQXFCLEVBQUUsSUFBaUI7UUFFaEQsTUFBTSxJQUFJLEdBQUcsbUJBQW1CLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2hELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFxQixFQUFFLElBQW1CO1FBQ3pELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUVPLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBcUI7UUFDNUMsSUFBSSxPQUFPLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQztRQUUxQix1QkFBdUI7UUFDdkIsNkNBQTZDO1FBQzdDLElBQUksWUFBWSxHQUNkLGNBQWMsQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDbEIsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLFNBQWdCLENBQUM7WUFDcEMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxJQUFJLEdBQUcsQ0FBQyxZQUFZLENBQVcsQ0FBQztZQUM5RCxZQUFZLEdBQUcsUUFBUTtnQkFDckIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRTtnQkFDekMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNYLENBQUM7UUFDRCxzQ0FBc0M7UUFDdEMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBRXhEOzs7Ozs7O1dBT0c7UUFDSCxJQUFJLFFBQVEsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3JELElBQUksUUFBUSxJQUFJLElBQUksRUFDcEIsQ0FBQztZQUNDLFFBQVEsR0FBRyxNQUFNLEVBQUUsQ0FBQztZQUNwQixZQUFZLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNsRCxDQUFDO1FBQ0Qsa0NBQWtDO1FBQ2xDLE9BQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUVoRDs7O1dBR0c7UUFDSCxNQUFNLEVBQUUsR0FBRyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN2QyxNQUFNLEtBQUssR0FBRyxFQUFFLEVBQUUsV0FBVyxDQUFDO1FBQzlCLElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixPQUFPLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FDdEIsZUFBZSxFQUNmLFVBQVUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUN2QixDQUFDO1FBRUQsT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNoQyxDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0h0dHBJbnRlcmNlcHRvciwgSHR0cFJlcXVlc3QsIEh0dHBIYW5kbGVyLCBIdHRwRXZlbnQsIEh0dHBIYW5kbGVyRm59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB2NCBhcyB1dWlkVjQgfSBmcm9tICd1dWlkJztcclxuaW1wb3J0IHsgQWxwaGFTZXNzaW9uRGF0YSB9IGZyb20gXCIuL2FscGhhLXNlc3Npb24tZGF0YVwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIEFscGhhT2FzSW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xyXG5cclxuICBpbnRlcmNlcHQocmVxOiBIdHRwUmVxdWVzdDxhbnk+LCBuZXh0OiBIdHRwSGFuZGxlcik6XHJcbiAgICBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XHJcbiAgICBjb25zdCBlUmVxID0gQWxwaGFPYXNJbnRlcmNlcHRvci5lbnJpY2hSZXEocmVxKTtcclxuICAgIHJldHVybiBuZXh0LmhhbmRsZShlUmVxKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBoYW5kbGVyRm4ocmVxOiBIdHRwUmVxdWVzdDxhbnk+LCBuZXh0OiBIdHRwSGFuZGxlckZuKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xyXG4gICAgY29uc3QgZVJlcSA9IHRoaXMuZW5yaWNoUmVxKHJlcSk7XHJcbiAgICByZXR1cm4gbmV4dChlUmVxKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIGVucmljaFJlcShyZXE6IEh0dHBSZXF1ZXN0PGFueT4pOiBIdHRwUmVxdWVzdDxhbnk+IHtcclxuICAgIGxldCBoZWFkZXJzID0gcmVxLmhlYWRlcnM7XHJcblxyXG4gICAgLy8gZ2V0dGluZyBsYW5ndWFnZUNvZGVcclxuICAgIC8vIHNldCBieSB0aGUgcHJpbmNpcGFsIHdoZW4gc2V0dGluZyB0aGUgdXNlclxyXG4gICAgbGV0IGxhbmd1YWdlQ29kZSA9XHJcbiAgICAgIHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2FscGhhTGFuZ3VhZ2VDb2RlJyk7XHJcbiAgICBpZiAoIWxhbmd1YWdlQ29kZSkge1xyXG4gICAgICBjb25zdCBuYXYgPSB3aW5kb3cubmF2aWdhdG9yIGFzIGFueTtcclxuICAgICAgY29uc3QgdXNlckxhbmcgPSAobmF2Lmxhbmd1YWdlIHx8IG5hdi51c2VyTGFuZ3VhZ2UpIGFzIHN0cmluZztcclxuICAgICAgbGFuZ3VhZ2VDb2RlID0gdXNlckxhbmdcclxuICAgICAgICA/IHVzZXJMYW5nLnN1YnN0cmluZygwLCAyKT8udG9Mb3dlckNhc2UoKVxyXG4gICAgICAgIDogJ2VuJztcclxuICAgIH1cclxuICAgIC8vIGFsd2F5cyBhZGQgdGhlIGxhbmd1YWdlLWNvZGUgaGVhZGVyXHJcbiAgICBoZWFkZXJzID0gaGVhZGVycy5hcHBlbmQoJ2xhbmd1YWdlLWNvZGUnLCBsYW5ndWFnZUNvZGUpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogdGhlIENsaWVudElkIChjbGllbnQtaWQgaGVhZGVyKSBpZGVudGlmaWVzIHRoZSBjbGllbnQuXHJcbiAgICAgKiBUaGVyZSB3aWxsIGJlIG9uZSBjbGllbnQtaWQgZm9yIGVhY2ggYnJvd3Nlci5cclxuICAgICAqIFdpdGggdGhpcyBpbiBwbGFjZSBpdCB3aWxsIGJlIHBvc3NpYmxlIHRvXHJcbiAgICAgKiBtYXAgYSBuZXcgdXNlciB0byBoaXMgYnJvd3NpbmcgaGlzdG9yeVxyXG4gICAgICogQ2xpZW50SWQgaXMgb25seSBnZW5lcmF0ZWQgb25jZSBhbmQgc3RvcmVkIGluXHJcbiAgICAgKiB0aGUgYnJvd3NlciBsb2NhbHN0b3JhZ2UgYXNzb2NpYXRlZCB0byB0aGUgdXJsXHJcbiAgICAgKi9cclxuICAgIGxldCBjbGllbnRJZCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdhbHBoYUNsaWVudElkJyk7XHJcbiAgICBpZiAoY2xpZW50SWQgPT0gbnVsbClcclxuICAgIHtcclxuICAgICAgY2xpZW50SWQgPSB1dWlkVjQoKTtcclxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2FscGhhQ2xpZW50SWQnLCBjbGllbnRJZCk7XHJcbiAgICB9XHJcbiAgICAvLyBhbHdheXMgYWRkIHRoZSBjbGllbnQtaWQgaGVhZGVyXHJcbiAgICBoZWFkZXJzID0gaGVhZGVycy5hcHBlbmQoJ2NsaWVudC1pZCcsIGNsaWVudElkKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIHdoZW4gYW4gYWNjZXNzVG9rZW4gaXMgcHJlc2VudCBpbnNlcnQgdGhlIGF1dGhvcml6YXRpb24gaGVhZGVyXHJcbiAgICAgKiB1c2luZyB0aGUgYWNjZXNzVG9rZW4gd2l0aCB0aGUgYmVhcmVyIHNjaGVtZVxyXG4gICAgICovXHJcbiAgICBjb25zdCBzZCA9IEFscGhhU2Vzc2lvbkRhdGEucmV0cmlldmUoKTtcclxuICAgIGNvbnN0IHRva2VuID0gc2Q/LmFjY2Vzc1Rva2VuO1xyXG4gICAgaWYgKHRva2VuKSB7XHJcbiAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLmFwcGVuZChcclxuICAgICAgICAnYXV0aG9yaXphdGlvbicsXHJcbiAgICAgICAgYGJlYXJlciAke3Rva2VufWApO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByZXEuY2xvbmUoeyBoZWFkZXJzIH0pO1xyXG4gIH1cclxuXHJcbn1cclxuIl19