This makes the OIDC lookup lazy, ensuring that the rest of the registry and app continues working even if one OIDC provider goes down.
44 lines
No EOL
1.4 KiB
JavaScript
44 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()) {
|
|
callback(null);
|
|
return;
|
|
}
|
|
|
|
// 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;
|
|
}]); |