UNPKG

slr-angularx-social-login

Version:

Social login and authentication module for Angular 13. Supports authentication with Google, Facebook, Amazon, and VK. Can be extended to other providers also.

104 lines 12.8 kB
import { BaseLoginProvider } from '../entities/base-login-provider'; import { SocialUser } from '../entities/social-user'; export class AmazonLoginProvider extends BaseLoginProvider { constructor(clientId, initOptions = { scope: 'profile', scope_data: { profile: { essential: false }, }, redirect_uri: location.origin, }) { super(); this.clientId = clientId; this.initOptions = initOptions; } initialize() { let amazonRoot = null; if (document) { amazonRoot = document.createElement('div'); amazonRoot.id = 'amazon-root'; document.body.appendChild(amazonRoot); } window.onAmazonLoginReady = () => { amazon.Login.setClientId(this.clientId); }; return new Promise((resolve, reject) => { try { this.loadScript('amazon-login-sdk', 'https://assets.loginwithamazon.com/sdk/na/login1.js', () => { resolve(); }, amazonRoot); } catch (err) { reject(err); } }); } getLoginStatus() { return new Promise((resolve, reject) => { let token = this.retrieveToken(); if (token) { amazon.Login.retrieveProfile(token, (response) => { if (response.success) { let user = new SocialUser(); user.id = response.profile.CustomerId; user.name = response.profile.Name; user.email = response.profile.PrimaryEmail; user.response = response.profile; resolve(user); } else { reject(response.error); } }); } else { reject(`No user is currently logged in with ${AmazonLoginProvider.PROVIDER_ID}`); } }); } signIn(signInOptions) { const options = { ...this.initOptions, ...signInOptions }; return new Promise((resolve, reject) => { amazon.Login.authorize(options, (authResponse) => { if (authResponse.error) { reject(authResponse.error); } else { amazon.Login.retrieveProfile(authResponse.access_token, (response) => { let user = new SocialUser(); user.id = response.profile.CustomerId; user.name = response.profile.Name; user.email = response.profile.PrimaryEmail; user.authToken = authResponse.access_token; user.response = response.profile; this.persistToken(authResponse.access_token); resolve(user); }); } }); }); } signOut() { return new Promise((resolve, reject) => { try { amazon.Login.logout(); this.clearToken(); resolve(); } catch (err) { reject(err.message); } }); } persistToken(token) { localStorage.setItem(`${AmazonLoginProvider.PROVIDER_ID}_token`, token); } retrieveToken() { return localStorage.getItem(`${AmazonLoginProvider.PROVIDER_ID}_token`); } clearToken() { localStorage.removeItem(`${AmazonLoginProvider.PROVIDER_ID}_token`); } } AmazonLoginProvider.PROVIDER_ID = 'AMAZON'; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1hem9uLWxvZ2luLXByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbGliL3NyYy9wcm92aWRlcnMvYW1hem9uLWxvZ2luLXByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUlyRCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsaUJBQWlCO0lBR3hELFlBQ1UsUUFBZ0IsRUFDaEIsY0FBbUI7UUFDekIsS0FBSyxFQUFFLFNBQVM7UUFDaEIsVUFBVSxFQUFFO1lBQ1YsT0FBTyxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRTtTQUM5QjtRQUNELFlBQVksRUFBRSxRQUFRLENBQUMsTUFBTTtLQUM5QjtRQUVELEtBQUssRUFBRSxDQUFDO1FBVEEsYUFBUSxHQUFSLFFBQVEsQ0FBUTtRQUNoQixnQkFBVyxHQUFYLFdBQVcsQ0FNbEI7SUFHSCxDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJLFFBQVEsRUFBRTtZQUNaLFVBQVUsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNDLFVBQVUsQ0FBQyxFQUFFLEdBQUcsYUFBYSxDQUFDO1lBQzlCLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ3ZDO1FBRUQsTUFBTSxDQUFDLGtCQUFrQixHQUFHLEdBQUcsRUFBRTtZQUMvQixNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDMUMsQ0FBQyxDQUFDO1FBRUYsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNyQyxJQUFJ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QU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNyQyxJQUFJO2dCQUNGLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBRXRCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDbEIsT0FBTyxFQUFFLENBQUM7YUFDWDtZQUFDLE9BQU8sR0FBRyxFQUFFO2dCQUNaLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDckI7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxZQUFZLENBQUMsS0FBYTtRQUNoQyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsbUJBQW1CLENBQUMsV0FBVyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVPLGFBQWE7UUFDbkIsT0FBTyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsbUJBQW1CLENBQUMsV0FBVyxRQUFRLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRU8sVUFBVTtRQUNoQixZQUFZLENBQUMsVUFBVSxDQUFDLEdBQUcsbUJBQW1CLENBQUMsV0FBVyxRQUFRLENBQUMsQ0FBQztJQUN0RSxDQUFDOztBQXZIc0IsK0JBQVcsR0FBVyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlTG9naW5Qcm92aWRlciB9IGZyb20gJy4uL2VudGl0aWVzL2Jhc2UtbG9naW4tcHJvdmlkZXInO1xuaW1wb3J0IHsgU29jaWFsVXNlciB9IGZyb20gJy4uL2VudGl0aWVzL3NvY2lhbC11c2VyJztcblxuZGVjbGFyZSBsZXQgYW1hem9uOiBhbnksIHdpbmRvdzogYW55O1xuXG5leHBvcnQgY2xhc3MgQW1hem9uTG9naW5Qcm92aWRlciBleHRlbmRzIEJhc2VMb2dpblByb3ZpZGVyIHtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQUk9WSURFUl9JRDogc3RyaW5nID0gJ0FNQVpPTic7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjbGllbnRJZDogc3RyaW5nLFxuICAgIHByaXZhdGUgaW5pdE9wdGlvbnM6IGFueSA9IHtcbiAgICAgIHNjb3BlOiAncHJvZmlsZScsXG4gICAgICBzY29wZV9kYXRhOiB7XG4gICAgICAgIHByb2ZpbGU6IHsgZXNzZW50aWFsOiBmYWxzZSB9LFxuICAgICAgfSxcbiAgICAgIHJlZGlyZWN0X3VyaTogbG9jYXRpb24ub3JpZ2luLFxuICAgIH1cbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGluaXRpYWxpemUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgbGV0IGFtYXpvblJvb3QgPSBudWxsO1xuICAgIGlmIChkb2N1bWVudCkge1xuICAgICAgYW1hem9uUm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgYW1hem9uUm9vdC5pZCA9ICdhbWF6b24tcm9vdCc7XG4gICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGFtYXpvblJvb3QpO1xuICAgIH1cblxuICAgIHdpbmRvdy5vbkFtYXpvbkxvZ2luUmVhZHkgPSAoKSA9PiB7XG4gICAgICBhbWF6b24uTG9naW4uc2V0Q2xpZW50SWQodGhpcy5jbGllbnRJZCk7XG4gICAgfTtcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICB0aGlzLmxvYWRTY3JpcHQoXG4gICAgICAgICAgJ2FtYXpvbi1sb2dpbi1zZGsnLFxuICAgICAgICAgICdodHRwczovL2Fzc2V0cy5sb2dpbndpdGhhbWF6b24uY29tL3Nkay9uYS9sb2dpbjEuanMnLFxuICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGFtYXpvblJvb3RcbiAgICAgICAgKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGdldExvZ2luU3RhdHVzKCk6IFByb21pc2U8U29jaWFsVXNlcj4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBsZXQgdG9rZW4gPSB0aGlzLnJldHJpZXZlVG9rZW4oKTtcblxuICAgICAgaWYgKHRva2VuKSB7XG4gICAgICAgIGFtYXpvbi5Mb2dpbi5yZXRyaWV2ZVByb2ZpbGUodG9rZW4sIChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XG4gICAgICAgICAgICBsZXQgdXNlcjogU29jaWFsVXNlciA9IG5ldyBTb2NpYWxVc2VyKCk7XG5cbiAgICAgICAgICAgIHVzZXIuaWQgPSByZXNwb25zZS5wcm9maWxlLkN1c3RvbWVySWQ7XG4gICAgICAgICAgICB1c2VyLm5hbWUgPSByZXNwb25zZS5wcm9maWxlLk5hbWU7XG4gICAgICAgICAgICB1c2VyLmVtYWlsID0gcmVzcG9uc2UucHJvZmlsZS5QcmltYXJ5RW1haWw7XG4gICAgICAgICAgICB1c2VyLnJlc3BvbnNlID0gcmVzcG9uc2UucHJvZmlsZTtcblxuICAgICAgICAgICAgcmVzb2x2ZSh1c2VyKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVqZWN0KHJlc3BvbnNlLmVycm9yKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVqZWN0KGBObyB1c2VyIGlzIGN1cnJlbnRseSBsb2dnZWQgaW4gd2l0aCAke0FtYXpvbkxvZ2luUHJvdmlkZXIuUFJPVklERVJfSUR9YCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBzaWduSW4oc2lnbkluT3B0aW9ucz86IGFueSk6IFByb21pc2U8U29jaWFsVXNlcj4ge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7IC4uLnRoaXMuaW5pdE9wdGlvbnMsIC4uLnNpZ25Jbk9wdGlvbnMgfTtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgYW1hem9uLkxvZ2luLmF1dGhvcml6ZShvcHRpb25zLCAoYXV0aFJlc3BvbnNlKSA9PiB7XG4gICAgICAgIGlmIChhdXRoUmVzcG9uc2UuZXJyb3IpIHtcbiAgICAgICAgICByZWplY3QoYXV0aFJlc3BvbnNlLmVycm9yKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhbWF6b24uTG9naW4ucmV0cmlldmVQcm9maWxlKFxuICAgICAgICAgICAgYXV0aFJlc3BvbnNlLmFjY2Vzc190b2tlbixcbiAgICAgICAgICAgIChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICBsZXQgdXNlcjogU29jaWFsVXNlciA9IG5ldyBTb2NpYWxVc2VyKCk7XG5cbiAgICAgICAgICAgICAgdXNlci5pZCA9IHJlc3BvbnNlLnByb2ZpbGUuQ3VzdG9tZXJJZDtcbiAgICAgICAgICAgICAgdXNlci5uYW1lID0gcmVzcG9uc2UucHJvZmlsZS5OYW1lO1xuICAgICAgICAgICAgICB1c2VyLmVtYWlsID0gcmVzcG9uc2UucHJvZmlsZS5QcmltYXJ5RW1haWw7XG4gICAgICAgICAgICAgIHVzZXIuYXV0aFRva2VuID0gYXV0aFJlc3BvbnNlLmFjY2Vzc190b2tlbjtcbiAgICAgICAgICAgICAgdXNlci5yZXNwb25zZSA9IHJlc3BvbnNlLnByb2ZpbGU7XG5cbiAgICAgICAgICAgICAgdGhpcy5wZXJzaXN0VG9rZW4oYXV0aFJlc3BvbnNlLmFjY2Vzc190b2tlbik7XG5cbiAgICAgICAgICAgICAgcmVzb2x2ZSh1c2VyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHNpZ25PdXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGFtYXpvbi5Mb2dpbi5sb2dvdXQoKTtcblxuICAgICAgICB0aGlzLmNsZWFyVG9rZW4oKTtcbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHJlamVjdChlcnIubWVzc2FnZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHBlcnNpc3RUb2tlbih0b2tlbjogc3RyaW5nKTogdm9pZCB7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oYCR7QW1hem9uTG9naW5Qcm92aWRlci5QUk9WSURFUl9JRH1fdG9rZW5gLCB0b2tlbik7XG4gIH1cblxuICBwcml2YXRlIHJldHJpZXZlVG9rZW4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oYCR7QW1hem9uTG9naW5Qcm92aWRlci5QUk9WSURFUl9JRH1fdG9rZW5gKTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJUb2tlbigpOiB2b2lkIHtcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShgJHtBbWF6b25Mb2dpblByb3ZpZGVyLlBST1ZJREVSX0lEfV90b2tlbmApO1xuICB9XG59XG4iXX0=