v2 / examples / veb_fullstack / user_controllers.v
64 lines · 53 sloc · 1.64 KB · b474aa0faf8d055aaced80ed0687ac354d0864a0
Raw
1module main
2
3import veb
4import encoding.base64
5import json
6
7@['/controller/users'; get]
8pub fn (mut app App) controller_get_all_user(mut ctx Context) veb.Result {
9 token := ctx.req.header.get_custom('token') or { '' }
10
11 if !auth_verify(token) {
12 ctx.res.set_status(.unauthorized)
13 return ctx.text('Not valid token')
14 }
15
16 response := app.service_get_all_user() or {
17 ctx.res.set_status(.bad_request)
18 return ctx.text('${err}')
19 }
20 return ctx.json(response)
21}
22
23@['/controller/user'; get]
24pub fn (mut app App) controller_get_user(mut ctx Context) veb.Result {
25 token := ctx.req.header.get_custom('token') or { '' }
26
27 if !auth_verify(token) {
28 ctx.res.set_status(.unauthorized)
29 return ctx.text('Not valid token')
30 }
31
32 jwt_payload_stringify := base64.url_decode_str(token.split('.')[1])
33
34 jwt_payload := json.decode(JwtPayload, jwt_payload_stringify) or {
35 ctx.res.set_status(.internal_server_error)
36 return ctx.text('jwt decode error')
37 }
38
39 user_id := jwt_payload.sub
40
41 response := app.service_get_user(user_id.int()) or {
42 ctx.res.set_status(.bad_request)
43 return ctx.text('${err}')
44 }
45 return ctx.json(response)
46}
47
48@['/controller/user/create'; post]
49pub fn (mut app App) controller_create_user(mut ctx Context, username string, password string) veb.Result {
50 if username == '' {
51 ctx.res.set_status(.bad_request)
52 return ctx.text('username cannot be empty')
53 }
54 if password == '' {
55 ctx.res.set_status(.bad_request)
56 return ctx.text('password cannot be empty')
57 }
58 app.service_add_user(username, password) or {
59 ctx.res.set_status(.bad_request)
60 return ctx.text('error: ${err}')
61 }
62 ctx.res.set_status(.created)
63 return ctx.text('User created successfully')
64}
65