auth0-angular
Advanced tools
Comparing version 4.2.2 to 5.0.0
/** | ||
* Angular SDK to use with Auth0 | ||
* @version v4.2.2 - 2016-06-09 | ||
* @version v5.0.0 - 2016-06-21 | ||
* @link https://auth0.com | ||
@@ -11,2 +11,3 @@ * @author Martin Gontovnikas | ||
.run(['auth', function(auth) { | ||
'ngInject'; | ||
auth.hookEvents(); | ||
@@ -29,2 +30,3 @@ }]); | ||
.provider('authUtils', function() { | ||
'ngInject'; | ||
var Utils = { | ||
@@ -179,2 +181,3 @@ /* | ||
.provider('auth', ['authUtilsProvider', function(authUtilsProvider) { | ||
'ngInject'; | ||
var defaultOptions = { | ||
@@ -311,3 +314,5 @@ callbackOnLocationHash: true | ||
this.auth0lib = new constructorInfo.constructor(this.clientID, domain, angular.extend(defaultOptions, options)); | ||
this.auth0js = this.auth0lib.getClient(); | ||
if(this.auth0lib.getClient) { | ||
this.auth0js = this.auth0lib.getClient(); | ||
} | ||
this.isLock = true; | ||
@@ -333,3 +338,6 @@ } else { | ||
var events = ['loginSuccess', 'loginFailure', 'logout', 'forbidden', 'authenticated']; | ||
// var lockEvents = ['show', 'hide']; | ||
angular.forEach(events, function(anEvent) { | ||
@@ -341,4 +349,4 @@ config['add' + authUtilsProvider.capitalize(anEvent) + 'Handler'] = function(handler) { | ||
this.$get = ['$rootScope', '$q', '$injector', '$window', '$location', 'authUtils', '$http', | ||
function($rootScope, $q, $injector, $window, $location, authUtils, $http) { | ||
this.$get = | ||
['$rootScope', '$q', '$injector', '$window', '$location', 'authUtils', '$http', function($rootScope, $q, $injector, $window, $location, authUtils, $http) { | ||
var auth = { | ||
@@ -366,6 +374,6 @@ isAuthenticated: false | ||
idToken = idToken || profile.idToken; | ||
accessToken = accessToken || profile.accessToken; | ||
state = state || profile.state; | ||
refreshToken = refreshToken || profile.refreshToken; | ||
idToken = idToken || (profile ? profile.idToken : null); | ||
accessToken = accessToken || (profile ? profile.accessToken : null); | ||
state = state || (profile ? profile.state : null); | ||
refreshToken = refreshToken || (profile ? profile.refreshToken : null); | ||
@@ -513,4 +521,3 @@ var profilePromise = auth.getProfile(idToken); | ||
var linkAccount = function(primaryJWT, secondaryJWT, profile){ | ||
var user_id = profile.user_id; | ||
var linkAccount = function(primaryJWT, secondaryJWT, user_id){ | ||
return $http( | ||
@@ -546,4 +553,18 @@ { | ||
auth.init = angular.bind(config, config.init); | ||
auth.lockOn = function (event, handler) { | ||
var lockEvents = ['show', 'hide', 'error', 'authenticated', 'authorization_error']; | ||
if(config.lib === 'Auth0Lock') { | ||
if(lockEvents.indexOf(event) !== -1) { | ||
var lib = innerAuth0libraryConfiguration[config.lib].library(); | ||
lib.on(event, handler); | ||
} else { | ||
throw new Error ('Event \'' + event + '\' does not exist in Lock'); | ||
} | ||
} else { | ||
throw new Error ('Only applicable when using Lock: https://github.com/auth0/lock'); | ||
} | ||
}; | ||
@@ -866,2 +887,3 @@ /* | ||
.directive('ifUser', ['$rootScope', function($rootScope){ | ||
'ngInject'; | ||
return { | ||
@@ -868,0 +890,0 @@ link: function(scope, element){ |
@@ -1,1 +0,1 @@ | ||
angular.module("auth0",["auth0.service","auth0.utils","auth0.directives"]).run(["auth",function(a){a.hookEvents()}]),angular.module("auth0.utils",[]).provider("authUtils",function(){var a={capitalize:function(a){return a?a.charAt(0).toUpperCase()+a.substring(1).toLowerCase():null},fnName:function(a){var b=a.toString();return b=b.substr("function ".length),b=b.substr(0,b.indexOf("(")),b?b.trim():b}};angular.extend(this,a),this.$get=["$rootScope","$q",function(b,c){var d={};return angular.extend(d,a),d.safeApply=function(a){var c=b.$root.$$phase;"$apply"===c||"$digest"===c?a&&"function"==typeof a&&a():b.$apply(a)},d.callbackify=function(a,b,c,e){return angular.isFunction(a)?function(f){f=Array.prototype.slice.call(arguments);var g=function(a,d,e){return a?void(c&&c(a)):(e=Array.prototype.slice.call(arguments,1),void(b&&b.apply(null,e)))};(b||c)&&f.push(d.applied(g)),a.apply(e,f)}:void 0},d.promisify=function(a,b){return angular.isFunction(a)?function(e){e=Array.prototype.slice.call(arguments);var f=c.defer(),g=function(a,b,c){return a?void f.reject(a):(c=Array.prototype.slice.call(arguments,1),void f.resolve(c.length>1?c:b))};return e.push(d.applied(g)),a.apply(b,e),f.promise.spread=f.promise.spread||function(a,b){return f.promise.then(function(b){return Array.isArray(b)?a.apply(null,b):a(b)},b)},f.promise}:void 0},d.applied=function(a){return function(b,c){b=b,c=c;var e=arguments;d.safeApply(function(){a.apply(null,e)})}},d}]}),angular.module("auth0.service",["auth0.utils"]).provider("auth",["authUtilsProvider",function(a){function b(a,b){b=b||f.lib;var c=g[b].library();return c[g[b][a]]}function c(a,b){return b=b||f.lib,g[b][a]}function d(b){if(b)return{lib:a.fnName(b),constructor:b};if(null!=window.Auth0Lock)return{lib:"Auth0Lock",constructor:window.Auth0Lock};if(null!=window.Auth0)return{lib:"Auth0",constructor:window.Auth0};if("undefined"!=typeof Auth0Widget)throw new Error("Auth0Widget is not supported with this version of auth0-angularanymore. Please try with an older one");throw new Error("Cannot initialize Auth0Angular. Auth0Lock or Auth0 must be available")}var e={callbackOnLocationHash:!0},f=this,g={Auth0:{signin:"login",signinOnly:"signinOnly",signup:"signup",reset:"changePassword",validateUser:"validateUser",library:function(){return f.auth0js},parseOptions:function(a){var b=angular.copy(a);return b.authParams&&(angular.extend(b,b.authParams),delete b.authParams),b}},Auth0Lock:{signin:"show",signinOnly:"showSignin",signup:"showSignup",reset:"showReset",library:function(){return f.auth0lib},parseOptions:function(a){return angular.copy(a)}}};this.init=function(a,b){if(!a)throw new Error("You must set options when calling init");this.loginUrl=a.loginUrl,this.loginUrlParams=a.loginUrlParams,this.loginState=a.loginState,this.loginStateParams=a.loginStateParams,this.clientID=a.clientID||a.clientId;var c=a.domain;this.domain=c,this.sso=a.sso;var f=d(b);this.lib=f.lib,"Auth0Lock"===f.lib?(this.auth0lib=new f.constructor(this.clientID,c,angular.extend(e,a)),this.auth0js=this.auth0lib.getClient(),this.isLock=!0):(this.auth0lib=new f.constructor(angular.extend(e,a)),this.auth0js=this.auth0lib,this.isLock=!1),this.initialized=!0},this.eventHandlers={},this.on=function(a,b){this.eventHandlers[a]||(this.eventHandlers[a]=[]),this.eventHandlers[a].push(b)};var h=["loginSuccess","loginFailure","logout","forbidden","authenticated"];angular.forEach(h,function(b){f["add"+a.capitalize(b)+"Handler"]=function(a){f.on(b,a)}}),this.$get=["$rootScope","$q","$injector","$window","$location","authUtils","$http",function(a,d,e,h,i,j,k){function l(){f.loginUrl?i.path(f.loginUrl,f.loginUrlParams):f.loginState?e.get("$state").go(f.loginState,f.loginStateParams):p("forbidden")}function m(a,b,c,d){n.isAuthenticated||n.refreshTokenPromise||(f.sso?(a&&b.preventDefault(),f.auth0js.getSSOData(j.applied(function(e,f){if(f.sso){var g={popup:!1,callbackOnLocationHash:!0,connection:f.lastUsedConnection.name,authParams:{state:c()}};p("ssoLogin",{loginOptions:g}),n.signin(g,null,null,"Auth0")}else a&&(b.preventDefault(),d())}))):a&&(b.preventDefault(),d()))}var n={isAuthenticated:!1};a.isAuthenticated=!1;var o=function(a){return f.eventHandlers[a]},p=function(b,c){a.$broadcast("auth0."+b,c),angular.forEach(o(b)||[],function(a){e.invoke(a,n,c)})},q=function(b,c,d,e,f,g){b=b||f.idToken,c=c||f.accessToken,d=d||f.state,e=e||f.refreshToken;var h=n.getProfile(b),i={idToken:b,accessToken:c,state:d,refreshToken:e,profile:f,isAuthenticated:!0};return a.isAuthenticated=!0,angular.extend(n,i),p(g?"authenticated":"loginSuccess",angular.extend({profilePromise:h},i)),h};a.$on("$locationChangeStart",function(){if(f.initialized){var a=f.auth0lib.parseHash(h.location.hash);return!n.isAuthenticated&&a&&(a.idToken||a.id_token)?void q(a.idToken||a.id_token,a.accessToken||a.access_token,a.state,a.refreshToken||a.refresh_token):void 0}}),a.$on("auth0.forbiddenRequest",function(){l()}),f.loginUrl&&a.$on("$routeChangeStart",function(a,b){f.initialized&&m(b.$$route&&b.$$route.requiresLogin,a,function(){return JSON.stringify({redirect_to:{path:i.path()}})},function(){i.path(f.loginUrl,f.loginUrlParams)})}),f.loginState&&a.$on("$stateChangeStart",function(a,b,c){f.initialized&&m(b.data&&b.data.requiresLogin,a,function(){return JSON.stringify({redirect_to:{state:b.name,params:c}})},function(){e.get("$state").go(f.loginState,f.loginStateParams)})}),n.config=f;var r=function(a,b){var c=o("loginSuccess");if(!(b||a.username||a.email||c&&0!==c.length))throw new Error("You must define a loginSuccess handler if not using popup mode or not doing ro call because that means you are doing a redirect")},s=function(a,b,c){var d=c.user_id;return k({method:"POST",url:"https://"+f.domain+"/api/v2/users/"+d+"/identities",headers:{Authorization:"Bearer "+a},data:{link_with:b}})},t=function(a,b,c,d){return k({method:"DELETE",url:"https://"+f.domain+"/api/v2/users/"+b+"/identities/"+c+"/"+d,headers:{Authorization:"Bearer "+a}})};return n.hookEvents=function(){},n.init=angular.bind(f,f.init),n.getToken=function(a){a=a||{scope:"openid"},a.id_token||a.refresh_token||(a.id_token=n.idToken);var b=j.promisify(f.auth0js.getDelegationToken,f.auth0js);return b(a)},n.refreshIdToken=function(a){var b=j.promisify(f.auth0js.refreshToken,f.auth0js);return n.refreshTokenPromise=b(a||n.refreshToken).then(function(a){return a.id_token})["finally"](function(){n.refreshTokenPromise=null}),n.refreshTokenPromise},n.renewIdToken=function(a){var b=j.promisify(f.auth0js.renewIdToken,f.auth0js);return b(a||n.idToken).then(function(a){return a.id_token})},n.signin=function(a,d,e,h){a=a||{},r(a,d,e),a=c("parseOptions",h)(a);var i=b("signin",h),k=d?function(b,c,e,f,g){c=c||b.idToken,e=e||b.accessToken,f=f||b.state,g=g||b.refreshToken,c||angular.isUndefined(a.loginAfterSignup)||a.loginAfterSignup?q(c,e,f,g,b).then(function(a){d&&d(a,c,e,f,g)}):d()}:null,l=e?function(a){p("loginFailure",{error:a}),e&&e(a)}:null,m=j.callbackify(i,k,l,g[h||f.lib].library());m(a)},n.signinOnly=function(a,d,e,h){a=a||{},r(a,d,e),a=c("parseOptions",h)(a);var i=b("signinOnly",h),k=d?function(b,c,e,f,g){c||angular.isUndefined(a.loginAfterSignup)||a.loginAfterSignup?q(c,e,f,g,b).then(function(a){d&&d(a,c,e,f,g)}):d()}:null,l=e?function(a){p("loginFailure",{error:a}),e&&e(a)}:null,m=j.callbackify(i,k,l,g[h||f.lib].library());m(a)},n.signup=function(a,d,e){a=a||{},r(a,d,e),a=c("parseOptions")(a);var g=d?function(b,c,e,f,g){angular.isUndefined(a.auto_login)||a.auto_login?q(c,e,f,g,b).then(function(a){d&&d(a,c,e,f,g)}):d()}:null,h=e?function(a){p("loginFailure",{error:a}),e&&e(a)}:null,i=f.auth0lib,k=j.callbackify(b("signup"),g,h,i);k(a)},n.linkAccount=function(a,d,e,h,i,k){var l={popup:!0};if(!a||!d)throw new Error("Available token and profile is needed to link to another");if(!e.connection)throw new Error("Connection type (eg: facebook, github) is required to link account");e=e||{},r(e,h,i),angular.extend(e,l),e=c("parseOptions",k)(e);var m=b("signin",k),n=function(b,c){s(a,c,d).then(function(a){h(a)},function(a){i(a)})},o=function(a){i&&i(a)},p=j.callbackify(m,n,o,g[k||f.lib].library());p(e)},n.unLinkAccount=function(a,b,c,d){if(!(a&&b&&c&&d))throw new Error("All the arguments are required to unlink. Please refer to documentation for the arguments");return t(a,b,c,d)},n.reset=function(a,d,e){a=a||{},a=c("parseOptions")(a);var g=f.auth0lib,h=j.callbackify(b("reset"),d,e,g);h(a)},n.validateUser=function(a,d,e){a=a||{},a=c("parseOptions")(a);var g=f.auth0lib,h=j.callbackify(b("validateUser"),d,e,g);h(a)},n.signout=function(){n.isAuthenticated=!1,n.profile=null,n.profilePromise=null,n.idToken=null,n.state=null,n.accessToken=null,n.tokenPayload=null,a.isAuthenticated=!1,p("logout")},n.authenticate=function(a,b,c,d,e){return q(b,c,d,e,a,!0)},n.getProfile=function(a){var b=j.promisify(f.auth0lib.getProfile,f.auth0lib);return n.profilePromise=b(a||n.idToken),n.profilePromise.then(function(a){return n.profile=a,a})},n.hide=function(a){f.auth0lib.hide(a)},n}]}]),angular.module("auth0.directives",["auth0.service"]),angular.module("auth0.directives").directive("ifUser",["$rootScope",function(a){return{link:function(b,c){a.$watch("isAuthenticated",function(a){a?c.removeClass("ng-hide"):c.addClass("ng-hide")})}}}]); | ||
angular.module("auth0",["auth0.service","auth0.utils","auth0.directives"]).run(["auth",function(a){"ngInject";a.hookEvents()}]),angular.module("auth0.utils",[]).provider("authUtils",function(){"ngInject";var a={capitalize:function(a){return a?a.charAt(0).toUpperCase()+a.substring(1).toLowerCase():null},fnName:function(a){var b=a.toString();return b=b.substr("function ".length),b=b.substr(0,b.indexOf("(")),b?b.trim():b}};angular.extend(this,a),this.$get=["$rootScope","$q",function(b,c){var d={};return angular.extend(d,a),d.safeApply=function(a){var c=b.$root.$$phase;"$apply"===c||"$digest"===c?a&&"function"==typeof a&&a():b.$apply(a)},d.callbackify=function(a,b,c,e){return angular.isFunction(a)?function(f){f=Array.prototype.slice.call(arguments);var g=function(a,d,e){return a?void(c&&c(a)):(e=Array.prototype.slice.call(arguments,1),void(b&&b.apply(null,e)))};(b||c)&&f.push(d.applied(g)),a.apply(e,f)}:void 0},d.promisify=function(a,b){return angular.isFunction(a)?function(e){e=Array.prototype.slice.call(arguments);var f=c.defer(),g=function(a,b,c){return a?void f.reject(a):(c=Array.prototype.slice.call(arguments,1),void f.resolve(c.length>1?c:b))};return e.push(d.applied(g)),a.apply(b,e),f.promise.spread=f.promise.spread||function(a,b){return f.promise.then(function(b){return Array.isArray(b)?a.apply(null,b):a(b)},b)},f.promise}:void 0},d.applied=function(a){return function(b,c){b=b,c=c;var e=arguments;d.safeApply(function(){a.apply(null,e)})}},d}]}),angular.module("auth0.service",["auth0.utils"]).provider("auth",["authUtilsProvider",function(a){"ngInject";function b(a,b){b=b||f.lib;var c=g[b].library();return c[g[b][a]]}function c(a,b){return b=b||f.lib,g[b][a]}function d(b){if(b)return{lib:a.fnName(b),constructor:b};if(null!=window.Auth0Lock)return{lib:"Auth0Lock",constructor:window.Auth0Lock};if(null!=window.Auth0)return{lib:"Auth0",constructor:window.Auth0};if("undefined"!=typeof Auth0Widget)throw new Error("Auth0Widget is not supported with this version of auth0-angularanymore. Please try with an older one");throw new Error("Cannot initialize Auth0Angular. Auth0Lock or Auth0 must be available")}var e={callbackOnLocationHash:!0},f=this,g={Auth0:{signin:"login",signinOnly:"signinOnly",signup:"signup",reset:"changePassword",validateUser:"validateUser",library:function(){return f.auth0js},parseOptions:function(a){var b=angular.copy(a);return b.authParams&&(angular.extend(b,b.authParams),delete b.authParams),b}},Auth0Lock:{signin:"show",signinOnly:"showSignin",signup:"showSignup",reset:"showReset",library:function(){return f.auth0lib},parseOptions:function(a){return angular.copy(a)}}};this.init=function(a,b){if(!a)throw new Error("You must set options when calling init");this.loginUrl=a.loginUrl,this.loginUrlParams=a.loginUrlParams,this.loginState=a.loginState,this.loginStateParams=a.loginStateParams,this.clientID=a.clientID||a.clientId;var c=a.domain;this.domain=c,this.sso=a.sso;var f=d(b);this.lib=f.lib,"Auth0Lock"===f.lib?(this.auth0lib=new f.constructor(this.clientID,c,angular.extend(e,a)),this.auth0lib.getClient&&(this.auth0js=this.auth0lib.getClient()),this.isLock=!0):(this.auth0lib=new f.constructor(angular.extend(e,a)),this.auth0js=this.auth0lib,this.isLock=!1),this.initialized=!0},this.eventHandlers={},this.on=function(a,b){this.eventHandlers[a]||(this.eventHandlers[a]=[]),this.eventHandlers[a].push(b)};var h=["loginSuccess","loginFailure","logout","forbidden","authenticated"];angular.forEach(h,function(b){f["add"+a.capitalize(b)+"Handler"]=function(a){f.on(b,a)}}),this.$get=["$rootScope","$q","$injector","$window","$location","authUtils","$http",function(a,d,e,h,i,j,k){function l(){f.loginUrl?i.path(f.loginUrl,f.loginUrlParams):f.loginState?e.get("$state").go(f.loginState,f.loginStateParams):p("forbidden")}function m(a,b,c,d){n.isAuthenticated||n.refreshTokenPromise||(f.sso?(a&&b.preventDefault(),f.auth0js.getSSOData(j.applied(function(e,f){if(f.sso){var g={popup:!1,callbackOnLocationHash:!0,connection:f.lastUsedConnection.name,authParams:{state:c()}};p("ssoLogin",{loginOptions:g}),n.signin(g,null,null,"Auth0")}else a&&(b.preventDefault(),d())}))):a&&(b.preventDefault(),d()))}var n={isAuthenticated:!1};a.isAuthenticated=!1;var o=function(a){return f.eventHandlers[a]},p=function(b,c){a.$broadcast("auth0."+b,c),angular.forEach(o(b)||[],function(a){e.invoke(a,n,c)})},q=function(b,c,d,e,f,g){b=b||(f?f.idToken:null),c=c||(f?f.accessToken:null),d=d||(f?f.state:null),e=e||(f?f.refreshToken:null);var h=n.getProfile(b),i={idToken:b,accessToken:c,state:d,refreshToken:e,profile:f,isAuthenticated:!0};return a.isAuthenticated=!0,angular.extend(n,i),p(g?"authenticated":"loginSuccess",angular.extend({profilePromise:h},i)),h};a.$on("$locationChangeStart",function(){if(f.initialized){var a=f.auth0lib.parseHash(h.location.hash);return!n.isAuthenticated&&a&&(a.idToken||a.id_token)?void q(a.idToken||a.id_token,a.accessToken||a.access_token,a.state,a.refreshToken||a.refresh_token):void 0}}),a.$on("auth0.forbiddenRequest",function(){l()}),f.loginUrl&&a.$on("$routeChangeStart",function(a,b){f.initialized&&m(b.$$route&&b.$$route.requiresLogin,a,function(){return JSON.stringify({redirect_to:{path:i.path()}})},function(){i.path(f.loginUrl,f.loginUrlParams)})}),f.loginState&&a.$on("$stateChangeStart",function(a,b,c){f.initialized&&m(b.data&&b.data.requiresLogin,a,function(){return JSON.stringify({redirect_to:{state:b.name,params:c}})},function(){e.get("$state").go(f.loginState,f.loginStateParams)})}),n.config=f;var r=function(a,b){var c=o("loginSuccess");if(!(b||a.username||a.email||c&&0!==c.length))throw new Error("You must define a loginSuccess handler if not using popup mode or not doing ro call because that means you are doing a redirect")},s=function(a,b,c){return k({method:"POST",url:"https://"+f.domain+"/api/v2/users/"+c+"/identities",headers:{Authorization:"Bearer "+a},data:{link_with:b}})},t=function(a,b,c,d){return k({method:"DELETE",url:"https://"+f.domain+"/api/v2/users/"+b+"/identities/"+c+"/"+d,headers:{Authorization:"Bearer "+a}})};return n.hookEvents=function(){},n.init=angular.bind(f,f.init),n.lockOn=function(a,b){var c=["show","hide","error","authenticated","authorization_error"];if("Auth0Lock"!==f.lib)throw new Error("Only applicable when using Lock: https://github.com/auth0/lock");if(-1===c.indexOf(a))throw new Error("Event '"+a+"' does not exist in Lock");var d=g[f.lib].library();d.on(a,b)},n.getToken=function(a){a=a||{scope:"openid"},a.id_token||a.refresh_token||(a.id_token=n.idToken);var b=j.promisify(f.auth0js.getDelegationToken,f.auth0js);return b(a)},n.refreshIdToken=function(a){var b=j.promisify(f.auth0js.refreshToken,f.auth0js);return n.refreshTokenPromise=b(a||n.refreshToken).then(function(a){return a.id_token})["finally"](function(){n.refreshTokenPromise=null}),n.refreshTokenPromise},n.renewIdToken=function(a){var b=j.promisify(f.auth0js.renewIdToken,f.auth0js);return b(a||n.idToken).then(function(a){return a.id_token})},n.signin=function(a,d,e,h){a=a||{},r(a,d,e),a=c("parseOptions",h)(a);var i=b("signin",h),k=d?function(b,c,e,f,g){c=c||b.idToken,e=e||b.accessToken,f=f||b.state,g=g||b.refreshToken,c||angular.isUndefined(a.loginAfterSignup)||a.loginAfterSignup?q(c,e,f,g,b).then(function(a){d&&d(a,c,e,f,g)}):d()}:null,l=e?function(a){p("loginFailure",{error:a}),e&&e(a)}:null,m=j.callbackify(i,k,l,g[h||f.lib].library());m(a)},n.signinOnly=function(a,d,e,h){a=a||{},r(a,d,e),a=c("parseOptions",h)(a);var i=b("signinOnly",h),k=d?function(b,c,e,f,g){c||angular.isUndefined(a.loginAfterSignup)||a.loginAfterSignup?q(c,e,f,g,b).then(function(a){d&&d(a,c,e,f,g)}):d()}:null,l=e?function(a){p("loginFailure",{error:a}),e&&e(a)}:null,m=j.callbackify(i,k,l,g[h||f.lib].library());m(a)},n.signup=function(a,d,e){a=a||{},r(a,d,e),a=c("parseOptions")(a);var g=d?function(b,c,e,f,g){angular.isUndefined(a.auto_login)||a.auto_login?q(c,e,f,g,b).then(function(a){d&&d(a,c,e,f,g)}):d()}:null,h=e?function(a){p("loginFailure",{error:a}),e&&e(a)}:null,i=f.auth0lib,k=j.callbackify(b("signup"),g,h,i);k(a)},n.linkAccount=function(a,d,e,h,i,k){var l={popup:!0};if(!a||!d)throw new Error("Available token and profile is needed to link to another");if(!e.connection)throw new Error("Connection type (eg: facebook, github) is required to link account");e=e||{},r(e,h,i),angular.extend(e,l),e=c("parseOptions",k)(e);var m=b("signin",k),n=function(b,c){s(a,c,d).then(function(a){h(a)},function(a){i(a)})},o=function(a){i&&i(a)},p=j.callbackify(m,n,o,g[k||f.lib].library());p(e)},n.unLinkAccount=function(a,b,c,d){if(!(a&&b&&c&&d))throw new Error("All the arguments are required to unlink. Please refer to documentation for the arguments");return t(a,b,c,d)},n.reset=function(a,d,e){a=a||{},a=c("parseOptions")(a);var g=f.auth0lib,h=j.callbackify(b("reset"),d,e,g);h(a)},n.validateUser=function(a,d,e){a=a||{},a=c("parseOptions")(a);var g=f.auth0lib,h=j.callbackify(b("validateUser"),d,e,g);h(a)},n.signout=function(){n.isAuthenticated=!1,n.profile=null,n.profilePromise=null,n.idToken=null,n.state=null,n.accessToken=null,n.tokenPayload=null,a.isAuthenticated=!1,p("logout")},n.authenticate=function(a,b,c,d,e){return q(b,c,d,e,a,!0)},n.getProfile=function(a){var b=j.promisify(f.auth0lib.getProfile,f.auth0lib);return n.profilePromise=b(a||n.idToken),n.profilePromise.then(function(a){return n.profile=a,a})},n.hide=function(a){f.auth0lib.hide(a)},n}]}]),angular.module("auth0.directives",["auth0.service"]),angular.module("auth0.directives").directive("ifUser",["$rootScope",function(a){"ngInject";return{link:function(b,c){a.$watch("isAuthenticated",function(a){a?c.removeClass("ng-hide"):c.addClass("ng-hide")})}}}]); |
@@ -5,2 +5,4 @@ var pkg = require('./package'); | ||
var majorVersion = pkg.version.replace(/\.(\d)*\.(\d)*$/, ''); | ||
var vNext = majorVersion + '.beta'; | ||
var path = require('path'); | ||
@@ -57,3 +59,18 @@ | ||
}, | ||
ngAnnotate: { | ||
options: { | ||
singleQuotes: true | ||
}, | ||
app: { | ||
files: { | ||
'src/auth0.js': ['src/auth0.js'], | ||
'src/services/auth0.utils.js': ['src/services/auth0.utils.js'], | ||
'src/services/auth0.service.js': ['src/services/auth0.service.js'], | ||
'src/directives/auth0.directive.js': ['src/directives/auth0.directive.js'], | ||
'src/directives/ifUser.directive.js': ['src/directives/ifUser.directive.js'] | ||
} | ||
} | ||
}, | ||
concat: { | ||
@@ -98,2 +115,3 @@ options: { | ||
'examples/widget/scripts/auth0-angular.js': 'build/auth0-angular.js', | ||
'examples/widget-10/scripts/auth0-angular.js': 'build/auth0-angular.js', | ||
'examples/sso/scripts/auth0-angular.js': 'build/auth0-angular.js', | ||
@@ -126,6 +144,35 @@ 'examples/widget-redirect/scripts/auth0-angular.js': 'build/auth0-angular.js', | ||
rename: renameRelease(majorVersion) | ||
}, { | ||
expand: true, | ||
flatten: true, | ||
src: 'build/auth0-angular.min.js', | ||
dest: 'release/', | ||
rename: renameRelease(pkg.version) | ||
}, { | ||
expand: true, | ||
flatten: true, | ||
src: 'build/auth0-angular.min.js', | ||
dest: 'release/', | ||
rename: renameRelease(minorVersion) | ||
}, { | ||
expand: true, | ||
flatten: true, | ||
src: 'build/auth0-angular.js', | ||
dest: 'release/', | ||
rename: renameRelease(vNext) | ||
}] | ||
}, | ||
release_vNext: { | ||
files: [{ | ||
expand: true, | ||
flatten: true, | ||
src: 'build/auth0-angular.js', | ||
dest: 'release/', | ||
rename: renameRelease(vNext) | ||
}] | ||
} | ||
}, | ||
connect: { | ||
@@ -180,9 +227,11 @@ scenario_custom_login: { | ||
files: [ | ||
{ action: 'delete', dest: 'w2/auth0-angular-' + pkg.version + '.js', }, | ||
{ action: 'delete', dest: 'w2/auth0-angular-' + pkg.version + '.min.js', }, | ||
{ action: 'delete', dest: 'w2/auth0-angular-' + majorVersion + '.js', }, | ||
{ action: 'delete', dest: 'w2/auth0-angular-' + majorVersion + '.min.js', }, | ||
{ action: 'delete', dest: 'w2/auth0-angular-' + minorVersion + '.js', }, | ||
{ action: 'delete', dest: 'w2/auth0-angular-' + minorVersion + '.min.js', }, | ||
{ action: 'delete', dest: 'w2/auth0-angular-' + minorVersion + '.min.js', } | ||
{ action: 'delete', dest: 'w2/auth0-angular-' + pkg.version + '.js' }, | ||
{ action: 'delete', dest: 'w2/auth0-angular-' + pkg.version + '.min.js' }, | ||
{ action: 'delete', dest: 'w2/auth0-angular-' + pkg.version + '.beta.js' }, | ||
{ action: 'delete', dest: 'w2/auth0-angular-' + pkg.version + '.beta.min.js' }, | ||
{ action: 'delete', dest: 'w2/auth0-angular-' + majorVersion + '.js' }, | ||
{ action: 'delete', dest: 'w2/auth0-angular-' + majorVersion + '.min.js' }, | ||
{ action: 'delete', dest: 'w2/auth0-angular-' + minorVersion + '.js' }, | ||
{ action: 'delete', dest: 'w2/auth0-angular-' + minorVersion + '.min.js' }, | ||
{ action: 'delete', dest: 'w2/auth0-angular-' + minorVersion + '.min.js' } | ||
] | ||
@@ -237,2 +286,14 @@ }, | ||
} | ||
}, | ||
purge_next: { | ||
options: { | ||
url: process.env.CDN_ROOT + '/w2/auth0-angular-' + pkg.version + '.beta.js', | ||
method: 'DELETE' | ||
} | ||
}, | ||
purge_next_min: { | ||
options: { | ||
url: process.env.CDN_ROOT + '/w2/auth0-angular-' + pkg.version + '.beta.min.js', | ||
method: 'DELETE' | ||
} | ||
} | ||
@@ -242,11 +303,16 @@ } | ||
grunt.registerTask('build', ['clean', 'jshint', 'concat', 'uglify', 'karma', 'copy']); | ||
grunt.registerTask('build', ['ngAnnotate', 'clean', 'jshint', 'concat', 'uglify', 'karma', 'copy']); | ||
grunt.registerTask('build_vNext', ['ngAnnotate', 'clean', 'jshint', 'concat', 'uglify', 'karma', 'copy:release_vNext']); | ||
grunt.registerTask('test', ['build', 'karma']); | ||
grunt.registerTask('scenario', ['build', 'connect:scenario_custom_login', 'protractor:local']); | ||
grunt.registerTask('purge_cdn', ['http:purge_js', 'http:purge_js_min', 'http:purge_major_js', 'http:purge_major_js_min', 'http:purge_minor_js', 'http:purge_minor_js_min']); | ||
grunt.registerTask('purge_cdn', ['http:purge_js', 'http:purge_js_min', 'http:purge_major_js', 'http:purge_major_js_min', 'http:purge_minor_js', 'http:purge_minor_js_min', 'http:purge_next', 'http:purge_next_min']); | ||
grunt.registerTask('purge_vNext', ['http:purge_next', 'http:purge_next_min']); | ||
grunt.registerTask('cdn', ['build', 'aws_s3', 'purge_cdn']); | ||
grunt.registerTask('cdn_vNext', ['build_vNext', 'aws_s3', 'purge_vNext']); | ||
grunt.registerTask('default', ['build', 'watch']); | ||
}; |
@@ -6,3 +6,3 @@ { | ||
"author": "Martin Gontovnikas", | ||
"version": "4.2.2", | ||
"version": "5.0.0", | ||
"main": "index.js", | ||
@@ -24,2 +24,3 @@ "devDependencies": { | ||
"grunt-karma": "^0.8.2", | ||
"grunt-ng-annotate": "^2.0.2", | ||
"grunt-ngmin": "0.0.3", | ||
@@ -26,0 +27,0 @@ "grunt-protractor-runner": "^0.2.4", |
angular.module('auth0', ['auth0.service', 'auth0.utils', 'auth0.directives']) | ||
.run(['auth', function(auth) { | ||
'ngInject'; | ||
auth.hookEvents(); | ||
}]); | ||
angular.module('auth0.directives') | ||
.directive('ifUser', ['$rootScope', function($rootScope){ | ||
'ngInject'; | ||
return { | ||
@@ -5,0 +6,0 @@ link: function(scope, element){ |
angular.module('auth0.service', ['auth0.utils']) | ||
.provider('auth', ['authUtilsProvider', function(authUtilsProvider) { | ||
'ngInject'; | ||
var defaultOptions = { | ||
@@ -135,3 +136,5 @@ callbackOnLocationHash: true | ||
this.auth0lib = new constructorInfo.constructor(this.clientID, domain, angular.extend(defaultOptions, options)); | ||
this.auth0js = this.auth0lib.getClient(); | ||
if(this.auth0lib.getClient) { | ||
this.auth0js = this.auth0lib.getClient(); | ||
} | ||
this.isLock = true; | ||
@@ -157,3 +160,6 @@ } else { | ||
var events = ['loginSuccess', 'loginFailure', 'logout', 'forbidden', 'authenticated']; | ||
// var lockEvents = ['show', 'hide']; | ||
angular.forEach(events, function(anEvent) { | ||
@@ -165,4 +171,4 @@ config['add' + authUtilsProvider.capitalize(anEvent) + 'Handler'] = function(handler) { | ||
this.$get = ['$rootScope', '$q', '$injector', '$window', '$location', 'authUtils', '$http', | ||
function($rootScope, $q, $injector, $window, $location, authUtils, $http) { | ||
this.$get = | ||
['$rootScope', '$q', '$injector', '$window', '$location', 'authUtils', '$http', function($rootScope, $q, $injector, $window, $location, authUtils, $http) { | ||
var auth = { | ||
@@ -190,6 +196,6 @@ isAuthenticated: false | ||
idToken = idToken || profile.idToken; | ||
accessToken = accessToken || profile.accessToken; | ||
state = state || profile.state; | ||
refreshToken = refreshToken || profile.refreshToken; | ||
idToken = idToken || (profile ? profile.idToken : null); | ||
accessToken = accessToken || (profile ? profile.accessToken : null); | ||
state = state || (profile ? profile.state : null); | ||
refreshToken = refreshToken || (profile ? profile.refreshToken : null); | ||
@@ -337,4 +343,3 @@ var profilePromise = auth.getProfile(idToken); | ||
var linkAccount = function(primaryJWT, secondaryJWT, profile){ | ||
var user_id = profile.user_id; | ||
var linkAccount = function(primaryJWT, secondaryJWT, user_id){ | ||
return $http( | ||
@@ -370,4 +375,18 @@ { | ||
auth.init = angular.bind(config, config.init); | ||
auth.lockOn = function (event, handler) { | ||
var lockEvents = ['show', 'hide', 'error', 'authenticated', 'authorization_error']; | ||
if(config.lib === 'Auth0Lock') { | ||
if(lockEvents.indexOf(event) !== -1) { | ||
var lib = innerAuth0libraryConfiguration[config.lib].library(); | ||
lib.on(event, handler); | ||
} else { | ||
throw new Error ('Event \'' + event + '\' does not exist in Lock'); | ||
} | ||
} else { | ||
throw new Error ('Only applicable when using Lock: https://github.com/auth0/lock'); | ||
} | ||
}; | ||
@@ -374,0 +393,0 @@ /* |
@@ -14,2 +14,3 @@ /* | ||
.provider('authUtils', function() { | ||
'ngInject'; | ||
var Utils = { | ||
@@ -16,0 +17,0 @@ /* |
@@ -14,2 +14,3 @@ describe('Auth0 Angular', function () { | ||
inject(function (auth) { expect(auth).to.be.ok; }); | ||
@@ -16,0 +17,0 @@ }); |
Sorry, the diff of this file is not supported yet
349056
163
4470
32
18