diff options
Diffstat (limited to 'backend/routes.js')
| -rw-r--r-- | backend/routes.js | 114 |
1 files changed, 0 insertions, 114 deletions
diff --git a/backend/routes.js b/backend/routes.js deleted file mode 100644 index 83748fb..0000000 --- a/backend/routes.js +++ /dev/null @@ -1,114 +0,0 @@ -const express = require('express'); -const router = express.Router(); -const sha512 = require('js-sha512'); -const shortid = require('shortid'); - -const salt = 'suola'; - -const low = require('lowdb'); -const FileSync = require('lowdb/adapters/FileSync'); - -const adapter = new FileSync('db.json'); -const db = low(adapter); - -db.defaults({ users: [] }).write(); - -router.get('/', (req, res) => { - res.json({ - message: 'Backend API', - }); -}); - -router.post('/register', (req, res) => { - const { username, password } = req.body; - if (!username || !password) { - res.status(400); - return res.json({ - error: 'Username or password missing.', - }); - } - - const user = db.get('users').find({ username }).value(); - if (user) { - res.status(400); - return res.json({ - error: 'Username already taken.', - }); - } - - const pwHash = sha512(salt + password); - db.get('users').push({ username, password: pwHash }).write(); - return res.json({ - username, - }); -}); - -router.post('/login', (req, res) => { - const { username, password } = req.body; - if (!username || !password) { - res.status(400); - return res.json({ - error: 'Username or password missing.', - }); - } - - const userObj = db.get('users').find({ username }); - const user = userObj.value(); - - if (user) { - const sessionId = shortid.generate(); - userObj.assign({ sessionId }).write(); - res.set('Set-Cookie', `sessionId=${sessionId}`); - return res.json({ - username, - }); - } - - res.status(403); - res.json({ - error: 'Wrong username or password', - }); -}); - -router.post('/logout', (req, res) => { - const cookies = req.cookies; - const { sessionId } = cookies; - - const userObj = db.get('users').find({ sessionId }); - if (userObj) { - userObj.assign({ sessionId: null }).write(); - } - res.status(204); - res.set('Set-Cookie', 'sessionId=deleted; expires=Thu, 01 Jan 1970 00:00:00 GMT'); - res.send(); -}); - -router.get('/user', (req, res) => { - const cookies = req.cookies; - const { sessionId } = cookies; - - if (!sessionId) { - res.status(403); - return res.json({ - message: 'Log in first!', - }); - } - - const userObj = db.get('users').find({ sessionId }); - const user = userObj.value(); - - if (userObj) { - return res.json({ - message: `Hello user ${user.username}!`, - username: user.username, - }); - } - - res.status(400); - return res.json({ - message: 'Invalid session token.', - sessionId, - }); -}); - -module.exports = router; |
