From 7b7a05170a787f3d5557f851a3a8eda99c23e4e7 Mon Sep 17 00:00:00 2001 From: Angelina Filippova Date: Mon, 18 May 2020 20:07:26 +0300 Subject: [PATCH] Disable moderation of users that don't have nicknames or IDs --- src/lang/en.js | 3 ++- src/views/reports/components/Report.vue | 5 +++- .../users/components/MultipleUsersMenu.vue | 24 +++++++++---------- src/views/users/index.vue | 20 +++++++++++----- src/views/users/show.vue | 5 ++++ 5 files changed, 37 insertions(+), 20 deletions(-) diff --git a/src/lang/en.js b/src/lang/en.js index 2e504315..d25fff70 100644 --- a/src/lang/en.js +++ b/src/lang/en.js @@ -238,7 +238,8 @@ export default { unconfirmedEmail: 'User didn\'t confirm the email', confirmAccount: 'Confirm account', confirmAccounts: 'Confirm accounts', - resendConfirmation: 'Resend confirmation email' + resendConfirmation: 'Resend confirmation email', + invalidUser: 'This user is invalid and can\'t be modified' }, statuses: { statuses: 'Statuses', diff --git a/src/views/reports/components/Report.vue b/src/views/reports/components/Report.vue index 565b3cb0..56a13372 100644 --- a/src/views/reports/components/Report.vue +++ b/src/views/reports/components/Report.vue @@ -24,7 +24,7 @@ {{ $t('reports.close') }} - +
@@ -179,6 +179,9 @@ export default { }, showStatuses(statuses = []) { return statuses.length > 0 + }, + validAccount(account) { + return account.nickname && account.id } } } diff --git a/src/views/users/components/MultipleUsersMenu.vue b/src/views/users/components/MultipleUsersMenu.vue index eaf6d742..f7476c0b 100644 --- a/src/views/users/components/MultipleUsersMenu.vue +++ b/src/views/users/components/MultipleUsersMenu.vue @@ -165,33 +165,33 @@ export default { } return { grantRight: (right) => () => { - const filterUsersFn = user => user.local && !user.roles[right] && this.$store.state.user.id !== user.id + const filterUsersFn = user => user.nickname && user.id && user.local && !user.roles[right] && this.$store.state.user.id !== user.id const addRightFn = async(users) => await this.$store.dispatch('AddRight', { users, right }) const filtered = this.selectedUsers.filter(filterUsersFn) applyAction(filtered, addRightFn) }, revokeRight: (right) => () => { - const filterUsersFn = user => user.local && user.roles[right] && this.$store.state.user.id !== user.id + const filterUsersFn = user => user.nickname && user.id && user.local && user.roles[right] && this.$store.state.user.id !== user.id const deleteRightFn = async(users) => await this.$store.dispatch('DeleteRight', { users, right }) const filtered = this.selectedUsers.filter(filterUsersFn) applyAction(filtered, deleteRightFn) }, activate: () => { - const filtered = this.selectedUsers.filter(user => user.deactivated && this.$store.state.user.id !== user.id) + const filtered = this.selectedUsers.filter(user => user.nickname && user.id && user.deactivated && this.$store.state.user.id !== user.id) const activateUsersFn = async(users) => await this.$store.dispatch('ActivateUsers', { users }) applyAction(filtered, activateUsersFn) }, deactivate: () => { - const filtered = this.selectedUsers.filter(user => !user.deactivated && this.$store.state.user.id !== user.id) + const filtered = this.selectedUsers.filter(user => user.nickname && user.id && !user.deactivated && this.$store.state.user.id !== user.id) const deactivateUsersFn = async(users) => await this.$store.dispatch('DeactivateUsers', { users }) applyAction(filtered, deactivateUsersFn) }, remove: () => { - const filtered = this.selectedUsers.filter(user => this.$store.state.user.id !== user.id) + const filtered = this.selectedUsers.filter(user => user.nickname && user.id && this.$store.state.user.id !== user.id) const deleteAccountFn = async(users) => await this.$store.dispatch('DeleteUsers', { users }) applyAction(filtered, deleteAccountFn) @@ -199,34 +199,34 @@ export default { addTag: (tag) => () => { const filtered = this.selectedUsers.filter(user => tag === 'disable_remote_subscription' || tag === 'disable_any_subscription' - ? user.local && !user.tags.includes(tag) - : !user.tags.includes(tag)) + ? user.nickname && user.id && user.local && !user.tags.includes(tag) + : user.nickname && user.id && !user.tags.includes(tag)) const addTagFn = async(users) => await this.$store.dispatch('AddTag', { users, tag }) applyAction(filtered, addTagFn) }, removeTag: (tag) => async() => { const filtered = this.selectedUsers.filter(user => tag === 'disable_remote_subscription' || tag === 'disable_any_subscription' - ? user.local && user.tags.includes(tag) - : user.tags.includes(tag)) + ? user.nickname && user.id && user.local && user.tags.includes(tag) + : user.nickname && user.id && user.tags.includes(tag)) const removeTagFn = async(users) => await this.$store.dispatch('RemoveTag', { users, tag }) applyAction(filtered, removeTagFn) }, requirePasswordReset: () => { - const filtered = this.selectedUsers.filter(user => user.local) + const filtered = this.selectedUsers.filter(user => user.nickname && user.id && user.local) const requirePasswordResetFn = async(users) => await this.$store.dispatch('RequirePasswordReset', users) applyAction(filtered, requirePasswordResetFn) }, confirmAccounts: () => { - const filtered = this.selectedUsers.filter(user => user.local && user.confirmation_pending) + const filtered = this.selectedUsers.filter(user => user.nickname && user.id && user.local && user.confirmation_pending) const confirmAccountFn = async(users) => await this.$store.dispatch('ConfirmUsersEmail', { users }) applyAction(filtered, confirmAccountFn) }, resendConfirmation: () => { - const filtered = this.selectedUsers.filter(user => user.local && user.confirmation_pending) + const filtered = this.selectedUsers.filter(user => user.nickname && user.id && user.local && user.confirmation_pending) const resendConfirmationFn = async(users) => await this.$store.dispatch('ResendConfirmationEmail', users) applyAction(filtered, resendConfirmationFn) diff --git a/src/views/users/index.vue b/src/views/users/index.vue index 6d6deb47..d3edbf5b 100644 --- a/src/views/users/index.vue +++ b/src/views/users/index.vue @@ -75,9 +75,11 @@ @@ -140,12 +142,6 @@ export default { normalizedUsersCount() { return numeral(this.$store.state.users.totalUsersCount).format('0a') }, - users() { - return this.$store.state.users.fetchedUsers - }, - usersCount() { - return this.$store.state.users.totalUsersCount - }, pageSize() { return this.$store.state.users.pageSize }, @@ -164,6 +160,12 @@ export default { isMobile() { return this.$store.state.app.device === 'mobile' }, + users() { + return this.$store.state.users.fetchedUsers + }, + usersCount() { + return this.$store.state.users.totalUsersCount + }, width() { return this.isMobile ? 55 : false } @@ -211,6 +213,9 @@ export default { }, showDeactivatedButton(id) { return this.$store.state.user.id !== id + }, + validUser(user) { + return user.nickname && user.id } } } @@ -248,6 +253,9 @@ export default { .create-account > .el-icon-plus { margin-right: 5px; } +.invalid-user { + color: gray; +} .users-header-container { display: flex; align-items: center; diff --git a/src/views/users/show.vue b/src/views/users/show.vue index a4ae844a..9ccb530e 100644 --- a/src/views/users/show.vue +++ b/src/views/users/show.vue @@ -7,6 +7,7 @@
@@ -22,6 +23,7 @@ @@ -182,6 +184,9 @@ export default { }, openResetPasswordDialog() { this.resetPasswordDialogOpen = true + }, + validUser(user) { + return user.nickname && user.id } } }