UNPKG

angularx-social-login

Version:

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

104 lines 13.3 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 = Object.assign(Object.assign({}, 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(revoke) { 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1hem9uLWxvZ2luLXByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL0pBRFVUVEEvZGV2L3dlYi9hbmd1bGFyeC1zb2NpYWwtbG9naW4vcHJvamVjdHMvbGliL3NyYy8iLCJzb3VyY2VzIjpbInByb3ZpZGVycy9hbWF6b24tbG9naW4tcHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDcEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBSXJELE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxpQkFBaUI7SUFHeEQsWUFDVSxRQUFnQixFQUNoQixjQUFtQjtRQUN6QixLQUFLLEVBQUUsU0FBUztRQUNoQixVQUFVLEVBQUU7WUFDVixPQUFPLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFO1NBQzlCO1FBQ0QsWUFBWSxFQUFFLFFBQVEsQ0FBQyxNQUFNO0tBQzlCO1FBRUQsS0FBSyxFQUFFLENBQUM7UUFUQSxhQUFRLEdBQVIsUUFBUSxDQUFRO1FBQ2hCLGdCQUFXLEdBQVgsV0FBVyxDQU1sQjtJQUdILENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLElBQUksUUFBUSxFQUFFO1lBQ1osVUFBVSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDM0MsVUFBVSxDQUFDLEVBQUUsR0FBRyxhQUFhLENBQUM7WUFDOUIsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDdkM7UUFFRCxNQUFNLENBQUMsa0JBQWtCLEdBQUcsR0FBRyxFQUFFO1lBQy9CLE1BQU0sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMxQyxDQUFDLENBQUM7UUFFRixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3JDLElBQUk7Z0JBQ0YsSUFBSSxDQUFDLFVBQVUsQ0FDYixrQkFBa0IsRUFDbEIscURBQXFELEVBQ3JELEdBQUcsRUFBRTtvQkFDSCxPQUFPLEVBQUUsQ0FBQztnQkFDWixDQUFDLEVBQ0QsVUFBVSxDQUNYLENBQUM7YUFDSDtZQUFDLE9BQU8sR0FBRyxFQUFFO2dCQUNaLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUNiO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsY0FBYztRQUNaLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDckMsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBRWpDLElBQUksS0FBSyxFQUFFO2dCQUNULE1BQU0sQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFO29CQUMvQyxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUU7d0JBQ3BCLElBQUksSUFBSSxHQUFlLElBQUksVUFBVSxFQUFFLENBQUM7d0JBRXhDLElBQUksQ0FBQyxFQUFFLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7d0JBQ3RDLElBQUksQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7d0JBQ2xDLElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUM7d0JBQzNDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQzt3QkFFakMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO3FCQUNmO3lCQUFNO3dCQUNMLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7cUJBQ3hCO2dCQUNILENBQUMsQ0FBQyxDQUFDO2FBQ0o7aUJBQU07Z0JBQ0wsTUFBTSxDQUFDLHVDQUF1QyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO2FBQ2xGO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsTUFBTSxDQUFDLGFBQW1CO1FBQ3hCLE1BQU0sT0FBTyxtQ0FBUSxJQUFJLENBQUMsV0FBVyxHQUFLLGFBQWEsQ0FBRSxDQUFDO1FBQzFELE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDckMsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLEVBQUU7Z0JBQy9DLElBQUksWUFBWSxDQUFDLEtBQUssRUFBRTtvQkFDdEIsTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDNUI7cUJBQU07b0JBQ0wsTUFBTSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQzFCLFlBQVksQ0FBQyxZQUFZLEVBQ3pCLENBQUMsUUFBUSxFQUFFLEVBQUU7d0JBQ1gsSUFBSSxJQUFJLEdBQWUsSUFBSSxVQUFVLEVBQUUsQ0FBQzt3QkFFeEMsSUFBSSxDQUFDLEVBQUUsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQzt3QkFDdEMsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQzt3QkFDbEMsSUFBSSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQzt3QkFDM0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxZQUFZLENBQUMsWUFBWSxDQUFDO3dCQUMzQyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUM7d0JBRWpDLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDO3dCQUU3QyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ2hCLENBQUMsQ0FDRixDQUFDO2lCQUNIO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxPQUFPLENBQUMsTUFBZ0I7UUFDdEIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNyQyxJQUFJO2dCQUNGLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBRXRCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDbEIsT0FBTyxFQUFFLENBQUM7YUFDWDtZQUFDLE9BQU8sR0FBRyxFQUFFO2dCQUNaLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDckI7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxZQUFZLENBQUMsS0FBYTtRQUNoQyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsbUJBQW1CLENBQUMsV0FBVyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVPLGFBQWE7UUFDbkIsT0FBTyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsbUJBQW1CLENBQUMsV0FBVyxRQUFRLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRU8sVUFBVTtRQUNoQixZQUFZLENBQUMsVUFBVSxDQUFDLEdBQUcsbUJBQW1CLENBQUMsV0FBVyxRQUFRLENBQUMsQ0FBQztJQUN0RSxDQUFDOztBQXZIc0IsK0JBQVcsR0FBVyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlTG9naW5Qcm92aWRlciB9IGZyb20gJy4uL2VudGl0aWVzL2Jhc2UtbG9naW4tcHJvdmlkZXInO1xyXG5pbXBvcnQgeyBTb2NpYWxVc2VyIH0gZnJvbSAnLi4vZW50aXRpZXMvc29jaWFsLXVzZXInO1xyXG5cclxuZGVjbGFyZSBsZXQgYW1hem9uOiBhbnksIHdpbmRvdzogYW55O1xyXG5cclxuZXhwb3J0IGNsYXNzIEFtYXpvbkxvZ2luUHJvdmlkZXIgZXh0ZW5kcyBCYXNlTG9naW5Qcm92aWRlciB7XHJcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQUk9WSURFUl9JRDogc3RyaW5nID0gJ0FNQVpPTic7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjbGllbnRJZDogc3RyaW5nLFxyXG4gICAgcHJpdmF0ZSBpbml0T3B0aW9uczogYW55ID0ge1xyXG4gICAgICBzY29wZTogJ3Byb2ZpbGUnLFxyXG4gICAgICBzY29wZV9kYXRhOiB7XHJcbiAgICAgICAgcHJvZmlsZTogeyBlc3NlbnRpYWw6IGZhbHNlIH0sXHJcbiAgICAgIH0sXHJcbiAgICAgIHJlZGlyZWN0X3VyaTogbG9jYXRpb24ub3JpZ2luLFxyXG4gICAgfVxyXG4gICkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIGluaXRpYWxpemUoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBsZXQgYW1hem9uUm9vdCA9IG51bGw7XHJcbiAgICBpZiAoZG9jdW1lbnQpIHtcclxuICAgICAgYW1hem9uUm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICBhbWF6b25Sb290LmlkID0gJ2FtYXpvbi1yb290JztcclxuICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhbWF6b25Sb290KTtcclxuICAgIH1cclxuXHJcbiAgICB3aW5kb3cub25BbWF6b25Mb2dpblJlYWR5ID0gKCkgPT4ge1xyXG4gICAgICBhbWF6b24uTG9naW4uc2V0Q2xpZW50SWQodGhpcy5jbGllbnRJZCk7XHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgdGhpcy5sb2FkU2NyaXB0KFxyXG4gICAgICAgICAgJ2FtYXpvbi1sb2dpbi1zZGsnLFxyXG4gICAgICAgICAgJ2h0dHBzOi8vYXNzZXRzLmxvZ2lud2l0aGFtYXpvbi5jb20vc2RrL25hL2xvZ2luMS5qcycsXHJcbiAgICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBhbWF6b25Sb290XHJcbiAgICAgICAgKTtcclxuICAgICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgcmVqZWN0KGVycik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0TG9naW5TdGF0dXMoKTogUHJvbWlzZTxTb2NpYWxVc2VyPiB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICBsZXQgdG9rZW4gPSB0aGlzLnJldHJpZXZlVG9rZW4oKTtcclxuXHJcbiAgICAgIGlmICh0b2tlbikge1xyXG4gICAgICAgIGFtYXpvbi5Mb2dpbi5yZXRyaWV2ZVByb2ZpbGUodG9rZW4sIChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgbGV0IHVzZXI6IFNvY2lhbFVzZXIgPSBuZXcgU29jaWFsVXNlcigpO1xyXG5cclxuICAgICAgICAgICAgdXNlci5pZCA9IHJlc3BvbnNlLnByb2ZpbGUuQ3VzdG9tZXJJZDtcclxuICAgICAgICAgICAgdXNlci5uYW1lID0gcmVzcG9uc2UucHJvZmlsZS5OYW1lO1xyXG4gICAgICAgICAgICB1c2VyLmVtYWlsID0gcmVzcG9uc2UucHJvZmlsZS5QcmltYXJ5RW1haWw7XHJcbiAgICAgICAgICAgIHVzZXIucmVzcG9uc2UgPSByZXNwb25zZS5wcm9maWxlO1xyXG5cclxuICAgICAgICAgICAgcmVzb2x2ZSh1c2VyKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJlamVjdChyZXNwb25zZS5lcnJvcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmVqZWN0KGBObyB1c2VyIGlzIGN1cnJlbnRseSBsb2dnZWQgaW4gd2l0aCAke0FtYXpvbkxvZ2luUHJvdmlkZXIuUFJPVklERVJfSUR9YCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2lnbkluKHNpZ25Jbk9wdGlvbnM/OiBhbnkpOiBQcm9taXNlPFNvY2lhbFVzZXI+IHtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB7IC4uLnRoaXMuaW5pdE9wdGlvbnMsIC4uLnNpZ25Jbk9wdGlvbnMgfTtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIGFtYXpvbi5Mb2dpbi5hdXRob3JpemUob3B0aW9ucywgKGF1dGhSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIGlmIChhdXRoUmVzcG9uc2UuZXJyb3IpIHtcclxuICAgICAgICAgIHJlamVjdChhdXRoUmVzcG9uc2UuZXJyb3IpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBhbWF6b24uTG9naW4ucmV0cmlldmVQcm9maWxlKFxyXG4gICAgICAgICAgICBhdXRoUmVzcG9uc2UuYWNjZXNzX3Rva2VuLFxyXG4gICAgICAgICAgICAocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICBsZXQgdXNlcjogU29jaWFsVXNlciA9IG5ldyBTb2NpYWxVc2VyKCk7XHJcblxyXG4gICAgICAgICAgICAgIHVzZXIuaWQgPSByZXNwb25zZS5wcm9maWxlLkN1c3RvbWVySWQ7XHJcbiAgICAgICAgICAgICAgdXNlci5uYW1lID0gcmVzcG9uc2UucHJvZmlsZS5OYW1lO1xyXG4gICAgICAgICAgICAgIHVzZXIuZW1haWwgPSByZXNwb25zZS5wcm9maWxlLlByaW1hcnlFbWFpbDtcclxuICAgICAgICAgICAgICB1c2VyLmF1dGhUb2tlbiA9IGF1dGhSZXNwb25zZS5hY2Nlc3NfdG9rZW47XHJcbiAgICAgICAgICAgICAgdXNlci5yZXNwb25zZSA9IHJlc3BvbnNlLnByb2ZpbGU7XHJcblxyXG4gICAgICAgICAgICAgIHRoaXMucGVyc2lzdFRva2VuKGF1dGhSZXNwb25zZS5hY2Nlc3NfdG9rZW4pO1xyXG5cclxuICAgICAgICAgICAgICByZXNvbHZlKHVzZXIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNpZ25PdXQocmV2b2tlPzogYm9vbGVhbik6IFByb21pc2U8YW55PiB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGFtYXpvbi5Mb2dpbi5sb2dvdXQoKTtcclxuXHJcbiAgICAgICAgdGhpcy5jbGVhclRva2VuKCk7XHJcbiAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICByZWplY3QoZXJyLm1lc3NhZ2UpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcGVyc2lzdFRva2VuKHRva2VuOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGAke0FtYXpvbkxvZ2luUHJvdmlkZXIuUFJPVklERVJfSUR9X3Rva2VuYCwgdG9rZW4pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZXRyaWV2ZVRva2VuKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oYCR7QW1hem9uTG9naW5Qcm92aWRlci5QUk9WSURFUl9JRH1fdG9rZW5gKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2xlYXJUb2tlbigpOiB2b2lkIHtcclxuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGAke0FtYXpvbkxvZ2luUHJvdmlkZXIuUFJPVklERVJfSUR9X3Rva2VuYCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==