-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathserver.ts
More file actions
120 lines (107 loc) · 3.21 KB
/
Copy pathserver.ts
File metadata and controls
120 lines (107 loc) · 3.21 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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
const jsonServer = require('json-server');
const server = jsonServer.create();
const router = jsonServer.router('server/db.json');
const middlewares = jsonServer.defaults();
const db = require('./db.json');
const fs = require('fs');
var employees=[];
var managers=[];
var isLoadedData=false;
server.use(middlewares);
server.use(jsonServer.bodyParser);
// login
server.post('/login', (req, res, next) => {
const user = managers.filter(
(m) => m.email === req.body.email && m.password === req.body.password
)[0];
if (user) {
res.status(200).send({ responsePayload: { message: 'Login successful.', data: user } });
} else {
res.status(401).send({ responsePayload: { message: 'Incorrect email or password' } });
}
});
// sign up
server.post('/signup', (req, res) => {
const manager = managers.filter((m) => m.email === req.body.email)[0];
if (manager === undefined || manager === null) {
res.status(200).send({ responsePayload: req.body });
db.managers.push(req.body);
} else {
res.status(404).send({ responsePayload: { message: 'Manager with same email already exists' } });
}
});
// get employee list
server.get('/employees', (req, res) => {
if (isAuthorized(req) || req.query.bypassAuth === 'true') {
res.send({ responsePayload: employees });
} else {
res.sendStatus(401);
}
});
// save employee
server.post('/employee', (req, res) => {
if (isAuthorized(req) || req.query.bypassAuth === 'true') {
const employee = req.body;
employees.push(employee);
db.employees.push(employees);
res.status(200).send({ responsePayload: employees });
} else {
res.sendStatus(401);
}
});
// update employee
server.put('/employee/:id', (req, res) => {
if (isAuthorized(req) || req.query.bypassAuth === 'true') {
let employeeExit = false;
let employeeFoundAtIndex = -1
employees.map((e, i) => {
if (e.id == req.body.id) {
employeeExit = true;
employeeFoundAtIndex = i;
e = req.body;
}
});
if (employeeExit) {
employees[employeeFoundAtIndex] = req.body;
db.employees.push(employees);
res.status(200).send({ responsePayload: employees });
} else {
res.status(404).send({ responsePayload: { message: 'Employee not found' } });
}
} else {
res.sendStatus(401);
}
});
// delete employee
server.delete('/employee/:id', (req, res) => {
if (isAuthorized(req) || req.query.bypassAuth === 'true') {
let filteredEmployeeData = employees.filter((e) => { return e.id != req.params['id']; });
db.employees.push(filteredEmployeeData);
res.send({ responsePayload: filteredEmployeeData });
} else {
res.sendStatus(401);
}
});
server.use(router);
server.listen(3000, () => {
console.log('JSON Server is running');
if(!isLoadedData){
managers = readManagers();
employees = readEmployees();
isLoadedData=!isLoadedData;
}
});
function isAuthorized(req) {
//check awt token
return true;
}
function readEmployees() {
const dbRaw = fs.readFileSync('./server/db.json');
const employees = JSON.parse(dbRaw).employees;
return employees;
}
function readManagers() {
const dbRaw = fs.readFileSync('./server/db.json');
const managers = JSON.parse(dbRaw).managers;
return managers;
}