43 lines
No EOL
1.4 KiB
JavaScript
43 lines
No EOL
1.4 KiB
JavaScript
/**
|
|
* Service which exposes the supported external logins.
|
|
*/
|
|
angular.module('quay').factory('ExternalLoginService', ['Features', 'Config', 'ApiService',
|
|
function(Features, Config, ApiService) {
|
|
var externalLoginService = {};
|
|
|
|
externalLoginService.EXTERNAL_LOGINS = window.__external_login || [];
|
|
|
|
externalLoginService.getLoginUrl = function(loginService, action, callback) {
|
|
var errorDisplay = ApiService.errorDisplay('Could not load external login service ' +
|
|
'information. Please contact your service ' +
|
|
'administrator.')
|
|
|
|
var params = {
|
|
'service_id': loginService['id']
|
|
};
|
|
|
|
var data = {
|
|
'kind': action
|
|
};
|
|
|
|
ApiService.retrieveExternalLoginAuthorizationUrl(data, params).then(function(resp) {
|
|
callback(resp['auth_url']);
|
|
}, errorDisplay);
|
|
};
|
|
|
|
externalLoginService.hasSingleSignin = function() {
|
|
return externalLoginService.EXTERNAL_LOGINS.length == 1 && !Features.DIRECT_LOGIN;
|
|
};
|
|
|
|
externalLoginService.getSingleSigninUrl = function(callback) {
|
|
if (!externalLoginService.hasSingleSignin()) {
|
|
return callback(null);
|
|
}
|
|
|
|
// If there is a single external login service and direct login is disabled,
|
|
// then redirect to the external login directly.
|
|
externalLoginService.getLoginUrl(externalLoginService.EXTERNAL_LOGINS[0], 'login', callback);
|
|
};
|
|
|
|
return externalLoginService;
|
|
}]); |