In Jhipster, by default, user creates account by himself and admin activates it.
If we need to create fully working account by admin at once, some changes are necessary in code.
In src/main/java/.../service/UserService.java
change:
String encryptedPassword = passwordEncoder.encode(RandomUtil.generatePassword());
user.setPassword(encryptedPassword);
user.setResetKey(RandomUtil.generateResetKey());
user.setResetDate(ZonedDateTime.now());
user.setActivated(true);
userRepository.save(user);
userSearchRepository.save(user);
log.debug("Created Information for User: {}", user);
return user;
to:
// String encryptedPassword = passwordEncoder.encode(RandomUtil.generatePassword());
// user.setPassword(encryptedPassword);
// user.setResetKey(RandomUtil.generateResetKey());
// user.setResetDate(ZonedDateTime.now());
user.setPassword(passwordEncoder.encode(managedUserVM.getPassword()));
user.setActivated(true);
// new user gets registration key
user.setActivationKey(RandomUtil.generateActivationKey());
userRepository.save(user);
userSearchRepository.save(user);
log.debug("Created Information for User: {}", user);
return user;
2. in /src/main/webapp/app/admin/user-management/user-management-dialog.html
change:
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true"
ng-click="vm.clear()">×</button>
<h4 class="modal-title" id="myUserLabel" data-translate="userManagement.home.createOrEditLabel">
Create or edit a User</h4>
</div>
to:
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true"
ng-click="vm.clear()">×</button>
<h4 class="modal-title" id="myUserLabel" data-translate="userManagement.home.createOrEditLabel">
Create or edit a User</h4>
<br>
<div class="alert alert-danger" ng-show="(vm.user.password !== vm.confirmPassword)" data-translate="global.messages.error.dontmatch">
The password and its confirmation do not match!
</div>
</div>
add:
<div class="form-group">
<label class="control-label" for="password" data-translate="global.form.newpassword">New password</label>
<input type="password" class="form-control" id="password" name="password" placeholder="{{'global.form.newpassword.placeholder' | translate}}"
ng-model="vm.user.password" ng-minlength=4 ng-maxlength=50 required>
<div ng-show="form.password.$dirty && form.password.$invalid">
<p class="help-block"
ng-show="form.password.$error.required" data-translate="global.messages.validate.newpassword.required">
Your password is required.
</p>
<p class="help-block"
ng-show="form.password.$error.minlength" data-translate="global.messages.validate.newpassword.minlength">
Your password is required to be at least 4 characters.
</p>
<p class="help-block"
ng-show="form.password.$error.maxlength" data-translate="global.messages.validate.newpassword.maxlength">
Your password cannot be longer than 50 characters.
</p>
</div>
<password-strength-bar password-to-check="vm.user.password"></password-strength-bar>
</div>
<div class="form-group">
<label class="control-label" for="confirmPassword" data-translate="global.form.confirmpassword">New password confirmation</label>
<input type="password" class="form-control" id="confirmPassword" name="confirmPassword" placeholder="{{'global.form.confirmpassword.placeholder' | translate}}"
ng-model="vm.confirmPassword" ng-minlength=4 ng-maxlength=50 required>
<div ng-show="form.confirmPassword.$dirty && form.confirmPassword.$invalid">
<p class="help-block"
ng-show="form.confirmPassword.$error.required" data-translate="global.messages.validate.confirmpassword.required">
Your confirmation password is required.
</p>
<p class="help-block"
ng-show="form.confirmPassword.$error.minlength" data-translate="global.messages.validate.confirmpassword.minlength">
Your confirmation password is required to be at least 4 characters.
</p>
<p class="help-block"
ng-show="form.confirmPassword.$error.maxlength" data-translate="global.messages.validate.confirmpassword.maxlength">
Your confirmation password cannot be longer than 50 characters.
</p>
</div>
</div>
and change:
<button type="submit" ng-disabled="editForm.$invalid || isSaving" class="btn btn-primary">
to:
<button type="submit" ng-disabled="editForm.$invalid || isSaving || (vm.user.password !== vm.confirmPassword)" class="btn btn-primary">