-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathserver.js
More file actions
54 lines (47 loc) · 1.5 KB
/
server.js
File metadata and controls
54 lines (47 loc) · 1.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
const next = require('next');
const express = require('express');
const axios = require('axios');
const cookieParser = require('cookie-parser');
const dev = process.env.NODE_ENV !== 'production';
const port = process.env.PORT || 3000;
const app = next({ dev });
const handle = app.getRequestHandler();
const authenticate = async (email, password) => {
const { data } = await axios.get('https://jsonplaceholder.typicode.com/users');
return data.find(user => {
if (user.email === email && user.website === password) {
return user;
}
});
}
app.prepare().then(() => {
const server = express();
server.use(express.json());
server.use(cookieParser("123123"));
server.post('/api/login', async (req, res) => {
try {
const { email, password } = req.body;
const user = await authenticate(email, password);
if (!user) {
return res.status(403).send("Invalid credentials");
}
const data = {
name: user.name,
email: user.email,
phone: user.phone,
test: 'test'
}
res.cookie('token', data, {
httpOnly: true,
signed: true,
});
res.json({ user: data });
} catch (e) {
res.status(500).send(e.message);
}
});
server.get('*', (req, res) => handle(req, res));
server.listen(port, err => {
if (err) throw err;
});
});