kopia lustrzana https://gitlab.com/soapbox-pub/soapbox
Revoke name through the UI
rodzic
4927a321df
commit
4d19ff209c
|
@ -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) =>
|
const deactivateMastodonUsers = (accountIds: string[], reportId?: string) =>
|
||||||
(dispatch: AppDispatch, getState: () => RootState) =>
|
(dispatch: AppDispatch, getState: () => RootState) =>
|
||||||
Promise.all(accountIds.map(accountId => {
|
Promise.all(accountIds.map(accountId => {
|
||||||
|
@ -631,6 +639,7 @@ export {
|
||||||
deleteUser,
|
deleteUser,
|
||||||
approveUser,
|
approveUser,
|
||||||
rejectUser,
|
rejectUser,
|
||||||
|
revokeName,
|
||||||
deleteStatus,
|
deleteStatus,
|
||||||
toggleStatusSensitivity,
|
toggleStatusSensitivity,
|
||||||
tagUsers,
|
tagUsers,
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import React, { ChangeEventHandler, useState } from 'react';
|
import React, { ChangeEventHandler, useState } from 'react';
|
||||||
import { defineMessages, FormattedMessage, useIntl } from 'react-intl';
|
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 { deactivateUserModal, deleteUserModal } from 'soapbox/actions/moderation';
|
||||||
import { useAccount } from 'soapbox/api/hooks';
|
import { useAccount } from 'soapbox/api/hooks';
|
||||||
import { useSuggest, useVerify } from 'soapbox/api/hooks/admin';
|
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' },
|
userSuggested: { id: 'admin.users.user_suggested_message', defaultMessage: '@{acct} was suggested' },
|
||||||
userUnsuggested: { id: 'admin.users.user_unsuggested_message', defaultMessage: '@{acct} was unsuggested' },
|
userUnsuggested: { id: 'admin.users.user_unsuggested_message', defaultMessage: '@{acct} was unsuggested' },
|
||||||
badgesSaved: { id: 'admin.users.badges_saved_message', defaultMessage: 'Custom badges updated.' },
|
badgesSaved: { id: 'admin.users.badges_saved_message', defaultMessage: 'Custom badges updated.' },
|
||||||
|
revokedName: { id: 'admin.users.revoked_name_message', defaultMessage: 'Name revoked.' },
|
||||||
});
|
});
|
||||||
|
|
||||||
interface IAccountModerationModal {
|
interface IAccountModerationModal {
|
||||||
|
@ -88,6 +89,12 @@ const AccountModerationModal: React.FC<IAccountModerationModal> = ({ onClose, ac
|
||||||
dispatch(deactivateUserModal(intl, account.id));
|
dispatch(deactivateUserModal(intl, account.id));
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const handleRevokeName = () => {
|
||||||
|
dispatch(revokeName(account.id))
|
||||||
|
.then(() => toast.success(intl.formatMessage(messages.revokedName)))
|
||||||
|
.catch(() => {});
|
||||||
|
};
|
||||||
|
|
||||||
const handleDelete = () => {
|
const handleDelete = () => {
|
||||||
dispatch(deleteUserModal(intl, account.id));
|
dispatch(deleteUserModal(intl, account.id));
|
||||||
};
|
};
|
||||||
|
@ -151,6 +158,13 @@ const AccountModerationModal: React.FC<IAccountModerationModal> = ({ onClose, ac
|
||||||
</List>
|
</List>
|
||||||
|
|
||||||
<List>
|
<List>
|
||||||
|
{features.revokeName && (
|
||||||
|
<ListItem
|
||||||
|
label={<FormattedMessage id='account_moderation_modal.fields.revoke_name' defaultMessage='Revoke name' />}
|
||||||
|
onClick={handleRevokeName}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
|
||||||
<ListItem
|
<ListItem
|
||||||
label={<FormattedMessage id='account_moderation_modal.fields.deactivate' defaultMessage='Deactivate account' />}
|
label={<FormattedMessage id='account_moderation_modal.fields.deactivate' defaultMessage='Deactivate account' />}
|
||||||
onClick={handleDeactivate}
|
onClick={handleDeactivate}
|
||||||
|
|
|
@ -74,6 +74,7 @@
|
||||||
"account_moderation_modal.fields.badges": "Custom badges",
|
"account_moderation_modal.fields.badges": "Custom badges",
|
||||||
"account_moderation_modal.fields.deactivate": "Deactivate account",
|
"account_moderation_modal.fields.deactivate": "Deactivate account",
|
||||||
"account_moderation_modal.fields.delete": "Delete 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.suggested": "Suggested in people to follow",
|
||||||
"account_moderation_modal.fields.verified": "Verified account",
|
"account_moderation_modal.fields.verified": "Verified account",
|
||||||
"account_moderation_modal.info.id": "ID: {id}",
|
"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.actions.promote_to_moderator_message": "@{acct} was promoted to a moderator",
|
||||||
"admin.users.badges_saved_message": "Custom badges updated.",
|
"admin.users.badges_saved_message": "Custom badges updated.",
|
||||||
"admin.users.remove_donor_message": "@{acct} was removed as a donor",
|
"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.set_donor_message": "@{acct} was set as a donor",
|
||||||
"admin.users.user_deactivated_message": "@{acct} was deactivated",
|
"admin.users.user_deactivated_message": "@{acct} was deactivated",
|
||||||
"admin.users.user_deleted_message": "@{acct} was deleted",
|
"admin.users.user_deleted_message": "@{acct} was deleted",
|
||||||
|
@ -642,6 +644,10 @@
|
||||||
"edit_federation.save": "Save",
|
"edit_federation.save": "Save",
|
||||||
"edit_federation.success": "{host} federation was updated",
|
"edit_federation.success": "{host} federation was updated",
|
||||||
"edit_federation.unlisted": "Force posts unlisted",
|
"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_password.header": "Change Password",
|
||||||
"edit_profile.error": "Profile update failed",
|
"edit_profile.error": "Profile update failed",
|
||||||
"edit_profile.fields.accepts_email_list_label": "Subscribe to newsletter",
|
"edit_profile.fields.accepts_email_list_label": "Subscribe to newsletter",
|
||||||
|
|
|
@ -944,6 +944,9 @@ const getInstanceFeatures = (instance: Instance) => {
|
||||||
*/
|
*/
|
||||||
resetPassword: v.software === PLEROMA,
|
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.
|
* Ability to post statuses in Markdown, BBCode, and HTML.
|
||||||
* @see POST /api/v1/statuses
|
* @see POST /api/v1/statuses
|
||||||
|
|
Ładowanie…
Reference in New Issue