Add registration reasons and approve/reject to pending users

This commit is contained in:
Sol Fisher Romanoff 2022-12-12 23:04:48 +02:00
parent a4173e0900
commit 21c9b06a4e
Signed by: nbsp
GPG Key ID: 9D3F2B64F2341B62
7 changed files with 62 additions and 4 deletions

View File

@ -43,7 +43,18 @@
}
}
.basic-user-card {
width: 0;
.user-information {
display: flex;
flex-direction: column;
padding-bottom: 0.6em;
flex: 1;
.basic-user-card {
padding-bottom: 0;
}
.registration-reason {
padding-left: 5.2em;
}
}
}

View File

@ -165,7 +165,15 @@
:key="user.id"
class="user"
>
<BasicUserCard :user="user" />
<div class="user-information">
<BasicUserCard :user="user" />
<div
v-if="status.need_approval"
class="registration-reason"
>
{{ user.registration_reason }}
</div>
</div>
<ModerationTools
:user="user"
class="user-moderation"

View File

@ -104,6 +104,9 @@ const ModerationTools = {
}
})
},
approveAccount () {
this.$store.state.api.backendInteractor.approveAccount({ nickname: this.user.screen_name })
},
getPasswordResetToken () {
this.$store.state.api.backendInteractor.getPasswordResetToken({ nickname: this.user.screen_name })
.then(data => {

View File

@ -29,6 +29,25 @@
class="dropdown-divider"
/>
</span>
<span v-if="!user.approved && user.is_local">
<button
class="button-default dropdown-item"
@click="approveAccount()"
>
{{ $t('user_card.admin_menu.approve_account') }}
</button>
<button
class="button-default dropdown-item"
@click="deleteUserDialog(true)"
>
{{ $t('user_card.admin_menu.reject_account') }}
</button>
</span>
<div
v-if="!user.approved && user.is_local"
role="separator"
class="dropdown-divider"
/>
<button
class="button-default dropdown-item"
@click="toggleActivationStatus()"
@ -172,7 +191,7 @@
<template v-slot:header>
{{ $t('user_card.admin_menu.delete_user') }}
</template>
<p>{{ $t('user_card.admin_menu.delete_user_confirmation') }}</p>
<p>{{ $t('user_card.admin_menu.delete_user_data_and_deactivate_confirmation') }}</p>
<template v-slot:footer>
<button
class="btn button-default"

View File

@ -1109,6 +1109,7 @@
"user_card": {
"admin_menu": {
"activate_account": "Activate account",
"approve_account": "Approve account",
"convert_to": "Convert to { type }",
"deactivate_account": "Deactivate account",
"delete_account": "Delete account",
@ -1127,6 +1128,7 @@
"password_reset_token": "Password reset token",
"password_reset_token_content": "Password reset token has been generated: { token }\nYou can also use this link to reset the password: ",
"quarantine": "Disallow user posts from federating",
"reject_account": "Reject account",
"revoke_admin": "Revoke Admin",
"revoke_moderator": "Revoke Moderator",
"sandbox": "Force posts to be followers-only",

View File

@ -26,6 +26,7 @@ const ADMIN_REPORT_NOTE_URL = (report, note) => `/api/v1/pleroma/admin/reports/$
const ADMIN_PASSWORD_RESET_TOKEN_URL = nickname => `/api/v1/pleroma/admin/users/${nickname}/password_reset`
const ADMIN_FORCE_PASSWORD_RESET_URL = '/api/v1/pleroma/admin/users/force_password_reset'
const ADMIN_DISABLE_MFA_URL = '/api/v1/pleroma/admin/users/disable_mfa'
const ADMIN_APPROVE_ACCOUNT_URL = '/api/v1/pleroma/admin/users/approve'
const MFA_SETTINGS_URL = '/api/pleroma/accounts/mfa'
const MFA_BACKUP_CODES_URL = '/api/pleroma/accounts/mfa/backup_codes'
@ -745,6 +746,17 @@ const forceDisableMFA = ({ nickname, credentials }) => {
})
}
const approveAccount = ({ nickname, credentials }) => {
return promisedRequest({
url: ADMIN_APPROVE_ACCOUNT_URL,
method: 'PATCH',
payload: {
nicknames: [nickname]
},
credentials
})
}
const fetchTimeline = ({
timeline,
credentials,
@ -1824,6 +1836,7 @@ const apiService = {
getPasswordResetToken,
forcePasswordReset,
forceDisableMFA,
approveAccount,
register,
getCaptcha,
updateProfileImages,

View File

@ -149,6 +149,8 @@ export const parseUser = (data) => {
output.profile_image_url = data.avatar
output.profile_image_url_original = data.avatar
output.is_local = data.local
output.approved = data.is_approved
output.registration_reason = data.registration_reason
output.emoji = []
} else {
output.screen_name = data.screen_name