allow username to be set by admin, when username is empty

This commit is contained in:
Girish Ramakrishnan
2022-01-12 16:20:50 -08:00
parent 38211e719e
commit 7082dfd418
3 changed files with 18 additions and 1 deletions

View File

@@ -175,6 +175,14 @@
<form name="useredit_form" role="form" ng-submit="useredit.submit()" autocomplete="off">
<p class="has-error text-center" ng-show="useredit.error.generic">{{ useredit.error.generic }}</p>
<!-- when user profiles are locked, this provides a way for the admin to set the username -->
<div class="form-group" ng-hide="useredit.source || useredit.userInfo.username" ng-class="{ 'has-error': (useredit_form.username.$dirty && useredit_form.username.$invalid) || (!useredit_form.username.$dirty && useredit.error.username) }">
<label class="control-label">{{ 'users.user.username' | tr }}</label>
<div class="control-label" ng-show="(!useredit_form.username.$dirty && useredit.error.username) || (useredit_form.username.$dirty && useredit_form.username.$invalid) || (!useredit_form.username.$dirty && useredit.error.username)">
<small ng-show="!useredit_form.username.$dirty && useredit.error.username">{{ useredit.error.username }}</small>
</div>
<input type="text" class="form-control" ng-model="useredit.username" name="username" autocomplete="off">
</div>
<div class="form-group" ng-hide="useredit.source" ng-class="{ 'has-error': (useredit_form.displayName.$dirty && useredit_form.displayName.$invalid) || (!useredit_form.displayName.$dirty && useredit.error.displayName) }">
<label class="control-label">{{ 'users.user.displayName' | tr }}</label>
<div class="control-label" ng-show="(!useredit_form.displayName.$dirty && useredit.error.displayName) || (useredit_form.displayName.$dirty && useredit_form.displayName.$invalid) || (!useredit_form.displayName.$dirty && useredit.error.displayName)">

View File

@@ -228,6 +228,7 @@ angular.module('Application').controller('UsersController', ['$scope', '$locatio
userInfo: {},
// form fields
username: '',
email: '',
fallbackEmail: '',
aliases: {},
@@ -239,6 +240,7 @@ angular.module('Application').controller('UsersController', ['$scope', '$locatio
show: function (userInfo) {
$scope.useredit.error = {};
$scope.useredit.username = userInfo.username;
$scope.useredit.email = userInfo.email;
$scope.useredit.displayName = userInfo.displayName;
$scope.useredit.fallbackEmail = userInfo.fallbackEmail;
@@ -271,6 +273,8 @@ angular.module('Application').controller('UsersController', ['$scope', '$locatio
// only change those if it is a local user
if (!$scope.useredit.source) {
// username is settable only if it was empty previously. it's editable for the "lock" profiles feature
if (!$scope.useredit.userInfo.username) data.username = $scope.useredit.username;
data.email = $scope.useredit.email;
data.displayName = $scope.useredit.displayName;
data.fallbackEmail = $scope.useredit.fallbackEmail;
@@ -281,7 +285,11 @@ angular.module('Application').controller('UsersController', ['$scope', '$locatio
$scope.useredit.busy = false;
if (error.statusCode === 409) {
$scope.useredit.error.email = 'Email already taken';
if (error.message.toLowerCase().indexOf('email') !== -1) {
$scope.useredit.error.email = 'Email already taken';
} else if (error.message.toLowerCase().indexOf('username') !== -1) {
$scope.useredit.error.username = 'Username already taken';
}
$scope.useredit_form.email.$setPristine();
$('#inputUserEditEmail').focus();
} else {