add modal to user role change in admin interface

This commit is contained in:
mahula 2023-03-23 20:26:35 +01:00
parent 6d18fce4e8
commit 5e7520246b
3 changed files with 57 additions and 13 deletions

View File

@ -4,19 +4,35 @@
<div v-if="item.userId === $store.state.moderator.id" class="m-3 mb-4"> <div v-if="item.userId === $store.state.moderator.id" class="m-3 mb-4">
{{ $t('userRole.notChangeYourSelf') }} {{ $t('userRole.notChangeYourSelf') }}
</div> </div>
<div class="m-3"> <div v-else class="m-3">
<label for="role" class="mr-3">{{ $t('userRole.selectLabel') }}</label> <label for="role" class="mr-3">{{ $t('userRole.selectLabel') }}</label>
<b-form-select <b-form-select class="role-select" v-model="roleSelected" :options="roles" />
class="role-select" <div class="mt-3 mb-5">
v-model="roleSelected" <b-button
:options="roles" variant="danger"
:disabled="item.userId === $store.state.moderator.id" v-b-modal.user-role-modal
/> :disabled="currentRole === roleSelected"
@click="showModal('changeUserRole')"
>
{{ $t('change_user_role') }}
</b-button>
</div>
</div> </div>
</div> </div>
<b-modal
id="user-role-modal"
hide-header-close
ok-variant="danger"
:title="modalTitle"
:cancel-title="$t('overlay.cancel')"
:ok-title="modalOkTitle"
@ok="modalEvent"
>
<p class="my-4">{{ modalQuestion }}</p>
</b-modal>
</div> </div>
</template> </template>
<script> <script>
import { setUserRole } from '../graphql/setUserRole' import { setUserRole } from '../graphql/setUserRole'
@ -35,21 +51,37 @@ export default {
}, },
data() { data() {
return { return {
currentRole: this.item.isAdmin ? rolesValues.admin : rolesValues.user,
roleSelected: this.item.isAdmin ? rolesValues.admin : rolesValues.user, roleSelected: this.item.isAdmin ? rolesValues.admin : rolesValues.user,
roles: [ roles: [
{ value: rolesValues.user, text: this.$t('userRole.selectRoles.user') }, { value: rolesValues.user, text: this.$t('userRole.selectRoles.user') },
{ value: rolesValues.admin, text: this.$t('userRole.selectRoles.admin') }, { value: rolesValues.admin, text: this.$t('userRole.selectRoles.admin') },
], ],
modalTitle: '',
modalQuestion: '',
modalOkTitle: '',
modalEvent: null,
username: '',
} }
}, },
watch: { watch: {
roleSelected(newRole, oldRole) { // roleSelected(newRole, oldRole) {
if (newRole !== oldRole) { // if (newRole !== oldRole) {
this.setUserRole(newRole, oldRole) // // this.setUserRole(newRole, oldRole)
} // }
}, // },
}, },
methods: { methods: {
showModal() {
this.username = `${this.item.firstName} ${this.item.lastName}`
this.modalTitle = this.$t('overlay.changeUserRole.title')
this.modalQuestion = this.$t('overlay.changeUserRole.question', {
username: this.username,
newRole: this.roleSelected, // TODO get the text:Administrator instead of admin
})
this.modalOkTitle = this.$t('overlay.changeUserRole.yes')
this.modalEvent = this.setUserRole(this.roleSelected, this.currentRole)
},
setUserRole(newRole, oldRole) { setUserRole(newRole, oldRole) {
this.$apollo this.$apollo
.mutate({ .mutate({

View File

@ -2,6 +2,7 @@
"all_emails": "Alle Nutzer", "all_emails": "Alle Nutzer",
"back": "zurück", "back": "zurück",
"chat": "Chat", "chat": "Chat",
"change_user_role": "Nutzerrolle ändern",
"contributionLink": { "contributionLink": {
"amount": "Betrag", "amount": "Betrag",
"changeSaved": "Änderungen gespeichert", "changeSaved": "Änderungen gespeichert",
@ -141,6 +142,11 @@
"question": "Willst du wirklich {username} wiederherstellen?", "question": "Willst du wirklich {username} wiederherstellen?",
"title": "Nutzer wiederherstellen", "title": "Nutzer wiederherstellen",
"yes": "Ja, Nutzer wiederherstellen" "yes": "Ja, Nutzer wiederherstellen"
},
"changeUserRole": {
"question": "Willst du die Rolle von {username} wirklich zu {newRole} ändern?",
"title": "Nutzerrolle ändern",
"yes": "Ja, Nutzerrolle ändern"
} }
}, },
"redeemed": "eingelöst", "redeemed": "eingelöst",

View File

@ -2,6 +2,7 @@
"all_emails": "All users", "all_emails": "All users",
"back": "back", "back": "back",
"chat": "Chat", "chat": "Chat",
"change_user_role": "Change user role",
"contributionLink": { "contributionLink": {
"amount": "Amount", "amount": "Amount",
"changeSaved": "Changes saved", "changeSaved": "Changes saved",
@ -141,6 +142,11 @@
"question": "Do you really want to undelete {username}", "question": "Do you really want to undelete {username}",
"title": "Undelete user", "title": "Undelete user",
"yes": "Yes,undelete user" "yes": "Yes,undelete user"
},
"changeUserRole": {
"question": "Do you really want to change {username}'s role to {newRole}?",
"title": "Change user role",
"yes": "Yes, change user role"
} }
}, },
"redeemed": "redeemed", "redeemed": "redeemed",