Merge branch 'feature/confirm-delete-user' into 'develop'

Add confirmation message when deleting a user

Closes #125

See merge request pleroma/admin-fe!144
This commit is contained in:
Angelina Filippova 2020-07-17 21:46:20 +00:00
commit d7eaf61a95
6 changed files with 29 additions and 9 deletions

View file

@ -18,6 +18,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- Add ability to disable multi-factor authentication for a user - Add ability to disable multi-factor authentication for a user
- Ability to configure S3 settings on Upload tab - Ability to configure S3 settings on Upload tab
- Show number of open reports in Sidebar Menu - Show number of open reports in Sidebar Menu
- Add confirmation message when deleting a user
### Changed ### Changed

View file

@ -212,6 +212,7 @@ export default {
revokeRightConfirmation: 'Are you sure you want to revoke {right} rights from all selected users?', revokeRightConfirmation: 'Are you sure you want to revoke {right} rights from all selected users?',
activateMultipleUsersConfirmation: 'Are you sure you want to activate accounts of all selected users?', activateMultipleUsersConfirmation: 'Are you sure you want to activate accounts of all selected users?',
deactivateMultipleUsersConfirmation: 'Are you sure you want to deactivate accounts of all selected users?', deactivateMultipleUsersConfirmation: 'Are you sure you want to deactivate accounts of all selected users?',
deleteUsersConfirmation: 'Are you sure you want to delete this account? This action cannot be undone.',
deleteMultipleUsersConfirmation: 'Are you sure you want to delete accounts of all selected users?', deleteMultipleUsersConfirmation: 'Are you sure you want to delete accounts of all selected users?',
addTagForMultipleUsersConfirmation: 'Are you sure you want to apply tag to all selected users?', addTagForMultipleUsersConfirmation: 'Are you sure you want to apply tag to all selected users?',
removeTagFromMultipleUsersConfirmation: 'Are you sure you want to remove tag from all selected users?', removeTagFromMultipleUsersConfirmation: 'Are you sure you want to remove tag from all selected users?',

View file

@ -193,11 +193,14 @@ const users = {
} catch (_e) { } catch (_e) {
return return
} }
const deletedUsersIds = users.map(deletedUser => deletedUser.id) const updatedUsers = users.map(user => {
const updatedUsers = state.fetchedUsers.filter(user => !deletedUsersIds.includes(user.id)) return { ...user, deactivated: true }
commit('SET_USERS', updatedUsers) })
commit('SWAP_USERS', updatedUsers)
dispatch('FetchUserProfile', { userId: _userId, godmode: false }) if (_userId) {
dispatch('FetchUserProfile', { userId: _userId, godmode: false })
}
dispatch('SuccessMessage') dispatch('SuccessMessage')
}, },
async FetchUsers({ commit, dispatch, getters, state }, { page }) { async FetchUsers({ commit, dispatch, getters, state }, { page }) {

View file

@ -143,7 +143,20 @@ export default {
this.$store.dispatch('ResendConfirmationEmail', [user]) this.$store.dispatch('ResendConfirmationEmail', [user])
}, },
handleDeletion(user) { handleDeletion(user) {
this.$store.dispatch('DeleteUsers', { users: [user], _userId: user.id }) this.$confirm(
this.$t('users.deleteUsersConfirmation'),
{
confirmButtonText: 'Delete',
cancelButtonText: 'Cancel',
type: 'warning'
}).then(() => {
this.$store.dispatch('DeleteUsers', { users: [user], _userId: user.id })
}).catch(() => {
this.$message({
type: 'info',
message: 'Delete canceled'
})
})
}, },
handleEmailConfirmation(user) { handleEmailConfirmation(user) {
this.$store.dispatch('ConfirmUsersEmail', { users: [user], _userId: user.id, _statusId: this.statusId }) this.$store.dispatch('ConfirmUsersEmail', { users: [user], _userId: user.id, _statusId: this.statusId })

View file

@ -156,11 +156,13 @@ describe('Users actions', () => {
stubs: ['router-link'] stubs: ['router-link']
}) })
await flushPromises() await flushPromises()
expect(store.state.users.fetchedUsers.length).toEqual(3) expect(store.state.users.fetchedUsers[1].deactivated).toBe(false)
wrapper.find(htmlElement(2, 2)).trigger('click') wrapper.find(htmlElement(2, 2)).trigger('click')
store.dispatch('DeleteUsers', { users: [{ active: true, deactivated: false, id: '10', nickname: 'bob', local: false, external: true, roles: { admin: false, moderator: false }, tags: ['sandbox'] }] })
await flushPromises() await flushPromises()
expect(store.state.users.fetchedUsers.length).toEqual(2) expect(store.state.users.fetchedUsers[1].deactivated).toBe(true)
done() done()
}) })

View file

@ -225,11 +225,11 @@ describe('Apply users actions to multiple users', () => {
expect(wrapper.vm.deleteMultipleUsers).toHaveBeenCalled() expect(wrapper.vm.deleteMultipleUsers).toHaveBeenCalled()
const remove = wrapper.vm.mappers().remove const remove = wrapper.vm.mappers().remove
expect(store.state.users.fetchedUsers.length).toEqual(3) expect(store.state.users.fetchedUsers.filter(user => user.deactivated).length).toEqual(1)
remove() remove()
await flushPromises() await flushPromises()
expect(store.state.users.fetchedUsers.length).toEqual(0) expect(store.state.users.fetchedUsers.length).toEqual(3)
done() done()
}) })