77 lines
No EOL
2.3 KiB
JavaScript
77 lines
No EOL
2.3 KiB
JavaScript
/**
|
|
* An element which displays a robot credentials dialog.
|
|
*/
|
|
angular.module('quay').directive('robotCredentialsDialog', function () {
|
|
var directiveDefinitionObject = {
|
|
priority: 0,
|
|
templateUrl: '/static/directives/robot-credentials-dialog.html',
|
|
replace: false,
|
|
transclude: true,
|
|
restrict: 'C',
|
|
scope: {
|
|
'info': '=info',
|
|
},
|
|
controller: function($scope, $element, ApiService, UserService, StateService) {
|
|
$scope.credentials = null;
|
|
$scope.inReadOnlyMode = StateService.inReadOnlyMode();
|
|
|
|
var lookupRobot = function() {
|
|
var pieces = $scope.info.name.split('+');
|
|
var params = {
|
|
'robot_shortname': pieces[1]
|
|
};
|
|
|
|
$scope.credentials = {
|
|
'loading': true
|
|
};
|
|
|
|
var organization = UserService.isOrganization(pieces[0]) ? pieces[0] : null;
|
|
ApiService.getRobot(organization, null, params).then(function(resp) {
|
|
$scope.credentials = {
|
|
'username': $scope.info.name,
|
|
'password': resp['token']
|
|
};
|
|
|
|
$scope.showRegenerateToken = false;
|
|
$scope.tokenRegenerated = false;
|
|
}, ApiService.errorDisplay('Could not load robot information', function() {
|
|
$scope.credentials = null;
|
|
}));
|
|
};
|
|
|
|
$scope.askRegenerateToken = function() {
|
|
if ($scope.inReadOnlyMode) {
|
|
return;
|
|
}
|
|
|
|
$scope.showRegenerateToken = true;
|
|
};
|
|
|
|
$scope.regenerateToken = function() {
|
|
if ($scope.inReadOnlyMode) {
|
|
return;
|
|
}
|
|
|
|
var pieces = $scope.info.name.split('+');
|
|
var shortName = pieces[1];
|
|
|
|
var organization = UserService.isOrganization(pieces[0]) ? pieces[0] : null;
|
|
ApiService.regenerateRobotToken(organization, null, {'robot_shortname': shortName}).then(function(updated) {
|
|
$scope.credentials = {
|
|
'username': $scope.info.name,
|
|
'password': updated['token']
|
|
};
|
|
$scope.showRegenerateToken = false;
|
|
$scope.tokenRegenerated = true;
|
|
}, ApiService.errorDisplay('Cannot regenerate robot account token'))
|
|
};
|
|
|
|
$scope.$watch('info', function(info) {
|
|
if (info && info.name) {
|
|
lookupRobot();
|
|
}
|
|
});
|
|
}
|
|
};
|
|
return directiveDefinitionObject;
|
|
}); |