-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathtools.go
100 lines (69 loc) · 2.62 KB
/
tools.go
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
package main
import (
"io"
"log"
"net/http"
)
type Response struct {
Code int `json:"code"`
Message string `json:"message"`
Data interface{} `json:"data"`
}
type respData struct {
Total int `json:"total"`
Items interface{} `json:"items"`
}
var ResOK, _ = jsonextra.Marshal(Response{20000, "操作成功", nil})
var ResOpErr, _ = jsonextra.Marshal(Response{20001, "操作失败", nil})
var ResRightErr, _ = jsonextra.Marshal(Response{20001, "权限不足", nil})
var ResParmErr, _ = jsonextra.Marshal(Response{20001, "参数错误", nil})
var ResTokenErr, _ = jsonextra.Marshal(Response{50008, "令牌错误,可能是登录超时,请重新登录", nil})
var ResAccountErr, _ = jsonextra.Marshal(Response{50008, "账号错误", nil})
var ResTokenFormatErr, _ = jsonextra.Marshal(Response{50008, "格式错误", nil})
var ResTokenSignErr, _ = jsonextra.Marshal(Response{50008, "签名错误", nil})
var ResTokenDecodeErr, _ = jsonextra.Marshal(Response{50008, "解码错误", nil})
var ResTokenTimeoutErr, _ = jsonextra.Marshal(Response{50008, "登录超时", nil})
var ResTokenExpireErr, _ = jsonextra.Marshal(Response{50008, "登录过期", nil})
func writeJSONResponse(w http.ResponseWriter, res *Response) error {
w.Header().Set("Content-Type", "application/json")
//w.WriteHeader(status)
return jsonextra.NewEncoder(w).Encode(res)
}
func writeJSONResponseData(w http.ResponseWriter, list interface{}, total int) error {
return writeJSONResponse(w, &Response{20000, "ok", respData{total, list}})
}
func checkHttpRequestTokenAndRight(w http.ResponseWriter, req *http.Request, rolelist []string) (*userinfo, []byte) {
sethttphead(w)
token, err := ValidateToken(req.Header.Get("x-token"))
if err != nil {
//writeJSONResponse(w, 50018, "Token错误", nil)
return nil, ResTokenErr
}
u, err := getuser(token.Username)
if err != nil {
//writeJSONResponse(w, 50018, "账号错误", nil)
return nil, ResAccountErr
}
if !checkrole(u, rolelist) {
//log.Println("right err :", rolelist, u.Roles)
//swriteJSONResponse(w, 20001, "权限不足", nil)
return nil, ResRightErr
}
return u, nil
}
func checkHttpRequest(w http.ResponseWriter, req *http.Request, rolelist []string) (*userinfo, *query, []byte) {
u, respData := checkHttpRequestTokenAndRight(w, req, rolelist)
if respData != nil {
return nil, nil, respData
}
result, _ := io.ReadAll(req.Body)
req.Body.Close()
stb := &query{}
err := jsonextra.Unmarshal(result, &stb)
if err != nil {
log.Println("query err :", err)
//writeJSONResponse(w, 20001, "参数错误", nil)
return nil, nil, ResParmErr
}
return u, stb, nil
}