UNPKG

motu-angular2-social-login

Version:

Simple client side social authentication for Angular2 application.

1 lines 4.72 kB
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("rxjs/Observable")):"function"==typeof define&&define.amd?define(["exports","@angular/core","rxjs/Observable"],t):t((e.ng=e.ng||{},e.ng.angular2SocialLogin=e.ng.angular2SocialLogin||{}),e.ng.core,e.Rx)}(this,function(e,t,o){"use strict";var n=function(e,t,o,n){var r,i=arguments.length,a=i<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,o):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,o,n);else for(var c=e.length-1;c>=0;c--)(r=e[c])&&(a=(i<3?r(a):i>3?r(t,o,a):r(t,o))||a);return i>3&&a&&Object.defineProperty(t,o,a),a};e.AuthService=function(){function e(){}return e.prototype.login=function(e){var t=this;return o.Observable.create(function(o){switch(e){case"google":void 0===t.gauth&&(t.gauth=gapi.auth2.getAuthInstance()),t.gauth.isSignedIn.get()?(localStorage.setItem("_login_provider","google"),o.next(t._fetchGoogleUserDetails()),o.complete()):t.gauth.signIn().then(function(){localStorage.setItem("_login_provider","google"),o.next(t._fetchGoogleUserDetails()),o.complete()});break;case"facebook":FB.getLoginStatus(function(e){"connected"===e.status?FB.api("/me?fields=name,email,picture",function(t){if(!t||t.error)o.error(t.error);else{var n={name:t.name,email:t.email,uid:t.id,provider:"facebook",image:t.picture.data.url,token:e.authResponse.accessToken};localStorage.setItem("_login_provider","facebook"),o.next(n),o.complete()}}):FB.login(function(e){"connected"===e.status&&FB.api("/me?fields=name,email,picture",function(t){if(!t||t.error)o.error(t.error);else{var n={name:t.name,email:t.email,uid:t.id,provider:"facebook",image:t.picture.data.url,token:e.authResponse.accessToken};localStorage.setItem("_login_provider","facebook"),o.next(n),o.complete()}})},{scope:"email"})});break;case"linkedin":IN.User.authorize(function(){IN.API.Raw("/people/~:(id,first-name,last-name,email-address,picture-url)").result(function(e){var t={name:e.firstName+" "+e.lastName,email:e.emailAddress,uid:e.id,provider:"linkedIN",image:e.pictureUrl};localStorage.setItem("_login_provider","linkedin"),o.next(t),o.complete()})})}})},e.prototype.logout=function(){var e=localStorage.getItem("_login_provider");return o.Observable.create(function(t){switch(e){case"google":var o=document.getElementById("gSignout");void 0!==o&&null!=o&&o.remove();var n=document,r=void 0,i=n.getElementsByTagName("script")[0];r=n.createElement("script"),r.src="https://accounts.google.com/Logout",r.type="text/javascript",r.id="gSignout",localStorage.removeItem("_login_provider"),t.next(!0),t.complete(),i.parentNode.insertBefore(r,i);break;case"facebook":FB.logout(function(e){localStorage.removeItem("_login_provider"),t.next(!0),t.complete()});break;case"linkedin":IN.User.logout(function(){localStorage.removeItem("_login_provider"),t.next(!0),t.complete()},{})}})},e.prototype._fetchGoogleUserDetails=function(){var e=this.gauth.currentUser.get(),t=e.getBasicProfile();return{token:e.getAuthResponse().id_token,access_token:e.getAuthResponse().access_token,uid:t.getId(),name:t.getName(),email:t.getEmail(),image:t.getImageUrl(),provider:"google"}},e}(),e.AuthService=n([t.Injectable()],e.AuthService);var r=function(e,t,o,n){var r,i=arguments.length,a=i<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,o):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,o,n);else for(var c=e.length-1;c>=0;c--)(r=e[c])&&(a=(i<3?r(a):i>3?r(t,o,a):r(t,o))||a);return i>3&&a&&Object.defineProperty(t,o,a),a};e.Angular2SocialLoginModule=function(){function e(){}return e.loadProvidersScripts=function(e){var t={google:function(e){var t,o=document,n=o.getElementsByTagName("script")[0];t=o.createElement("script"),t.async=!0,t.src="//apis.google.com/js/platform.js",t.onload=function(){gapi.load("auth2",function(){gapi.auth2.init({client_id:e.clientId,scope:"email"})})},n.parentNode.insertBefore(t,n)},linkedin:function(e){var t,o=document,n=o.getElementsByTagName("script")[0];t=o.createElement("script"),t.async=!1,t.src="//platform.linkedin.com/in.js",t.text=("api_key: "+e.clientId).replace('"',""),n.parentNode.insertBefore(t,n)},facebook:function(e){var t,o=document,n=o.getElementsByTagName("script")[0];t=o.createElement("script"),t.id="facebook-jssdk",t.async=!0,t.src="//connect.facebook.net/en_US/sdk.js",t.onload=function(){FB.init({appId:e.clientId,status:!0,cookie:!0,xfbml:!0,version:e.apiVersion})},n.parentNode.insertBefore(t,n)}};Object.keys(e).forEach(function(o){t[o](e[o])})},e}(),e.Angular2SocialLoginModule=r([t.NgModule({providers:[e.AuthService]})],e.Angular2SocialLoginModule),Object.defineProperty(e,"__esModule",{value:!0})});