Revoke name through the UI

environments/review-main-yi2y9f/deployments/4692^2
Alex Gleason 3 months ago
parent 4927a321df
commit 4d19ff209c
No known key found for this signature in database
GPG Key ID: 7211D1F99744FBB7

@ -270,6 +270,14 @@ const fetchUsers = (filters: string[] = [], page = 1, query?: string | null, pag
}
};
const revokeName = (accountId: string, reportId?: string) =>
(dispatch: AppDispatch, getState: () => RootState) =>
api(getState)
.post(`/api/v1/admin/accounts/${accountId}/action`, {
type: 'revoke_name',
report_id: reportId,
});
const deactivateMastodonUsers = (accountIds: string[], reportId?: string) =>
(dispatch: AppDispatch, getState: () => RootState) =>
Promise.all(accountIds.map(accountId => {
@ -631,6 +639,7 @@ export {
deleteUser,
approveUser,
rejectUser,
revokeName,
deleteStatus,
toggleStatusSensitivity,
tagUsers,

@ -1,7 +1,7 @@
import React, { ChangeEventHandler, useState } from 'react';
import { defineMessages, FormattedMessage, useIntl } from 'react-intl';
import { setBadges as saveBadges } from 'soapbox/actions/admin';
import { revokeName, setBadges as saveBadges } from 'soapbox/actions/admin';
import { deactivateUserModal, deleteUserModal } from 'soapbox/actions/moderation';
import { useAccount } from 'soapbox/api/hooks';
import { useSuggest, useVerify } from 'soapbox/api/hooks/admin';
@ -25,6 +25,7 @@ const messages = defineMessages({
userSuggested: { id: 'admin.users.user_suggested_message', defaultMessage: '@{acct} was suggested' },
userUnsuggested: { id: 'admin.users.user_unsuggested_message', defaultMessage: '@{acct} was unsuggested' },
badgesSaved: { id: 'admin.users.badges_saved_message', defaultMessage: 'Custom badges updated.' },
revokedName: { id: 'admin.users.revoked_name_message', defaultMessage: 'Name revoked.' },
});
interface IAccountModerationModal {
@ -88,6 +89,12 @@ const AccountModerationModal: React.FC<IAccountModerationModal> = ({ onClose, ac
dispatch(deactivateUserModal(intl, account.id));
};
const handleRevokeName = () => {
dispatch(revokeName(account.id))
.then(() => toast.success(intl.formatMessage(messages.revokedName)))
.catch(() => {});
};
const handleDelete = () => {
dispatch(deleteUserModal(intl, account.id));
};
@ -151,6 +158,13 @@ const AccountModerationModal: React.FC<IAccountModerationModal> = ({ onClose, ac
</List>
<List>
{features.revokeName && (
<ListItem
label={<FormattedMessage id='account_moderation_modal.fields.revoke_name' defaultMessage='Revoke name' />}
onClick={handleRevokeName}
/>
)}
<ListItem
label={<FormattedMessage id='account_moderation_modal.fields.deactivate' defaultMessage='Deactivate account' />}
onClick={handleDeactivate}

@ -74,6 +74,7 @@
"account_moderation_modal.fields.badges": "Custom badges",
"account_moderation_modal.fields.deactivate": "Deactivate account",
"account_moderation_modal.fields.delete": "Delete account",
"account_moderation_modal.fields.revoke_name": "Revoke name",
"account_moderation_modal.fields.suggested": "Suggested in people to follow",
"account_moderation_modal.fields.verified": "Verified account",
"account_moderation_modal.info.id": "ID: {id}",
@ -183,6 +184,7 @@
"admin.users.actions.promote_to_moderator_message": "@{acct} was promoted to a moderator",
"admin.users.badges_saved_message": "Custom badges updated.",
"admin.users.remove_donor_message": "@{acct} was removed as a donor",
"admin.users.revoked_name_message": "Name revoked.",
"admin.users.set_donor_message": "@{acct} was set as a donor",
"admin.users.user_deactivated_message": "@{acct} was deactivated",
"admin.users.user_deleted_message": "@{acct} was deleted",
@ -642,6 +644,10 @@
"edit_federation.save": "Save",
"edit_federation.success": "{host} federation was updated",
"edit_federation.unlisted": "Force posts unlisted",
"edit_identity.names_title": "Names",
"edit_identity.pending_names_title": "Requested Names",
"edit_identity.reason_placeholder": "Why do you want this name?",
"edit_identity.request": "Request",
"edit_password.header": "Change Password",
"edit_profile.error": "Profile update failed",
"edit_profile.fields.accepts_email_list_label": "Subscribe to newsletter",

@ -944,6 +944,9 @@ const getInstanceFeatures = (instance: Instance) => {
*/
resetPassword: v.software === PLEROMA,
/** Admin can revoke the user's identity (without deleting their account). */
revokeName: v.software === DITTO,
/**
* Ability to post statuses in Markdown, BBCode, and HTML.
* @see POST /api/v1/statuses

Loading…
Cancel
Save