diff --git a/src/Umbraco.Web.UI.Client/src/common/resources/users.resource.js b/src/Umbraco.Web.UI.Client/src/common/resources/users.resource.js index 72564398c0..0fd308ffd0 100644 --- a/src/Umbraco.Web.UI.Client/src/common/resources/users.resource.js +++ b/src/Umbraco.Web.UI.Client/src/common/resources/users.resource.js @@ -280,7 +280,7 @@ * }); * * - * @param {Array} id user id. + * @param {Int} userId user id. * @returns {Promise} resourcePromise object containing the user. * */ @@ -406,6 +406,36 @@ "Failed to save user"); } + /** + * @ngdoc method + * @name umbraco.resources.usersResource#deleteNonLoggedInUser + * @methodOf umbraco.resources.usersResource + * + * @description + * Deletes a user that hasn't already logged in (and hence we know has made no content updates that would create related records) + * + * ##usage + *
+ * usersResource.deleteNonLoggedInUser(1)
+ * .then(function() {
+ * alert("user was deleted");
+ * });
+ *
+ *
+ * @param {Int} userId user id.
+ * @returns {Promise} resourcePromise object.
+ *
+ */
+ function deleteNonLoggedInUser(userId) {
+
+ return umbRequestHelper.resourcePromise(
+ $http.post(
+ umbRequestHelper.getApiUrl(
+ "userApiBaseUrl",
+ "PostDeleteNonLoggedInUser", { id: userId })),
+ 'Failed to delete the user ' + userId);
+ }
+
var resource = {
disableUsers: disableUsers,
@@ -417,6 +447,7 @@
createUser: createUser,
inviteUser: inviteUser,
saveUser: saveUser,
+ deleteNonLoggedInUser: deleteNonLoggedInUser,
clearAvatar: clearAvatar
};
diff --git a/src/Umbraco.Web.UI.Client/src/views/users/user.controller.js b/src/Umbraco.Web.UI.Client/src/views/users/user.controller.js
index 0f3519c7ba..a1b30e38b7 100644
--- a/src/Umbraco.Web.UI.Client/src/views/users/user.controller.js
+++ b/src/Umbraco.Web.UI.Client/src/views/users/user.controller.js
@@ -31,6 +31,8 @@
vm.disableUser = disableUser;
vm.enableUser = enableUser;
vm.unlockUser = unlockUser;
+ vm.resendInvite = resendInvite;
+ vm.deleteNonLoggedInUser = deleteNonLoggedInUser;
vm.changeAvatar = changeAvatar;
vm.clearAvatar = clearAvatar;
vm.save = save;
@@ -49,7 +51,9 @@
"sections_users",
"content_contentRoot",
"media_mediaRoot",
- "user_noStartNodes"
+ "user_noStartNodes",
+ "user_defaultInvitationMessage",
+ "user_deleteUserConfirmation"
];
localizationService.localizeMany(labelKeys).then(function (values) {
@@ -61,6 +65,8 @@
vm.labels.contentRoot = values[5];
vm.labels.mediaRoot = values[6];
vm.labels.noStartNodes = values[7];
+ vm.labels.defaultInvitationMessage = values[8];
+ vm.labels.deleteUserConfirmation = values[9];
});
// get user
@@ -350,6 +356,44 @@
});
}
+ function resendInvite() {
+ vm.resendInviteButtonState = "busy";
+
+ if (vm.resendInviteMessage) {
+ vm.user.message = vm.resendInviteMessage;
+ }
+ else {
+ vm.user.message = vm.labels.defaultInvitationMessage;
+ }
+
+ usersResource.inviteUser(vm.user).then(function (data) {
+ vm.resendInviteButtonState = "success";
+ vm.resendInviteMessage = "";
+ formHelper.showNotifications(data);
+ }, function (error) {
+ vm.resendInviteButtonState = "error";
+ formHelper.showNotifications(error.data);
+ });
+ }
+
+ function deleteNonLoggedInUser() {
+ vm.deleteNotLoggedInUserButtonState = "busy";
+
+ var confirmationMessage = vm.labels.deleteUserConfirmation;
+ if (!confirm(confirmationMessage)) {
+ vm.deleteNotLoggedInUserButtonState = "danger";
+ return;
+ }
+
+ usersResource.deleteNonLoggedInUser(vm.user.id).then(function (data) {
+ formHelper.showNotifications(data);
+ goToPage(vm.breadcrumbs[0]);
+ }, function (error) {
+ vm.deleteNotLoggedInUserButtonState = "error";
+ formHelper.showNotifications(error.data);
+ });
+ }
+
function clearAvatar() {
// get user
usersResource.clearAvatar(vm.user.id).then(function (data) {
diff --git a/src/Umbraco.Web.UI.Client/src/views/users/views/user/details.html b/src/Umbraco.Web.UI.Client/src/views/users/views/user/details.html
index 67f204aa2f..8b9be7acdc 100644
--- a/src/Umbraco.Web.UI.Client/src/views/users/views/user/details.html
+++ b/src/Umbraco.Web.UI.Client/src/views/users/views/user/details.html
@@ -239,7 +239,7 @@