2a24bbfb50
Fixes #1697
144 lines
No EOL
4 KiB
JavaScript
144 lines
No EOL
4 KiB
JavaScript
(function() {
|
|
/**
|
|
* Page that displays details about an user.
|
|
*/
|
|
angular.module('quayPages').config(['pages', function(pages) {
|
|
pages.create('user-view', 'user-view.html', UserViewCtrl, {
|
|
'newLayout': true,
|
|
'title': 'User {{ user.username }}',
|
|
'description': 'User {{ user.username }}'
|
|
})
|
|
}]);
|
|
|
|
function UserViewCtrl($scope, $routeParams, $timeout, ApiService, UserService, UIService, AvatarService, Config, ExternalLoginService) {
|
|
var username = $routeParams.username;
|
|
|
|
$scope.showAppsCounter = 0;
|
|
$scope.showRobotsCounter = 0;
|
|
$scope.showBillingCounter = 0;
|
|
$scope.showLogsCounter = 0;
|
|
|
|
$scope.changeEmailInfo = null;
|
|
$scope.changePasswordInfo = null;
|
|
$scope.hasSingleSignin = ExternalLoginService.hasSingleSignin();
|
|
$scope.context = {};
|
|
|
|
UserService.updateUserIn($scope);
|
|
|
|
var loadRepositories = function() {
|
|
var options = {
|
|
'public': true,
|
|
'namespace': username,
|
|
'last_modified': true,
|
|
'popularity': true
|
|
};
|
|
|
|
$scope.context.viewuser.repositories = ApiService.listReposAsResource().withOptions(options).get(function(resp) {
|
|
return resp.repositories;
|
|
});
|
|
};
|
|
|
|
var loadUser = function() {
|
|
$scope.userResource = ApiService.getUserInformationAsResource({'username': username}).get(function(user) {
|
|
$scope.context.viewuser = user;
|
|
$scope.viewuser = user;
|
|
|
|
$timeout(function() {
|
|
// Load the repositories.
|
|
loadRepositories();
|
|
|
|
// Show the password change dialog if immediately after an account recovery.
|
|
if ($routeParams.action == 'password' && UserService.isNamespaceAdmin(username)) {
|
|
$scope.showChangePassword();
|
|
}
|
|
}, 10);
|
|
});
|
|
};
|
|
|
|
// Load the user.
|
|
loadUser();
|
|
|
|
$scope.showRobots = function() {
|
|
$scope.showRobotsCounter++;
|
|
};
|
|
|
|
$scope.showLogs = function() {
|
|
$scope.showLogsCounter++;
|
|
};
|
|
|
|
$scope.showApplications = function() {
|
|
$scope.showAppsCounter++;
|
|
};
|
|
|
|
$scope.showChangePassword = function() {
|
|
$scope.changePasswordInfo = {};
|
|
};
|
|
|
|
$scope.changePassword = function(info, callback) {
|
|
if (Config.AUTHENTICATION_TYPE != 'Database') { return; }
|
|
|
|
var data = {
|
|
'password': $scope.changePasswordInfo.password
|
|
};
|
|
|
|
var errorDisplay = ApiService.errorDisplay('Could not change password', callback);
|
|
|
|
ApiService.changeUserDetails(data).then(function(resp) {
|
|
// Reload the user.
|
|
UserService.load();
|
|
callback(true);
|
|
}, errorDisplay);
|
|
};
|
|
|
|
$scope.generateClientToken = function() {
|
|
var generateToken = function(password) {
|
|
if (!password) {
|
|
return;
|
|
}
|
|
|
|
var data = {
|
|
'password': password
|
|
};
|
|
|
|
ApiService.generateUserClientKey(data).then(function(resp) {
|
|
$scope.context.encryptedPasswordCredentials = {
|
|
'username': UserService.getCLIUsername(),
|
|
'password': resp['key'],
|
|
'namespace': UserService.currentUser().username
|
|
};
|
|
}, ApiService.errorDisplay('Could not generate token'));
|
|
};
|
|
|
|
UIService.showPasswordDialog('Enter your password to generate an encrypted version:', generateToken);
|
|
};
|
|
|
|
$scope.showChangeEmail = function() {
|
|
$scope.changeEmailInfo = {
|
|
'email': $scope.context.viewuser.email
|
|
};
|
|
};
|
|
|
|
$scope.changeEmail = function(info, callback) {
|
|
var details = {
|
|
'email': $scope.changeEmailInfo.email
|
|
};
|
|
|
|
var errorDisplay = ApiService.errorDisplay('Could not change email address', callback);
|
|
|
|
ApiService.changeUserDetails(details).then(function() {
|
|
$scope.context.emailAwaitingChange = $scope.changeEmailInfo.email;
|
|
callback(true);
|
|
}, errorDisplay);
|
|
};
|
|
|
|
$scope.showChangeAccount = function() {
|
|
$scope.convertAccountInfo = {
|
|
'user': $scope.context.viewuser
|
|
};
|
|
};
|
|
|
|
$scope.showBilling = function() {
|
|
$scope.showBillingCounter++;
|
|
};
|
|
}
|
|
})(); |