user.ctrl.js
3.16 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
121
122
123
124
125
126
127
128
129
130
131
//유저에 관련된 Api
const User = require('../../models/user')
const Bottle = require('../../models/bottle')
const Hub = require('../../models/hub')
const jwt = require('jsonwebtoken')
exports.myInfo = async ctx => {
const token = ctx.req.headers.authorization
if (!token || !token.length) {
ctx.status = 401
return
}
const { userId } = jwt.verify(token, process.env.JWT_SECRET)
const user = await User.findById(userId);
if(!user || !user.userTypeCd) {
ctx.status = 403;
return;
}
let result = {
myInfo : user,
myDoctor : null,
patientList : [],
userList : [],
};
if (user.userTypeCd === 'NORMAL') {
const doctor = await User.findById(user.doctorId);
result.myDoctor = doctor;
} else if (user.userTypeCd === 'DOCTOR') {
const patientList = await User.findAllByDoctorId(user.userId);
result.patientList = patientList;
} else if (user.userTypeCd === 'MANAGER') {
const userList = await User.find();
result.userList = userList;
}
ctx.status = 200;
ctx.body = result;
}
exports.getUserDetail = async ctx => {
const token = ctx.req.headers.authorization;
if (!token || !token.length) {
ctx.status = 401;
return;
}
const { userId } = jwt.verify(token, process.env.JWT_SECRET);
const user = await User.findById(userId);
if(!user) {
ctx.status = 403;
return;
} else if (user.userTypeCd === 'NORMAL') {
ctx.status = 403;
return;
}
let result = {
reqUser : user,
reqUserBottleList : [],
};
if (user.userTypeCd === 'DOCTOR') {
const { reqUserId } = ctx.params;
const reqUser = await User.findById(reqUserId);
if (!reqUser) {
ctx.status = 404;
return;
}
if(reqUser.doctorId !== user.userId) {
ctx.status = 403;
return;
}
const reqUserHubList = await Hub.findAllByUserId(reqUserId);
if(reqUserHubList && reqUserHubList.length) {
const reqUserBottleList = [];
await Promise.all(reqUserHubList.forEach(async hub => {
const bottle = await Bottle.findAllByHubId(hub.hubId);
reqUserBottleList.push(...bottle);
}));
result.reqUserBottleList = reqUserBottleList;
}
}
ctx.status = 200;
ctx.body = result;
};
exports.updateReqUser = async ctx => {
const token = ctx.req.headers.authorization;
if (!token || !token.length) {
ctx.status = 401;
return;
}
const { userId } = jwt.verify(token, process.env.JWT_SECRET);
const user = await User.findById(userId);
if(!user) {
ctx.status = 403;
return;
}
if (user.userTypeCd === 'MANAGER') {
const { useYn } = ctx.request.body;
const { reqUserId } = ctx.params;
const reqUser = await User.findById(reqUserId);
if(!reqUser) {
ctx.status = 404;
return;
}
await reqUser.setUseYn(useYn);
await reqUser.save();
return;
}
ctx.status = 200;
}