Skip to content

Commit f28a600

Browse files
committed
Admins can trigger reset password for users
- admins cannot trigger reset password for external users
1 parent 731e339 commit f28a600

File tree

3 files changed

+14
-2
lines changed

3 files changed

+14
-2
lines changed

app/assets/locales/en.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
"share": "Share",
1616
"cancel": "Cancel",
1717
"reset": "Reset",
18+
"reset_password": "Reset Password",
1819
"close": "Close",
1920
"delete": "Delete",
2021
"copy": "Copy Join Link",

app/javascript/components/users/user/forms/UpdateUserForm.jsx

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import Option from '../../../shared_components/utilities/Option';
3131
import useLocales from '../../../../hooks/queries/locales/useLocales';
3232
import useUpdateUserForm from '../../../../hooks/forms/users/user/useUpdateUserForm';
3333
import PermissionChecker from '../../../../helpers/PermissionChecker';
34+
import useCreateResetPwd from '../../../../hooks/mutations/users/useCreateResetPwd';
3435

3536
export default function UpdateUserForm({ user }) {
3637
const { t } = useTranslation();
@@ -42,6 +43,7 @@ export default function UpdateUserForm({ user }) {
4243
const { data: roles } = useRoles({ enabled: canUpdateRole });
4344
const { data: locales } = useLocales();
4445
const updateUserAPI = useUpdateUser(user?.id);
46+
const resetPasswordAPI = useCreateResetPwd({ shouldNavigate: false });
4547

4648
function currentLanguage() {
4749
const language = user?.language;
@@ -85,6 +87,13 @@ export default function UpdateUserForm({ user }) {
8587
</FormSelect>
8688
)}
8789
<Stack direction="horizontal" gap={2} className="float-end">
90+
{(canUpdateRole && !user.external_account) && (
91+
<Button
92+
variant="outline-secondary"
93+
onClick={() => resetPasswordAPI.mutate({ email: user.email })}
94+
>{ t('reset_password')}
95+
</Button>
96+
)}
8897
<Button variant="neutral" onClick={reset}> { t('reset') } </Button>
8998
<Button variant="brand" type="submit" disabled={updateUserAPI.isLoading}>
9099
{ t('update') }

app/javascript/hooks/mutations/users/useCreateResetPwd.jsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import { toast } from 'react-toastify';
2020
import { useTranslation } from 'react-i18next';
2121
import axios from '../../../helpers/Axios';
2222

23-
export default function useCreateResetPwd() {
23+
export default function useCreateResetPwd({ shouldNavigate = true } = {}) {
2424
const { t } = useTranslation();
2525
const navigate = useNavigate();
2626

@@ -29,7 +29,9 @@ export default function useCreateResetPwd() {
2929
{
3030
onSuccess: () => {
3131
toast.success(t('toast.success.user.reset_pwd_email_sent'));
32-
navigate('/');
32+
if (shouldNavigate) {
33+
navigate('/');
34+
}
3335
},
3436
onError: () => {
3537
toast.error(t('toast.error.problem_completing_action'));

0 commit comments

Comments
 (0)