user.ctrl.js
3.11 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
}