2019-11-28 11:04:05 +00:00
|
|
|
<template>
|
|
|
|
<el-dropdown trigger="click">
|
2020-04-18 23:25:04 +00:00
|
|
|
<el-button :disabled="!account.id" plain size="small" icon="el-icon-files">{{ $t('reports.moderateUser') }}
|
2019-11-28 11:04:05 +00:00
|
|
|
<i class="el-icon-arrow-down el-icon--right"/>
|
|
|
|
</el-button>
|
|
|
|
<el-dropdown-menu slot="dropdown">
|
|
|
|
<el-dropdown-item
|
|
|
|
v-if="showDeactivatedButton(account)"
|
|
|
|
@click.native="handleDeactivation(account)">
|
|
|
|
{{ account.deactivated ? $t('users.activateAccount') : $t('users.deactivateAccount') }}
|
|
|
|
</el-dropdown-item>
|
|
|
|
<el-dropdown-item
|
|
|
|
v-if="showDeactivatedButton(account.id)"
|
|
|
|
@click.native="handleDeletion(account.id)">
|
|
|
|
{{ $t('users.deleteAccount') }}
|
|
|
|
</el-dropdown-item>
|
|
|
|
<el-dropdown-item
|
|
|
|
:divided="true"
|
2020-08-02 17:20:27 +00:00
|
|
|
:class="{ 'active-tag': tags.includes('mrf_tag:media-force-nsfw') }"
|
|
|
|
@click.native="toggleTag(account, 'mrf_tag:media-force-nsfw')">
|
2019-11-28 11:04:05 +00:00
|
|
|
{{ $t('users.forceNsfw') }}
|
2020-08-02 17:20:27 +00:00
|
|
|
<i v-if="tags.includes('mrf_tag:media-force-nsfw')" class="el-icon-check"/>
|
2019-11-28 11:04:05 +00:00
|
|
|
</el-dropdown-item>
|
|
|
|
<el-dropdown-item
|
2020-08-02 17:20:27 +00:00
|
|
|
:class="{ 'active-tag': tags.includes('mrf_tag:media-strip') }"
|
|
|
|
@click.native="toggleTag(account, 'mrf_tag:media-strip')">
|
2019-11-28 11:04:05 +00:00
|
|
|
{{ $t('users.stripMedia') }}
|
2020-08-02 17:20:27 +00:00
|
|
|
<i v-if="tags.includes('mrf_tag:media-strip')" class="el-icon-check"/>
|
2019-11-28 11:04:05 +00:00
|
|
|
</el-dropdown-item>
|
|
|
|
<el-dropdown-item
|
2020-08-02 17:20:27 +00:00
|
|
|
:class="{ 'active-tag': tags.includes('mrf_tag:force-unlisted') }"
|
|
|
|
@click.native="toggleTag(account, 'mrf_tag:force-unlisted')">
|
2019-11-28 11:04:05 +00:00
|
|
|
{{ $t('users.forceUnlisted') }}
|
2020-08-02 17:20:27 +00:00
|
|
|
<i v-if="tags.includes('mrf_tag:force-unlisted')" class="el-icon-check"/>
|
2019-11-28 11:04:05 +00:00
|
|
|
</el-dropdown-item>
|
|
|
|
<el-dropdown-item
|
2020-08-02 17:20:27 +00:00
|
|
|
:class="{ 'active-tag': tags.includes('mrf_tag:sandbox') }"
|
|
|
|
@click.native="toggleTag(account, 'mrf_tag:sandbox')">
|
2019-11-28 11:04:05 +00:00
|
|
|
{{ $t('users.sandbox') }}
|
2020-08-02 17:20:27 +00:00
|
|
|
<i v-if="tags.includes('mrf_tag:sandbox')" class="el-icon-check"/>
|
2019-11-28 11:04:05 +00:00
|
|
|
</el-dropdown-item>
|
|
|
|
<el-dropdown-item
|
|
|
|
v-if="account.local"
|
2020-08-02 17:20:27 +00:00
|
|
|
:class="{ 'active-tag': tags.includes('mrf_tag:disable-remote-subscription') }"
|
|
|
|
@click.native="toggleTag(account, 'mrf_tag:disable-remote-subscription')">
|
2019-11-28 11:04:05 +00:00
|
|
|
{{ $t('users.disableRemoteSubscription') }}
|
2020-08-02 17:20:27 +00:00
|
|
|
<i v-if="tags.includes('mrf_tag:disable-remote-subscription')" class="el-icon-check"/>
|
2019-11-28 11:04:05 +00:00
|
|
|
</el-dropdown-item>
|
|
|
|
<el-dropdown-item
|
|
|
|
v-if="account.local"
|
2020-08-02 17:20:27 +00:00
|
|
|
:class="{ 'active-tag': tags.includes('mrf_tag:disable-any-subscription') }"
|
|
|
|
@click.native="toggleTag(account, 'mrf_tag:disable-any-subscription')">
|
2019-11-28 11:04:05 +00:00
|
|
|
{{ $t('users.disableAnySubscription') }}
|
2020-08-02 17:20:27 +00:00
|
|
|
<i v-if="tags.includes('mrf_tag:disable-any-subscription')" class="el-icon-check"/>
|
2019-11-28 11:04:05 +00:00
|
|
|
</el-dropdown-item>
|
|
|
|
</el-dropdown-menu>
|
|
|
|
</el-dropdown>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<script>
|
|
|
|
export default {
|
|
|
|
name: 'ModerateUserDropdown',
|
|
|
|
props: {
|
|
|
|
account: {
|
|
|
|
type: Object,
|
|
|
|
required: true
|
|
|
|
}
|
|
|
|
},
|
2020-04-18 23:25:04 +00:00
|
|
|
computed: {
|
|
|
|
tags() {
|
|
|
|
return this.account.tags || []
|
|
|
|
}
|
|
|
|
},
|
2019-11-28 11:04:05 +00:00
|
|
|
methods: {
|
|
|
|
handleDeactivation({ nickname }) {
|
|
|
|
this.$store.dispatch('ToggleUserActivation', nickname)
|
|
|
|
},
|
|
|
|
handleDeletion(user) {
|
|
|
|
this.$store.dispatch('DeleteUser', user)
|
|
|
|
},
|
|
|
|
showDeactivatedButton(id) {
|
|
|
|
return this.$store.state.user.id !== id
|
|
|
|
},
|
|
|
|
toggleTag(user, tag) {
|
|
|
|
user.tags.includes(tag)
|
|
|
|
? this.$store.dispatch('RemoveTag', { users: [user], tag })
|
|
|
|
: this.$store.dispatch('AddTag', { users: [user], tag })
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</script>
|