KEYCLOAK-155 reset user password page (user credentials)
This commit is contained in:
parent
85eeb415e1
commit
945eaa2ddb
6 changed files with 118 additions and 2 deletions
|
@ -113,6 +113,18 @@ module.config([ '$routeProvider', function($routeProvider) {
|
||||||
},
|
},
|
||||||
controller : 'UserDetailCtrl'
|
controller : 'UserDetailCtrl'
|
||||||
})
|
})
|
||||||
|
.when('/realms/:realm/users/:user/user-credentials', {
|
||||||
|
templateUrl : 'partials/user-credentials.html',
|
||||||
|
resolve : {
|
||||||
|
realm : function(RealmLoader) {
|
||||||
|
return RealmLoader();
|
||||||
|
},
|
||||||
|
user : function(UserLoader) {
|
||||||
|
return UserLoader();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
controller : 'UserCredentialsCtrl'
|
||||||
|
})
|
||||||
.when('/realms/:realm/users/:user/role-mappings', {
|
.when('/realms/:realm/users/:user/role-mappings', {
|
||||||
templateUrl : 'partials/role-mappings.html',
|
templateUrl : 'partials/role-mappings.html',
|
||||||
resolve : {
|
resolve : {
|
||||||
|
|
|
@ -225,6 +225,52 @@ module.controller('UserDetailCtrl', function($scope, realm, user, User, $locatio
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
|
module.controller('UserCredentialsCtrl', function($scope, realm, user, User, UserCredentials, Notifications) {
|
||||||
|
console.log('UserCredentialsCtrl');
|
||||||
|
|
||||||
|
$scope.realm = realm;
|
||||||
|
$scope.user = angular.copy(user);
|
||||||
|
|
||||||
|
$scope.resetPassword = function() {
|
||||||
|
|
||||||
|
if ($scope.password != $scope.confirmPassword) {
|
||||||
|
Notifications.error("Password and confirmation does not match.");
|
||||||
|
$scope.password = "";
|
||||||
|
$scope.confirmPassword = "";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$scope.user.hasOwnProperty('requiredActions')){
|
||||||
|
$scope.user.requiredActions = [];
|
||||||
|
}
|
||||||
|
if ($scope.user.requiredActions.indexOf("UPDATE_PASSWORD") < 0){
|
||||||
|
$scope.user.requiredActions.push("UPDATE_PASSWORD");
|
||||||
|
}
|
||||||
|
|
||||||
|
var credentials = [ { type : "password", value : $scope.password } ];
|
||||||
|
|
||||||
|
User.update({
|
||||||
|
realm: realm.id,
|
||||||
|
userId: $scope.user.username
|
||||||
|
}, $scope.user, function () {
|
||||||
|
|
||||||
|
UserCredentials.update({
|
||||||
|
realm: realm.id,
|
||||||
|
userId: $scope.user.username
|
||||||
|
}, credentials, function () {
|
||||||
|
Notifications.success("The user password has been reset. The user is required to change his password on" +
|
||||||
|
" the next login.");
|
||||||
|
}, function () {
|
||||||
|
Notifications.error("Error while resetting user password. Be aware that the update password required action" +
|
||||||
|
" was already set.");
|
||||||
|
});
|
||||||
|
|
||||||
|
}, function () {
|
||||||
|
Notifications.error("Error while adding update password required action. Password was not reset.");
|
||||||
|
});
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
module.controller('RoleMappingCtrl', function($scope, realm, User, users, role, RoleMapping, Notifications) {
|
module.controller('RoleMappingCtrl', function($scope, realm, User, users, role, RoleMapping, Notifications) {
|
||||||
$scope.realm = realm;
|
$scope.realm = realm;
|
||||||
$scope.realmId = realm.realm || realm.id;
|
$scope.realmId = realm.realm || realm.id;
|
||||||
|
|
|
@ -134,6 +134,18 @@ module.factory('User', function($resource) {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
module.factory('UserCredentials', function($resource) {
|
||||||
|
return $resource('/auth-server/rest/saas/admin/realms/:realm/users/:userId/credentials', {
|
||||||
|
realm : '@realm',
|
||||||
|
userId : '@userId'
|
||||||
|
}, {
|
||||||
|
update : {
|
||||||
|
method : 'PUT',
|
||||||
|
isArray : true
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
module.factory('RealmRoleMapping', function($resource) {
|
module.factory('RealmRoleMapping', function($resource) {
|
||||||
return $resource('/auth-server/rest/saas/admin/realms/:realm/users/:userId/role-mappings/realm', {
|
return $resource('/auth-server/rest/saas/admin/realms/:realm/users/:userId/role-mappings/realm', {
|
||||||
realm : '@realm',
|
realm : '@realm',
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<div class="top-nav">
|
<div class="top-nav">
|
||||||
<ul class="rcue-tabs" >
|
<ul class="rcue-tabs" >
|
||||||
<li><a href="#/realms/{{realm.id}}/users/{{user.username}}">Attributes</a></li>
|
<li><a href="#/realms/{{realm.id}}/users/{{user.username}}">Attributes</a></li>
|
||||||
<li><a href="#">Credentials</a></li>
|
<li><a href="#/realms/{{realm.id}}/users/{{user.username}}/user-credentials">Credentials</a></li>
|
||||||
<li class="active"><a href="#/realms/{{realm.id}}/users/{{user.username}}/role-mappings">Role Mappings</a></li>
|
<li class="active"><a href="#/realms/{{realm.id}}/users/{{user.username}}/role-mappings">Role Mappings</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -0,0 +1,46 @@
|
||||||
|
<div id="wrapper" class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
|
||||||
|
<div id="content-area" class="col-md-9" role="main">
|
||||||
|
<div class="top-nav">
|
||||||
|
<ul class="rcue-tabs">
|
||||||
|
<li><a href="#/realms/{{realm.id}}/users/{{user.username}}">Attributes</a></li>
|
||||||
|
<li class="active"><a href="#/realms/{{realm.id}}/users/{{user.username}}/user-credentials">Credentials</a></li>
|
||||||
|
<li><a href="#/realms/{{realm.id}}/users/{{user.username}}/role-mappings">Role Mappings</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div id="content">
|
||||||
|
<ol class="breadcrumb">
|
||||||
|
<li><a href="#/realms/{{realm.id}}">{{realm.realm}}</a></li>
|
||||||
|
<li class="active">Users</li>
|
||||||
|
</ol>
|
||||||
|
<h2><span>{{user.username}}'s</span> Reset Password</h2>
|
||||||
|
|
||||||
|
<form name="userForm" novalidate>
|
||||||
|
<fieldset class="border-top">
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="password">New Password</label>
|
||||||
|
<div class="controls">
|
||||||
|
<input type="password" id="password" name="password" data-ng-model="password" autofocus
|
||||||
|
required>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="two-lines" for="password">New Password Confirmation</label>
|
||||||
|
<div class="controls">
|
||||||
|
<input type="password" id="confirmPassword" name="confirmPassword" data-ng-model="confirmPassword"
|
||||||
|
required>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</fieldset>
|
||||||
|
<div class="form-actions">
|
||||||
|
<button type="submit" class="primary" data-ng-click="resetPassword()"
|
||||||
|
ng-show="password != null">Reset Password</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="container-right-bg"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
|
@ -10,7 +10,7 @@
|
||||||
<div class="top-nav" data-ng-show="!create">
|
<div class="top-nav" data-ng-show="!create">
|
||||||
<ul class="rcue-tabs" >
|
<ul class="rcue-tabs" >
|
||||||
<li class="active"><a href="#/realms/{{realm.id}}/users/{{user.username}}">Attributes</a></li>
|
<li class="active"><a href="#/realms/{{realm.id}}/users/{{user.username}}">Attributes</a></li>
|
||||||
<li><a href="#">Credentials</a></li>
|
<li><a href="#/realms/{{realm.id}}/users/{{user.username}}/user-credentials">Credentials</a></li>
|
||||||
<li><a href="#/realms/{{realm.id}}/users/{{user.username}}/role-mappings">Role Mappings</a></li>
|
<li><a href="#/realms/{{realm.id}}/users/{{user.username}}/role-mappings">Role Mappings</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
Loading…
Reference in a new issue