diff --git a/src/pages/PasswordReset.tsx b/src/pages/PasswordReset.tsx index 06b9198c..657f9eeb 100644 --- a/src/pages/PasswordReset.tsx +++ b/src/pages/PasswordReset.tsx @@ -1,5 +1,4 @@ -import React, { useState } from 'react'; -import {useNavigate, useSearchParams} from 'react-router'; +import { apiRoutes } from '@/apiRoutes'; import { Box, Button, Center, @@ -10,12 +9,13 @@ import { Stack, Title, useComputedColorScheme, } from '@mantine/core'; -import axios from 'axios'; import { notifications } from '@mantine/notifications'; import { IconCheck, IconX } from '@tabler/icons-react'; -import Logo from '../images/ots-logo.png'; +import axios from 'axios'; +import { useState } from 'react'; +import { useNavigate, useSearchParams } from 'react-router'; import { Header } from '../components/Header'; -import { apiRoutes } from '@/apiRoutes'; +import Logo from '../images/ots-logo.png'; export default function PasswordReset() { const [searchParams, setSearchParams] = useSearchParams(); @@ -34,11 +34,15 @@ export default function PasswordReset() { ).then(r => { if (r.status === 200) { notifications.show({ - message: 'Your password has been changed', + message: 'Your password has been changed. You will be logged out.', color: 'green', icon: , }); navigate('/login'); + axios.post(apiRoutes.logout).finally(() => { + localStorage.clear(); + navigate('/login'); + }); } }).catch(err => { notifications.show({ diff --git a/src/pages/Users.tsx b/src/pages/Users.tsx index bedf34c1..fda1fa9e 100644 --- a/src/pages/Users.tsx +++ b/src/pages/Users.tsx @@ -10,11 +10,12 @@ import { TableData, TextInput, useComputedColorScheme, } from '@mantine/core'; -import React, { useEffect, useState } from 'react'; -import { IconCheck, IconUserPlus, IconX } from '@tabler/icons-react'; import { notifications } from '@mantine/notifications'; -import axios from '../axios_config'; +import { IconCheck, IconUserPlus, IconX } from '@tabler/icons-react'; +import { useEffect, useState } from 'react'; +import { useNavigate } from 'react-router'; import { apiRoutes } from '../apiRoutes'; +import axios from '../axios_config'; export default function Users() { const [users, setUsers] = useState({ @@ -32,6 +33,7 @@ export default function Users() { const [confirm_password, setConfirmPassword] = useState(''); const [role, setRole] = useState(''); const computedColorScheme = useComputedColorScheme('light', { getInitialValueInEffect: true }); + const navigate = useNavigate(); function getUsers() { axios.get( @@ -215,10 +217,17 @@ export default function Users() { getUsers(); setShowResetPassword(false); setPassword(''); + const isSelf = username === localStorage.getItem('username'); notifications.show({ - message: `${username}'s password has been changed`, + message: isSelf ? 'Your password has been changed. You will be logged out.' : `${username}'s password has been changed`, color: 'green', }); + if (isSelf) { + axios.post(apiRoutes.logout).finally(() => { + localStorage.clear(); + navigate('/login'); + }); + } } }).catch(err => { notifications.show({