Logout working

This commit is contained in:
2021-01-25 19:34:06 +11:00
parent 3ccddaec0f
commit 8c754b4570
5 changed files with 34 additions and 4 deletions
+1 -1
View File
@@ -22,7 +22,7 @@ This should get the template working in development mode.
- ~~sign up~~ - ~~sign up~~
- ~~validate email~~ - ~~validate email~~
- ~~login (with cookies)~~ - ~~login (with cookies)~~
- logout (with cookies) - ~~logout (with cookies)~~
- account deletion and management - account deletion and management
- annoying "This site uses cookies" message - annoying "This site uses cookies" message
- Administration Panel - Administration Panel
+1 -1
View File
@@ -25,7 +25,7 @@ const LogIn = props => {
handleSubmit(emailElement.value, passwordElement.value) handleSubmit(emailElement.value, passwordElement.value)
.then(res => res ? alert(res) : null) .then(res => res ? alert(res) : null)
.then(() => emailElement.value = passwordElement.value = '') //clear input .then(() => emailElement.value = passwordElement.value = '') //clear input
.then(() => props.history.push('/')) .then(() => { window.location.reload(true); }) //BUFGIX: force reload of the header element
.catch(e => console.error(e)) .catch(e => console.error(e))
; ;
} }
+22 -2
View File
@@ -1,9 +1,11 @@
import React from 'react'; import React from 'react';
import { useCookies } from 'react-cookie';
const Visitor = () => { const Visitor = () => {
return ( return (
<div> <div>
<a href='/signup'>Sign Up</a> <a href='/signup'>Sign Up</a>
<em> - </em>
<a href='/login'>Log In</a> <a href='/login'>Log In</a>
</div> </div>
); );
@@ -13,16 +15,34 @@ const Member = () => {
return ( return (
<div> <div>
<a href='/account'>Account</a> <a href='/account'>Account</a>
<a href='/logout'>Log out</a> <em> - </em>
<a href='/' onClick={logout}>Log out</a>
</div> </div>
); );
}; };
const logout = async () => {
await fetch('/api/accounts/logout')
.catch(e => console.error(e))
;
};
const Header = () => { const Header = () => {
const [cookies, setCookie] = useCookies(['loggedin']);
let Options;
//check for logged in/out status
if (cookies['loggedin']) {
Options = Member;
} else {
Options = Visitor;
}
return ( return (
<header> <header>
<h1><a href='/'>MERN Template</a></h1> <h1><a href='/'>MERN Template</a></h1>
<Visitor /> <Options />
</header> </header>
); );
}; };
+1
View File
@@ -5,5 +5,6 @@ const router = express.Router();
router.post('/signup', require('./signup')); router.post('/signup', require('./signup'));
router.get('/validation', require('./validation')); router.get('/validation', require('./validation'));
router.post('/login', require('./login')); router.post('/login', require('./login'));
router.get('/logout', require('./logout'));
module.exports = router; module.exports = router;
+9
View File
@@ -0,0 +1,9 @@
const route = (req, res) => {
//clear cookies and stored data
req.session.account = null;
res.clearCookie('loggedin');
return res.status(200).end();
};
module.exports = route;