Moves all the external login services into a set of classes that share as much code as possible. These services are then registered on both the client and server, allowing us in the followup change to dynamically register new handlers
51 lines
No EOL
1.6 KiB
JavaScript
51 lines
No EOL
1.6 KiB
JavaScript
/**
|
|
* Element for managing the applications authorized by a user.
|
|
*/
|
|
angular.module('quay').directive('externalLoginsManager', function () {
|
|
var directiveDefinitionObject = {
|
|
priority: 0,
|
|
templateUrl: '/static/directives/external-logins-manager.html',
|
|
replace: false,
|
|
transclude: false,
|
|
restrict: 'C',
|
|
scope: {
|
|
'user': '=user',
|
|
},
|
|
controller: function($scope, $element, ApiService, UserService, Features, Config, KeyService,
|
|
ExternalLoginService) {
|
|
$scope.Features = Features;
|
|
$scope.Config = Config;
|
|
$scope.KeyService = KeyService;
|
|
|
|
$scope.EXTERNAL_LOGINS = ExternalLoginService.EXTERNAL_LOGINS;
|
|
$scope.externalLoginInfo = {};
|
|
$scope.hasSingleSignin = ExternalLoginService.hasSingleSignin();
|
|
|
|
UserService.updateUserIn($scope, function(user) {
|
|
$scope.cuser = jQuery.extend({}, user);
|
|
$scope.externalLoginInfo = {};
|
|
|
|
if ($scope.cuser.logins) {
|
|
for (var i = 0; i < $scope.cuser.logins.length; i++) {
|
|
var login = $scope.cuser.logins[i];
|
|
login.metadata = login.metadata || {};
|
|
$scope.externalLoginInfo[login.service] = login;
|
|
}
|
|
}
|
|
});
|
|
|
|
$scope.detachExternalLogin = function(service_id) {
|
|
if (!Features.DIRECT_LOGIN) { return; }
|
|
|
|
var params = {
|
|
'service_id': service_id
|
|
};
|
|
|
|
ApiService.detachExternalLogin(null, params).then(function() {
|
|
UserService.load();
|
|
}, ApiService.errorDisplay('Count not detach service'));
|
|
};
|
|
}
|
|
};
|
|
return directiveDefinitionObject;
|
|
}); |