This commit is contained in:
luce 2025-09-15 13:37:08 +02:00
commit ba577aec52
7 changed files with 285 additions and 192 deletions

View file

@ -0,0 +1,41 @@
import ConfirmModal from './confirm_modal.vue'
//import Select from 'src/components/select/select.vue'
export default {
props: {
title: {
type: String
},
message: {
type: String
},
cancelText: {
type: String
},
confirmText: {
type: String
}
},
emits: ['hide', 'show', 'action'],
data: () => ({
showing: false,
text: ""
}),
components: {
ConfirmModal
},
methods: {
show () {
this.showing = true
this.$emit('show')
},
hide () {
this.showing = false
this.$emit('hide')
},
doWithText () {
this.$emit('action', this.text)
this.hide()
}
}
}

View file

@ -0,0 +1,27 @@
<template>
<ConfirmModal
v-if="showing"
:title="title"
:cancel-text="cancelText"
:confirm-text="confirmText"
@accepted="doWithText"
@cancelled="hide"
>
<template #default>
<span v-text="message" />
<input
v-model="text"
class="input string-input filter-input"
>
</template>
</ConfirmModal>
</template>
<script src="./text_confirm.js" />
<style lang="scss">
.expiry-amount {
width: 4em;
text-align: right;
}
</style>

View file

@ -6,6 +6,7 @@ import Modal from 'src/components/modal/modal.vue'
import Popover from 'src/components/popover/popover.vue'
import GenericConfirm from 'src/components/confirm_modal/generic_confirm.vue'
import Select from 'src/components/select/select.vue'
import TextConfirm from 'src/components/confirm_modal/text_confirm.vue'
const AdminCard = {
props: {
@ -133,7 +134,8 @@ const AdminCard = {
Modal,
Popover,
GenericConfirm,
Select
Select,
TextConfirm
},
methods: {
/**
@ -217,6 +219,22 @@ const AdminCard = {
this.justDeleted = true
}
},
/**
* @param {string} text name of tag to be added to user
*/
addUserTag (text) {
const u = this.$store.getters.findUser(this.userDetails.id)
this.$store.dispatch('adminTagUser', { user: u, tag: text })
.then(() => this.$store.dispatch('fetchUser', this.userDetails.id))
},
/**
* @param {string} text name of tag to be removed from user
*/
removeUserTag (text) {
const u = this.$store.getters.findUser(this.userDetails.id)
this.$store.dispatch('adminUntagUser', { user: u, tag: text })
.then(() => this.$store.dispatch('fetchUser', this.userDetails.id))
},
/**
* @param {object} store
* @param {object} opts

View file

@ -1,6 +1,10 @@
<template>
<div v-if="!isLoaded">
{{ $t('admin_dash.users.loading_user') }}
<FAIcon
icon="circle-notch"
spin
size="lg"
/>
</div>
<div v-else>
<div class="inline-layout">
@ -9,38 +13,38 @@
v-if="isAdmin"
class="alert neutral user-role"
>
{{ $t('admin_dash.users.indicator_admin') }}
{{ $t('admin_dash.users.indicator.admin') }}
</label>
<label
v-if="isModerator"
class="alert neutral user-role"
>
{{ $t('admin_dash.users.indicator_moderator') }}
{{ $t('admin_dash.users.indicator.moderator') }}
</label>
<label
v-if="isActivated"
class="alert info user-role"
>
{{ $t('admin_dash.users.indicator_active') }}
{{ $t('admin_dash.users.indicator.active') }}
</label>
<label
v-if="!isActivated"
class="alert error user-role"
>
{{ $t('admin_dash.users.indicator_deactivated') }}
{{ $t('admin_dash.users.indicator.deactivated') }}
</label>
<label
v-if="isConfirmed"
class="alert neutral user-role"
>
{{ $t('admin_dash.users.indicator_confirmed') }}
{{ $t('admin_dash.users.indicator.confirmed') }}
</label>
<button
class="button button-default btn"
type="button"
@click="detailsExpanded = true"
>
{{ $t('admin_dash.users.title_details') }}
{{ $t('admin_dash.users.details.button') }}
</button>
<Popover
ref="dropdownuser"
@ -51,7 +55,7 @@
<button
class="button button-default btn"
>
{{ $t('admin_dash.users.title_actions') }}
{{ $t('admin_dash.users.actions.title') }}
</button>
</template>
<template #content>
@ -230,6 +234,9 @@
class="panel-body"
style="overflow-y: auto;"
>
<h2 class="title">
{{ $t('admin_dash.users.details.overview') }}
</h2>
<ul
class="setting-list"
style="columns: 2;"
@ -240,9 +247,6 @@
<li>
{{ $t('admin_dash.users.details.actor_type') }}
</li>
<li>
{{ $t('admin_dash.users.details.tags') }}
</li>
<li>
{{ $t('admin_dash.users.details.roles') }}
</li>
@ -258,9 +262,6 @@
<li>
{{ $t('admin_dash.users.details.actor_types.' + user.actor_type.toLowerCase()) }}
</li>
<li>
{{ user.tags }}
</li>
<li>
<span v-if="user.rights.admin === true"> {{ $t('admin_dash.users.details.admin') }} </span>
<span v-if="user.rights.admin === true && user.rights.moderator === true"> ,&nbsp; </span>
@ -275,6 +276,36 @@
<span v-else> {{ $t('admin_dash.users.details.inactive') }} </span>
</li>
</ul>
<h2 class="title">
{{ $t('admin_dash.users.details.tags') }}
</h2>
<ul class="setting-list">
<li
v-for="tag in user.tags"
:key="tag"
>
{{ tag }}
<button
class="button button-default btn"
@click="removeUserTag(tag)"
>
<FAIcon
icon="minus"
size="lg"
/>
</button>
</li>
</ul>
<button
class="button button-default btn"
@click="$refs.addTextBox.show()"
>
{{ $t('admin_dash.users.tags.add_new') }}
<FAIcon
icon="plus"
size="lg"
/>
</button>
<PageList
ref="timelineList"
:refresh="true"
@ -317,7 +348,7 @@
<button
class="button button-default btn"
>
{{ $t('admin_dash.users.actions.button.title') }}
{{ $t('admin_dash.users.actions.title') }}
</button>
</template>
<p> wrap </p>
@ -459,6 +490,14 @@
:confirm-text="$t('admin_dash.users.bulk_actions.yes')"
@action="userActionConfirmed('adminDisableMFA')"
/>
<TextConfirm
ref="addTextBox"
style="z-index: 10001;"
:title="$t('admin_dash.users.tags.new_title')"
:cancel-text="$t('admin_dash.users.tags.no')"
:confirm-text="$t('admin_dash.users.tags.yes')"
@action="addUserTag"
/>
</template>
<script src="./admin_card.js"></script>

View file

@ -3,22 +3,22 @@
<div
class="setting-item"
>
<h2> {{ $t('admin_dash.users.title_users') }} </h2>
<h2> {{ $t('admin_dash.users.title') }} </h2>
<ul class="setting-list">
<li>
<label class="query-label"> {{ $t('admin_dash.users.label_query') }} </label>
<label class="query-label"> {{ $t('admin_dash.users.labels.query') }} </label>
<input
v-model="filtersQuery"
class="input string-input filter-input"
@input="reset()"
>
<label class="query-label"> {{ $t('admin_dash.users.label_name') }} </label>
<label class="query-label"> {{ $t('admin_dash.users.labels.name') }} </label>
<input
v-model="filtersName"
class="input string-input filter-input"
@input="reset()"
>
<label class="query-label"> {{ $t('admin_dash.users.label_email') }} </label>
<label class="query-label"> {{ $t('admin_dash.users.labels.email') }} </label>
<input
v-model="filtersEmail"
class="input string-input filter-input"
@ -26,7 +26,7 @@
>
</li>
<li>
<label class="query-label"> {{ $t('admin_dash.users.label_origin') }} </label>
<label class="query-label"> {{ $t('admin_dash.users.labels.origin') }} </label>
<Select
v-model="filtersOrigin"
@update:model-value="reset"
@ -34,20 +34,20 @@
<option
value="all"
>
{{ $t('admin_dash.users.all') }}
{{ $t('admin_dash.users.options.all') }}
</option>
<option
value="local"
>
{{ $t('admin_dash.users.only_local') }}
{{ $t('admin_dash.users.options.only_local') }}
</option>
<option
value="external"
>
{{ $t('admin_dash.users.only_external') }}
{{ $t('admin_dash.users.options.only_external') }}
</option>
</Select>
<label class="query-label"> {{ $t('admin_dash.users.label_activity') }} </label>
<label class="query-label"> {{ $t('admin_dash.users.labels.activity') }} </label>
<Select
v-model="filtersActivity"
@update:model-value="reset"
@ -55,20 +55,20 @@
<option
value="all"
>
{{ $t('admin_dash.users.all') }}
{{ $t('admin_dash.users.options.all') }}
</option>
<option
value="active"
>
{{ $t('admin_dash.users.only_active') }}
{{ $t('admin_dash.users.options.only_active') }}
</option>
<option
value="deactivated"
>
{{ $t('admin_dash.users.only_deactivated') }}
{{ $t('admin_dash.users.options.only_deactivated') }}
</option>
</Select>
<label class="query-label"> {{ $t('admin_dash.users.label_privileges') }} </label>
<label class="query-label"> {{ $t('admin_dash.users.labels.privileges') }} </label>
<Select
v-model="filtersPrivileges"
@update:model-value="reset"
@ -76,22 +76,22 @@
<option
value="all"
>
{{ $t('admin_dash.users.all') }}
{{ $t('admin_dash.users.options.all') }}
</option>
<option
value="admin"
>
{{ $t('admin_dash.users.only_administrators') }}
{{ $t('admin_dash.users.options.only_admins') }}
</option>
<option
value="modsnadmins"
>
{{ $t('admin_dash.users.all_privileged') }}
{{ $t('admin_dash.users.options.only_privileged') }}
</option>
<option
value="moderator"
>
{{ $t('admin_dash.users.only_moderators') }}
{{ $t('admin_dash.users.options.only_moderators') }}
</option>
</Select>
</li>
@ -100,13 +100,13 @@
class="query-label"
@update:model-value="v => {filtersNeedApproval = v; reset();}"
>
{{ $t('admin_dash.users.only_unapproved') }}
{{ $t('admin_dash.users.options.only_unapproved') }}
</Checkbox>
<Checkbox
class="query-label"
@update:model-value="v => {filtersUncomfirmed = v; reset();}"
>
{{ $t('admin_dash.users.only_unconfirmed') }}
{{ $t('admin_dash.users.options.only_unconfirmed') }}
</Checkbox>
</li>
</ul>
@ -128,7 +128,7 @@
<button
class="button button-default btn"
>
{{ $t('admin_dash.users.bulk_actions.title') }}
{{ $t('admin_dash.users.actions.title') }}
</button>
</template>
<template #content>
@ -138,7 +138,7 @@
class="main-button"
@click="confirmSelection('confirmActivate')"
>
{{ $t('admin_dash.users.activate') }}
{{ $t('admin_dash.users.actions.activate') }}
</button>
</div>
<div class="menu-item dropdown-item">
@ -146,7 +146,7 @@
class="main-button"
@click="confirmSelection('confirmDeactivate')"
>
{{ $t('admin_dash.users.deactivate') }}
{{ $t('admin_dash.users.actions.deactivate') }}
</button>
</div>
<div class="menu-item dropdown-item">
@ -154,7 +154,7 @@
class="main-button"
@click="confirmSelection('confirmDelete')"
>
{{ $t('admin_dash.users.delete') }}
{{ $t('admin_dash.users.actions.delete_user') }}
</button>
</div>
<div class="menu-item dropdown-item">
@ -162,7 +162,7 @@
class="main-button"
@click="confirmSelection('confirmGrantAdmin')"
>
{{ $t('admin_dash.users.grant_admin') }}
{{ $t('admin_dash.users.actions.grant_admin') }}
</button>
</div>
<div class="menu-item dropdown-item">
@ -170,7 +170,7 @@
class="main-button"
@click="confirmSelection('confirmRevokeAdmin')"
>
{{ $t('admin_dash.users.revoke_admin') }}
{{ $t('admin_dash.users.actions.revoke_admin') }}
</button>
</div>
<div class="menu-item dropdown-item">
@ -178,7 +178,7 @@
class="main-button"
@click="confirmSelection('confirmGrantModerator')"
>
{{ $t('admin_dash.users.grant_moderator') }}
{{ $t('admin_dash.users.actions.grant_moderator') }}
</button>
</div>
<div class="menu-item dropdown-item">
@ -186,7 +186,7 @@
class="main-button"
@click="confirmSelection('confirmRevokeModerator')"
>
{{ $t('admin_dash.users.revoke_moderator') }}
{{ $t('admin_dash.users.actions.revoke_moderator') }}
</button>
</div>
<div class="menu-item dropdown-item">
@ -194,7 +194,7 @@
class="main-button"
@click="confirmSelection('confirmApprove')"
>
{{ $t('admin_dash.users.approve') }}
{{ $t('admin_dash.users.actions.approve') }}
</button>
</div>
<div class="menu-item dropdown-item">
@ -202,7 +202,7 @@
class="main-button"
@click="confirmSelection('confirmConfirm')"
>
{{ $t('admin_dash.users.confirm_user') }}
{{ $t('admin_dash.users.actions.confirm') }}
</button>
</div>
<div class="menu-item dropdown-item">
@ -210,7 +210,7 @@
class="main-button"
@click="confirmSelection('confirmResendEmail')"
>
{{ $t('admin_dash.users.resend_confirmation_email') }}
{{ $t('admin_dash.users.actions.resend_confirmation_email') }}
</button>
</div>
<div class="menu-item dropdown-item">
@ -218,15 +218,15 @@
class="main-button"
@click="confirmSelection('confirmRequirePasswordChange')"
>
{{ $t('admin_dash.users.require_password_change') }}
{{ $t('admin_dash.users.actions.require_password_change') }}
</button>
</div>
<div class="menu-item dropdown-item">
<button
class="main-button"
@click="confirmSelection('adminDisableMFA')"
@click="confirmSelection('confirmDisableMFA')"
>
{{ $t('admin_dash.users.disable_mfa') }}
{{ $t('admin_dash.users.actions.disable_mfa') }}
</button>
</div>
</div>
@ -246,87 +246,98 @@
</div>
<GenericConfirm
ref="confirmActivate"
:title="$t('admin_dash.users.bulk_actions.activate')"
:cancel-text="$t('admin_dash.users.bulk_actions.no')"
:confirm-text="$t('admin_dash.users.bulk_actions.yes')"
:title="$t('admin_dash.users.actions.confirm_multi.title')"
:message="$t('admin_dash.users.actions.confirm_multi.activate')"
:cancel-text="$t('admin_dash.users.actions.no')"
:confirm-text="$t('admin_dash.users.actions.yes')"
@action="selectionConfirmed('adminActivateUser')"
/>
<GenericConfirm
ref="confirmDeactivate"
:title="$t('admin_dash.users.bulk_actions.deactivate')"
:cancel-text="$t('admin_dash.users.bulk_actions.no')"
:confirm-text="$t('admin_dash.users.bulk_actions.yes')"
:title="$t('admin_dash.users.actions.confirm_multi.title')"
:message="$t('admin_dash.users.actions.confirm_multi.deactivate')"
:cancel-text="$t('admin_dash.users.actions.no')"
:confirm-text="$t('admin_dash.users.actions.yes')"
@action="selectionConfirmed('adminDeactivateUser')"
/>
<GenericConfirm
ref="confirmDelete"
:title="$t('admin_dash.users.bulk_actions.delete')"
:cancel-text="$t('admin_dash.users.bulk_actions.no')"
:confirm-text="$t('admin_dash.users.bulk_actions.yes')"
:title="$t('admin_dash.users.actions.confirm_multi.title')"
:message="$t('admin_dash.users.actions.confirm_multi.delete_user')"
:cancel-text="$t('admin_dash.users.actions.no')"
:confirm-text="$t('admin_dash.users.actions.yes')"
@action="selectionConfirmed('adminDeleteUser')"
/>
<GenericConfirm
ref="confirmGrantAdmin"
:title="$t('admin_dash.users.bulk_actions.grant_admin')"
:cancel-text="$t('admin_dash.users.bulk_actions.no')"
:confirm-text="$t('admin_dash.users.bulk_actions.yes')"
:title="$t('admin_dash.users.actions.confirm_multi.title')"
:message="$t('admin_dash.users.actions.confirm_multi.grant_admin')"
:cancel-text="$t('admin_dash.users.actions.no')"
:confirm-text="$t('admin_dash.users.actions.yes')"
@action="selectionConfirmed('adminAddUserToAdminGroup')"
/>
<GenericConfirm
ref="confirmRevokeAdmin"
:title="$t('admin_dash.users.bulk_actions.revoke_admin')"
:cancel-text="$t('admin_dash.users.bulk_actions.no')"
:confirm-text="$t('admin_dash.users.bulk_actions.yes')"
:title="$t('admin_dash.users.actions.confirm_multi.title')"
:message="$t('admin_dash.users.actions.confirm_multi.revoke_admin')"
:cancel-text="$t('admin_dash.users.actions.no')"
:confirm-text="$t('admin_dash.users.actions.yes')"
@action="selectionConfirmed('adminRemoveUserFromAdminGroup')"
/>
<GenericConfirm
ref="confirmGrantModerator"
:title="$t('admin_dash.users.bulk_actions.grant_moderator')"
:cancel-text="$t('admin_dash.users.bulk_actions.no')"
:confirm-text="$t('admin_dash.users.bulk_actions.yes')"
:title="$t('admin_dash.users.actions.confirm_multi.title')"
:message="$t('admin_dash.users.actions.confirm_multi.grant_moderator')"
:cancel-text="$t('admin_dash.users.actions.no')"
:confirm-text="$t('admin_dash.users.actions.yes')"
@action="selectionConfirmed('adminAddUserToModeratorGroup')"
/>
<GenericConfirm
ref="confirmRevokeModerator"
:title="$t('admin_dash.users.bulk_actions.revoke_moderator')"
:cancel-text="$t('admin_dash.users.bulk_actions.no')"
:confirm-text="$t('admin_dash.users.bulk_actions.yes')"
:title="$t('admin_dash.users.actions.confirm_multi.title')"
:message="$t('admin_dash.users.actions.confirm_multi.revoke_moderator')"
:cancel-text="$t('admin_dash.users.actions.no')"
:confirm-text="$t('admin_dash.users.actions.yes')"
@action="selectionConfirmed('adminRemoveUserFromModeratorGroup')"
/>
<GenericConfirm
ref="confirmApprove"
:title="$t('admin_dash.users.bulk_actions.approve')"
:cancel-text="$t('admin_dash.users.bulk_actions.no')"
:confirm-text="$t('admin_dash.users.bulk_actions.yes')"
:title="$t('admin_dash.users.actions.confirm_multi.title')"
:message="$t('admin_dash.users.actions.confirm_multi.approve')"
:cancel-text="$t('admin_dash.users.actions.no')"
:confirm-text="$t('admin_dash.users.actions.yes')"
@action="selectionConfirmed('adminApproveUser')"
/>
<GenericConfirm
ref="confirmConfirm"
:title="$t('admin_dash.users.bulk_actions.confirm')"
:cancel-text="$t('admin_dash.users.bulk_actions.no')"
:confirm-text="$t('admin_dash.users.bulk_actions.yes')"
:title="$t('admin_dash.users.actions.confirm_multi.title')"
:message="$t('admin_dash.users.actions.confirm_multi.confirm')"
:cancel-text="$t('admin_dash.users.actions.no')"
:confirm-text="$t('admin_dash.users.actions.yes')"
@action="selectionConfirmed('adminConfirmUser')"
/>
<GenericConfirm
ref="confirmResendEmail"
:title="$t('admin_dash.users.bulk_actions.resend_confirmation_email')"
:cancel-text="$t('admin_dash.users.bulk_actions.no')"
:confirm-text="$t('admin_dash.users.bulk_actions.yes')"
:title="$t('admin_dash.users.actions.confirm_multi.title')"
:message="$t('admin_dash.users.actions.confirm_multi.resend_confirmation_email')"
:cancel-text="$t('admin_dash.users.actions.no')"
:confirm-text="$t('admin_dash.users.actions.yes')"
@action="selectionConfirmed('adminResendConfirmationEmail')"
/>
<GenericConfirm
ref="confirmRequirePasswordChange"
:title="$t('admin_dash.users.bulk_actions.require_password_change')"
:cancel-text="$t('admin_dash.users.bulk_actions.no')"
:confirm-text="$t('admin_dash.users.bulk_actions.yes')"
:title="$t('admin_dash.users.actions.confirm_multi.title')"
:message="$t('admin_dash.users.actions.confirm_multi.require_password_change')"
:cancel-text="$t('admin_dash.users.actions.no')"
:confirm-text="$t('admin_dash.users.actions.yes')"
@action="selectionConfirmed('adminRequirePasswordChange')"
/>
<GenericConfirm
ref="confirmDisableMFA"
:title="$t('admin_dash.users.title_confirm')"
:message="$t('admin_dash.users.bulk_actions.disable_mfa')"
:cancel-text="$t('admin_dash.users.bulk_actions.no')"
:confirm-text="$t('admin_dash.users.bulk_actions.yes')"
:title="$t('admin_dash.users.actions.confirm_multi.title')"
:message="$t('admin_dash.users.actions.disable_mfa')"
:cancel-text="$t('admin_dash.users.actions.no')"
:confirm-text="$t('admin_dash.users.actions.yes')"
@action="selectionConfirmed('adminDisableMFA')"
/>
</div>

View file

@ -1152,51 +1152,65 @@
}
},
"users": {
"management": "Management",
"search_users": "Search for users...",
"label_query": "Query",
"label_name": "Name",
"label_email": "Email",
"label_origin": "Origin",
"label_activity": "Activity",
"label_privileges": "Privileges",
"all": "All",
"only_local": "Local Only",
"only_external": "External Only",
"only_active": "Active Only",
"only_deactivated": "Deactivated Only",
"only_administrators": "Admin Only",
"all_privileged": "All Privileged",
"only_moderators": "Moderators Only",
"only_unapproved": "Unapproved Only",
"only_unconfirmed": "Unconfirmed Only",
"refresh": "Refresh",
"title": "Users",
"labels": {
"query": "Query",
"name": "Name",
"email": "Email",
"origin": "Origin",
"activity": "Activity",
"privileges": "Privileges"
},
"tags": {
"add_new": "Add New Tag",
"new_title": "Enter New Tag And Confirm",
"yes": "Add",
"no": "Abort"
},
"options": {
"all": "All",
"only_local": "Only Local",
"only_external": "Only External",
"only_active": "Only Active",
"only_deactivated": "Only Deactivated",
"only_admins": "Only Admins",
"only_privileged": "Only Privileged",
"only_moderators": "Only Moderators",
"only_unapproved": "Exclude Approved",
"only_unconfirmed": "Exclude Confirmed"
},
"filters": {
"show_direct": "Show Direct Posts",
"show_reblogs": "Show Reblogs",
"ascending": "Oldest First",
"descending": "Newest First"
},
"indicator": {
"admin": "Admin",
"moderator": "Moderator",
"active": "Active",
"deactivated": "Deactivated",
"confirmed": "Confirmed"
},
"actions": {
"button": {
"title": "Actions",
"yes": "Confirm",
"no": "Abort",
"activate": "Activate",
"deactivate": "Deactivate",
"delete_user": "Delete",
"delete_status": "Delete",
"grant_admin": "Grant Admin",
"revoke_admin": "Revoke Admin",
"grant_moderator": "Grant Moderator",
"revoke_moderator": "Revoke Moderator",
"approve": "Approve",
"confirm": "Confirm",
"require_password_change": "Require Password Change",
"resend_confirmation_email": "Resend Confirmation Email",
"disable_mfa": "Disable MFA"
},
"title": "Actions",
"yes": "Confirm",
"no": "Abort",
"activate": "Activate",
"deactivate": "Deactivate",
"delete_user": "Delete",
"delete_status": "Delete",
"grant_admin": "Grant Admin",
"revoke_admin": "Revoke Admin",
"grant_moderator": "Grant Moderator",
"revoke_moderator": "Revoke Moderator",
"approve": "Approve",
"confirm": "Confirm",
"require_password_change": "Require Password Change",
"resend_confirmation_email": "Resend Confirmation Email",
"disable_mfa": "Disable MFA",
"confirm_single": {
"title": "Confirm",
"activate": "Activate User?",
"deactivate": "Deactivate User?",
"delete_user": "Delete User?",
@ -1212,7 +1226,8 @@
"disable_mfa": "Disable MFA?"
},
"confirm_multi": {
"activate": "Actiate Selected Users?",
"title": "Confirm For Selection",
"activate": "Activate Selected Users?",
"deactivate": "Deactivate Selected Users?",
"delete_user": "Delete Selected Users?",
"delete_status": "Delete Selected Statuses?",
@ -1229,6 +1244,9 @@
}
},
"details": {
"title": "User Details",
"overview": "Overview",
"button": "Details",
"id": "ID",
"actor_type": "Actor Type",
"actor_types": {
@ -1246,74 +1264,7 @@
"status": "Status",
"remote": "Remote",
"account_type": "Account Type"
},
"bulk_actions": {
"title": "Bulk Actions",
"yes": "Yes",
"no": "No",
"activate": "Activate Selected Users?",
"deactivate": "Deactivate Selected Users?",
"delete_user": "Delete Selected Users?",
"delete_status": "Delete Selected Statuses?",
"grant_admin": "Grant Admin Privileges To Selected Users?",
"revoke_admin": "Revoke Admin Privileges From Selected Users?",
"grant_moderator": "Grant Moderator Privileges To Selected Users?",
"revoke_moderator": "Revoke Moderator Privileges From Selected Users?",
"approve": "Approve Selected Users?",
"confirm": "Confirm Selected Users?",
"require_password_change": "Require Password Change For Selected Users?",
"resend_confirmation_email": "Resend Confirmation Email For Selected Users?",
"disable_mfa": "Disable MFA For Selected Users?"
},
"activate": "Activate?",
"deactivate": "Deactivate?",
"delete_user": "Delete User?",
"resend_confirmation_email": "Resend confirmation email",
"approve": "Approve",
"grant_admin": "Grant Admin",
"revoke_admin": "Revoke Admin",
"grant_moderator": "Grant Moderator",
"revoke_moderator": "Revoke Moderator",
"confirm_user": "Confirm",
"resend_confirmation_email": "Resend Confirmation Email",
"require_password_change": "Require Password Change",
"disable_mfa": "Disable MFA",
"delete": "Delete",
"loading_user": "Loading user...",
"delete_user": "Delete User",
"expand_user": "Expand user",
"collapse_user": "Collapse user",
"is_admin": "Is admin",
"is_moderator": "Is moderator",
"is_confirmed": "Is confirmed",
"is_active": "Is active",
"expand_timeline": "Expand timeline",
"collapse_timeline": "Collapse timeline",
"expand_raw_info": "Expand raw info",
"collapse_raw_info": "Collapse raw info",
"status_id": "Status ID",
"created_at": "Created at",
"edited_at": "Edited at",
"delete_status": "Delete status",
"content_nsfw": "Content marked sensitive",
"scope_public": "Public",
"scope_unlisted": "Unlisted",
"scope_private": "Private",
"scope_direct": "Direct",
"title_info": "Info",
"title_content": "Content",
"link_source": "Source",
"title_database": "Database",
"title_details": "Details",
"title_users": "Users",
"title_actions": "Actions",
"user_has_no_posts": "User has no posts",
"indicator_admin": "Admin",
"indicator_moderator": "Moderator",
"indicator_active": "Active",
"indicator_deactivated": "Deactivated",
"indicator_approved": "Approved",
"indicator_confirmed": "Confirmed"
}
},
"limits": {
"arbitrary_limits": "Arbitrary limits",

View file

@ -117,6 +117,12 @@ const adminSettingsStorage = {
adminDisableMFA (store, { opts }) {
return store.rootState.api.backendInteractor.adminDisableMFA({ opts })
},
adminTagUser (store, { user, tag }) {
return store.rootState.api.backendInteractor.tagUser({ user, tag })
},
adminUntagUser (store, { user, tag }) {
return store.rootState.api.backendInteractor.untagUser({ user, tag })
},
loadFrontendsStuff ({ rootState, commit }) {
rootState.api.backendInteractor.fetchAvailableFrontends()
.then(frontends => commit('setAvailableFrontends', { frontends }))