File

src/providers/google-login-provider.ts

Extends

BaseLoginProvider

Index

Properties
Methods

Constructor

constructor(clientId: string)
Parameters :
Name Type Optional
clientId string no

Properties

Private auth2
auth2: any
Type : any
Public isInitialize
isInitialize: boolean
Type : boolean
Public loginProviderObj
loginProviderObj: LoginProviderClass
Type : LoginProviderClass
Default value : new LoginProviderClass()
Static Readonly PROVIDER_ID
PROVIDER_ID: string
Type : string
Default value : 'GOOGLE'
isInitialize
isInitialize: boolean
Type : boolean
Inherited from BaseLoginProvider
Defined in BaseLoginProvider:6

Methods

drawUser
drawUser()
Returns : SocialUser
initialize
initialize()
signIn
signIn()
signOut
signOut()
Returns : Promise<any>
initialize
initialize()
Inherited from BaseLoginProvider
Defined in BaseLoginProvider:7
loadScript
loadScript(obj: LoginProviderClass, onload: any)
Inherited from BaseLoginProvider
Defined in BaseLoginProvider:11
Parameters :
Name Type Optional
obj LoginProviderClass no
onload any no
Returns : void
signIn
signIn()
Inherited from BaseLoginProvider
Defined in BaseLoginProvider:8
signOut
signOut()
Inherited from BaseLoginProvider
Defined in BaseLoginProvider:9
Returns : Promise<any>
import { BaseLoginProvider } from '../entities/base-login-provider';
import { SocialUser, LoginProviderClass } from '../entities/user';

declare let gapi: any;

export class GoogleLoginProvider extends BaseLoginProvider {
  public isInitialize: boolean;
  public static readonly PROVIDER_ID = 'GOOGLE';
  public loginProviderObj: LoginProviderClass = new LoginProviderClass();
  private auth2: any;

  constructor(private clientId: string) {
    super();
    this.loginProviderObj.id = clientId;
    this.loginProviderObj.name = 'GOOGLE';
    this.loginProviderObj.url = 'https://apis.google.com/js/platform.js';
  }

  initialize(): Promise<SocialUser> {
    return new Promise((resolve, reject) => {
      this.loadScript(this.loginProviderObj, () => {
        gapi.load('auth2', () => {
          this.isInitialize = true;
          this.auth2 = gapi.auth2.init({
            client_id: this.clientId,
            scope: 'email'
          });

          this.auth2.then(() => {
            if (this.auth2.isSignedIn.get()) {
              resolve(this.drawUser());
            }
          });
        });
      });
    });
  }

  drawUser(): SocialUser {
    let user: SocialUser = new SocialUser();
    let profile = this.auth2.currentUser.get().getBasicProfile();
    let authResponseObj = this.auth2.currentUser.get().getAuthResponse(true);
    user.id = profile.getId();
    user.name = profile.getName();
    user.email = profile.getEmail();
    user.photoUrl = profile.getImageUrl();
    user.token = authResponseObj.access_token;
    return user;
  }

  signIn(): Promise<SocialUser> {
    return new Promise((resolve, reject) => {
      let promise = this.auth2.signIn();
      promise.then(() => {
        resolve(this.drawUser());
      });
    });
  }

  signOut(): Promise<any> {
    return new Promise((resolve, reject) => {
      this.auth2.signOut().then((err: any) => {
        if (err) {
          reject(err);
        } else {
          resolve();
        }
      });
    });
  }

}

results matching ""

    No results matching ""