Added user sign up and login.

This commit is contained in:
DebaucheryLibrarian
2021-03-13 04:26:24 +01:00
parent 99cfd3dc3f
commit 816529b0ca
42 changed files with 741 additions and 8 deletions

45
src/web/auth.js Normal file
View File

@@ -0,0 +1,45 @@
'use strict';
const { login, signup } = require('../auth');
const { fetchUser } = require('../users');
async function loginApi(req, res) {
const user = await login(req.body);
req.session.user = user;
res.send(user);
}
async function logoutApi(req, res) {
req.session.destroy((error) => {
if (error) {
res.status(500).send();
}
res.status(204).send();
});
}
async function fetchMeApi(req, res) {
if (req.session.user) {
req.session.user = await fetchUser(req.session.user.id, req.session.user);
res.send(req.session.user);
return;
}
res.status(401).send();
}
async function signupApi(req, res) {
const user = await signup(req.body);
res.send(user);
}
module.exports = {
login: loginApi,
logout: logoutApi,
fetchMe: fetchMeApi,
signup: signupApi,
};

View File

@@ -15,6 +15,13 @@ const errorHandler = require('./error');
const pg = require('./postgraphile');
const {
login,
logout,
signup,
fetchMe,
} = require('./auth');
const {
fetchScene,
fetchScenes,
@@ -60,6 +67,12 @@ async function initServer() {
next();
});
router.get('/api/session', fetchMe);
router.post('/api/session', login);
router.delete('/api/session', logout);
router.post('/api/users', signup);
router.get('/api/scenes', fetchScenes);
router.get('/api/scenes/:releaseId', fetchScene);
router.get('/api/scenes/:releaseId/poster', fetchScenePoster);