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.
83 lines • 8.5 kB
JavaScript
import { BaseLoginProvider } from '../entities/base-login-provider';
// Simulates login / logout without actually requiring an Internet connection.
//
// Useful for certain development situations.
//
// For example, if you want to simulate the greatest football referee England has ever produced:
//
// const dummyUser: SocialUser = {
// id: '0123456789',
// name: 'Howard Webb',
// email: 'howard@webb.com',
// firstName: 'Howard',
// lastName: 'Webb',
// authToken: 'dummyAuthToken',
// photoUrl: 'https://en.wikipedia.org/wiki/Howard_Webb#/media/File:Howard_Webb_march11.jpg',
// provider: 'DUMMY',
// idToken: 'dummyIdToken',
// authorizationCode: 'dummyAuthCode'
// };
//
// let config = new AuthServiceConfig([
// { ... },
// {
// id: DummyLoginProvider.PROVIDER_ID,
// provider: new DummyLoginProvider(dummyUser) // Pass your user into the constructor
// },
// { ... }
// ]);
export class DummyLoginProvider extends BaseLoginProvider {
constructor(dummy) {
super();
if (dummy) {
this.dummy = dummy;
}
else {
this.dummy = DummyLoginProvider.DEFAULT_USER;
}
// Start not logged in
this.loggedIn = false;
}
getLoginStatus() {
return new Promise((resolve, reject) => {
if (this.loggedIn) {
resolve(this.dummy);
}
else {
reject('No user is currently logged in.');
}
});
}
initialize() {
return new Promise((resolve, reject) => {
resolve();
});
}
signIn() {
return new Promise((resolve, reject) => {
this.loggedIn = true;
resolve(this.dummy);
});
}
signOut(revoke) {
return new Promise((resolve, reject) => {
this.loggedIn = false;
resolve();
});
}
}
DummyLoginProvider.PROVIDER_ID = 'DUMMY';
DummyLoginProvider.DEFAULT_USER = {
id: '1234567890',
name: 'Mickey Mouse',
email: 'mickey@mouse.com',
firstName: 'Mickey',
lastName: 'Mouse',
authToken: 'dummyAuthToken',
photoUrl: 'https://en.wikipedia.org/wiki/File:Mickey_Mouse.png',
provider: 'DUMMY',
idToken: 'dummyIdToken',
authorizationCode: 'dummyAuthCode',
response: {}
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHVtbXktbG9naW4tcHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiQzovVXNlcnMvSkFEVVRUQS9kZXYvd2ViL2FuZ3VsYXJ4LXNvY2lhbC1sb2dpbi9wcm9qZWN0cy9saWIvc3JjLyIsInNvdXJjZXMiOlsicHJvdmlkZXJzL2R1bW15LWxvZ2luLXByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBSWxFLDhFQUE4RTtBQUM5RSxFQUFFO0FBQ0YsNkNBQTZDO0FBQzdDLEVBQUU7QUFDRixnR0FBZ0c7QUFDaEcsRUFBRTtBQUNGLG1DQUFtQztBQUNuQyx3QkFBd0I7QUFDeEIsMkJBQTJCO0FBQzNCLGdDQUFnQztBQUNoQywyQkFBMkI7QUFDM0Isd0JBQXdCO0FBQ3hCLG1DQUFtQztBQUNuQyxpR0FBaUc7QUFDakcseUJBQXlCO0FBQ3pCLCtCQUErQjtBQUMvQix5Q0FBeUM7QUFDekMsS0FBSztBQUNMLEVBQUU7QUFDRix3Q0FBd0M7QUFDeEMsWUFBWTtBQUNaLEtBQUs7QUFDTCw0Q0FBNEM7QUFDNUMsNEZBQTRGO0FBQzVGLE9BQU87QUFDUCxXQUFXO0FBQ1gsT0FBTztBQUdQLE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxpQkFBaUI7SUFxQnZELFlBQVksS0FBa0I7UUFDNUIsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLEtBQUssRUFBRTtZQUNULElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1NBQ3BCO2FBQU07WUFDTCxJQUFJLENBQUMsS0FBSyxHQUFHLGtCQUFrQixDQUFDLFlBQVksQ0FBQztTQUM5QztRQUVELHNCQUFzQjtRQUN0QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUN4QixDQUFDO0lBRUQsY0FBYztRQUNaLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDckMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUNqQixPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3JCO2lCQUFNO2dCQUNMLE1BQU0sQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO2FBQzNDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsVUFBVTtRQUNSLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDckMsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxNQUFNO1FBQ0osT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNyQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztZQUNyQixPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU8sQ0FBQyxNQUFnQjtRQUN0QixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3JDLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1lBQ3RCLE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOztBQTVEc0IsOEJBQVcsR0FBVyxPQUFPLENBQUM7QUFFckMsK0JBQVksR0FBRztJQUM3QixFQUFFLEVBQUUsWUFBWTtJQUNoQixJQUFJLEVBQUUsY0FBYztJQUNwQixLQUFLLEVBQUUsa0JBQWtCO0lBQ3pCLFNBQVMsRUFBRSxRQUFRO0lBQ25CLFFBQVEsRUFBRSxPQUFPO0lBQ2pCLFNBQVMsRUFBRSxnQkFBZ0I7SUFDM0IsUUFBUSxFQUFFLHFEQUFxRDtJQUMvRCxRQUFRLEVBQUUsT0FBTztJQUNqQixPQUFPLEVBQUUsY0FBYztJQUN2QixpQkFBaUIsRUFBRSxlQUFlO0lBQ2xDLFFBQVEsRUFBRSxFQUFFO0NBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QmFzZUxvZ2luUHJvdmlkZXJ9IGZyb20gJy4uL2VudGl0aWVzL2Jhc2UtbG9naW4tcHJvdmlkZXInO1xyXG5pbXBvcnQge1NvY2lhbFVzZXJ9IGZyb20gJy4uL2VudGl0aWVzL3NvY2lhbC11c2VyJztcclxuXHJcblxyXG4vLyBTaW11bGF0ZXMgbG9naW4gLyBsb2dvdXQgd2l0aG91dCBhY3R1YWxseSByZXF1aXJpbmcgYW4gSW50ZXJuZXQgY29ubmVjdGlvbi5cclxuLy9cclxuLy8gVXNlZnVsIGZvciBjZXJ0YWluIGRldmVsb3BtZW50IHNpdHVhdGlvbnMuXHJcbi8vXHJcbi8vIEZvciBleGFtcGxlLCBpZiB5b3Ugd2FudCB0byBzaW11bGF0ZSB0aGUgZ3JlYXRlc3QgZm9vdGJhbGwgcmVmZXJlZSBFbmdsYW5kIGhhcyBldmVyIHByb2R1Y2VkOlxyXG4vL1xyXG4vLyAgY29uc3QgZHVtbXlVc2VyOiBTb2NpYWxVc2VyID0ge1xyXG4vLyAgICAgaWQ6ICcwMTIzNDU2Nzg5JyxcclxuLy8gICAgIG5hbWU6ICdIb3dhcmQgV2ViYicsXHJcbi8vICAgICBlbWFpbDogJ2hvd2FyZEB3ZWJiLmNvbScsXHJcbi8vICAgICBmaXJzdE5hbWU6ICdIb3dhcmQnLFxyXG4vLyAgICAgbGFzdE5hbWU6ICdXZWJiJyxcclxuLy8gICAgIGF1dGhUb2tlbjogJ2R1bW15QXV0aFRva2VuJyxcclxuLy8gICAgIHBob3RvVXJsOiAnaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSG93YXJkX1dlYmIjL21lZGlhL0ZpbGU6SG93YXJkX1dlYmJfbWFyY2gxMS5qcGcnLFxyXG4vLyAgICAgcHJvdmlkZXI6ICdEVU1NWScsXHJcbi8vICAgICBpZFRva2VuOiAnZHVtbXlJZFRva2VuJyxcclxuLy8gICAgIGF1dGhvcml6YXRpb25Db2RlOiAnZHVtbXlBdXRoQ29kZSdcclxuLy8gfTtcclxuLy9cclxuLy8gIGxldCBjb25maWcgPSBuZXcgQXV0aFNlcnZpY2VDb25maWcoW1xyXG4vLyAgeyAuLi4gfSxcclxuLy8gIHtcclxuLy8gICAgICAgaWQ6IER1bW15TG9naW5Qcm92aWRlci5QUk9WSURFUl9JRCxcclxuLy8gICAgICAgcHJvdmlkZXI6IG5ldyBEdW1teUxvZ2luUHJvdmlkZXIoZHVtbXlVc2VyKSAgLy8gUGFzcyB5b3VyIHVzZXIgaW50byB0aGUgY29uc3RydWN0b3JcclxuLy8gICB9LFxyXG4vLyAgeyAuLi4gfVxyXG4vLyAgXSk7XHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIER1bW15TG9naW5Qcm92aWRlciBleHRlbmRzIEJhc2VMb2dpblByb3ZpZGVyIHtcclxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBST1ZJREVSX0lEOiBzdHJpbmcgPSAnRFVNTVknO1xyXG5cclxuICBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9VU0VSID0ge1xyXG4gICAgaWQ6ICcxMjM0NTY3ODkwJyxcclxuICAgIG5hbWU6ICdNaWNrZXkgTW91c2UnLFxyXG4gICAgZW1haWw6ICdtaWNrZXlAbW91c2UuY29tJyxcclxuICAgIGZpcnN0TmFtZTogJ01pY2tleScsXHJcbiAgICBsYXN0TmFtZTogJ01vdXNlJyxcclxuICAgIGF1dGhUb2tlbjogJ2R1bW15QXV0aFRva2VuJyxcclxuICAgIHBob3RvVXJsOiAnaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRmlsZTpNaWNrZXlfTW91c2UucG5nJyxcclxuICAgIHByb3ZpZGVyOiAnRFVNTVknLFxyXG4gICAgaWRUb2tlbjogJ2R1bW15SWRUb2tlbicsXHJcbiAgICBhdXRob3JpemF0aW9uQ29kZTogJ2R1bW15QXV0aENvZGUnLFxyXG4gICAgcmVzcG9uc2U6IHt9XHJcbiAgfTtcclxuXHJcbiAgcHJpdmF0ZSBkdW1teTogU29jaWFsVXNlcjtcclxuXHJcbiAgcHJpdmF0ZSBsb2dnZWRJbjogYm9vbGVhbjtcclxuXHJcbiAgY29uc3RydWN0b3IoZHVtbXk/OiBTb2NpYWxVc2VyKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgaWYgKGR1bW15KSB7XHJcbiAgICAgIHRoaXMuZHVtbXkgPSBkdW1teTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZHVtbXkgPSBEdW1teUxvZ2luUHJvdmlkZXIuREVGQVVMVF9VU0VSO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFN0YXJ0IG5vdCBsb2dnZWQgaW5cclxuICAgIHRoaXMubG9nZ2VkSW4gPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIGdldExvZ2luU3RhdHVzKCk6IFByb21pc2U8U29jaWFsVXNlcj4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgaWYgKHRoaXMubG9nZ2VkSW4pIHtcclxuICAgICAgICByZXNvbHZlKHRoaXMuZHVtbXkpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJlamVjdCgnTm8gdXNlciBpcyBjdXJyZW50bHkgbG9nZ2VkIGluLicpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGluaXRpYWxpemUoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICByZXNvbHZlKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNpZ25JbigpOiBQcm9taXNlPFNvY2lhbFVzZXI+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIHRoaXMubG9nZ2VkSW4gPSB0cnVlO1xyXG4gICAgICByZXNvbHZlKHRoaXMuZHVtbXkpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzaWduT3V0KHJldm9rZT86IGJvb2xlYW4pOiBQcm9taXNlPGFueT4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgdGhpcy5sb2dnZWRJbiA9IGZhbHNlO1xyXG4gICAgICByZXNvbHZlKCk7XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIl19