-
Notifications
You must be signed in to change notification settings - Fork 28
/
request_ext.go
130 lines (106 loc) · 3.18 KB
/
request_ext.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
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
package user
import (
"errors"
"fmt"
"net/http"
"strings"
"github.com/infraboard/mcube/http/request"
)
// NewDescriptAccountRequest 查询详情请求
func NewDescriptAccountRequest() *DescribeAccountRequest {
return &DescribeAccountRequest{}
}
// NewDescriptAccountRequestWithAccount 查询详情请求
func NewDescriptAccountRequestWithAccount(accout string) *DescribeAccountRequest {
return &DescribeAccountRequest{Account: accout}
}
// Validate 校验详情查询
func (req *DescribeAccountRequest) Validate() error {
if req.Account == "" {
return errors.New("id or account is required")
}
return nil
}
// NewNewQueryAccountRequestFromHTTP todo
func NewNewQueryAccountRequestFromHTTP(r *http.Request) *QueryAccountRequest {
page := request.NewPageRequestFromHTTP(r)
query := NewQueryAccountRequest()
query.SetPageRequest(page)
qs := r.URL.Query()
query.DepartmentId = qs.Get("department_id")
query.Keywords = qs.Get("keywords")
query.NamespaceId = qs.Get("namespace_id")
query.WithDepartment = qs.Get("with_department") == "true"
query.SkipItems = qs.Get("skip_items") == "true"
query.WithAllSub = qs.Get("with_all_sub") == "true"
accounts := qs.Get("accounts")
if accounts != "" {
query.Accounts = strings.Split(accounts, ",")
}
return query
}
// NewQueryAccountRequest 列表查询请求
func NewQueryAccountRequest() *QueryAccountRequest {
return &QueryAccountRequest{
Page: &request.NewPageRequest(20, 1).PageRequest,
WithDepartment: false,
SkipItems: false,
}
}
// SetPageRequest todo
func (req *QueryAccountRequest) SetPageRequest(page *request.PageRequest) {
req.Page = &page.PageRequest
}
// Validate 校验查询参数
func (req *QueryAccountRequest) Validate() error {
return nil
}
// NewCreateUserRequestWithLDAPSync todo
func NewCreateUserRequestWithLDAPSync(username, password string) *CreateAccountRequest {
req := NewCreateUserRequest()
req.CreateType = CreateType_LDAP_SYNC
req.Account = username
req.Password = password
return req
}
// NewCreateUserRequest 创建请求
func NewCreateUserRequest() *CreateAccountRequest {
return &CreateAccountRequest{
Profile: NewProfile(),
ExpiresDays: DefaultExiresDays,
}
}
// NewUpdatePasswordRequest todo
func NewUpdatePasswordRequest() *UpdatePasswordRequest {
return &UpdatePasswordRequest{}
}
// IsReset 密码是否需要被重置, 如果不是自己设置的密码 都需要被用户自己重置
func (req *UpdatePasswordRequest) IsReset() bool {
return true
}
// Validate tood
func (req *UpdatePasswordRequest) Validate() error {
if req.Account == "" {
return fmt.Errorf("account required")
}
if req.OldPass == req.NewPass {
return fmt.Errorf("old_pass equal new_pass")
}
if req.NewPass == "" || req.OldPass == "" {
return fmt.Errorf("old_pass and new_pass required")
}
if req.Account == req.NewPass {
return fmt.Errorf("password must not equal account")
}
return nil
}
// NewGeneratePasswordRequest todo
func NewGeneratePasswordRequest() *GeneratePasswordRequest {
return &GeneratePasswordRequest{}
}
// NewGeneratePasswordResponse todo
func NewGeneratePasswordResponse(password string) *GeneratePasswordResponse {
return &GeneratePasswordResponse{
Password: password,
}
}