github.com/infraboard/keyauth@v0.8.1/apps/session/request_ext.go (about) 1 package session 2 3 import ( 4 "fmt" 5 "net/http" 6 "strconv" 7 8 "github.com/infraboard/mcube/http/request" 9 10 "github.com/infraboard/keyauth/apps/token" 11 ) 12 13 // NewQuerySessionRequestFromHTTP 列表查询请求 14 func NewQuerySessionRequestFromHTTP(r *http.Request) (*QuerySessionRequest, error) { 15 page := request.NewPageRequestFromHTTP(r) 16 qs := r.URL.Query() 17 18 req := &QuerySessionRequest{ 19 Page: page, 20 Account: qs.Get("account"), 21 ApplicationId: qs.Get("application_id"), 22 LoginIp: qs.Get("login_ip"), 23 LoginCity: qs.Get("login_city"), 24 } 25 26 gtStr := qs.Get("grant_type") 27 if gtStr != "" { 28 gt, err := token.ParseGrantTypeFromString(gtStr) 29 if err != nil { 30 return nil, err 31 } 32 req.GrantType = gt 33 } 34 35 startTime := qs.Get("start_time") 36 endTime := qs.Get("end_time") 37 if startTime != "" { 38 startTS, err := strconv.ParseInt(startTime, 10, 64) 39 if err != nil { 40 return nil, fmt.Errorf("parse login start time error, %s", err) 41 } 42 43 req.StartLoginTime = startTS / 1000 44 } 45 if endTime != "" { 46 endTS, err := strconv.ParseInt(endTime, 10, 64) 47 if err != nil { 48 return nil, fmt.Errorf("parse login start time error, %s", err) 49 } 50 51 req.EndLoginTime = endTS / 1000 52 } 53 54 return req, nil 55 } 56 57 // NewQuerySessionRequest 列表查询请求 58 func NewQuerySessionRequest(pageReq *request.PageRequest) *QuerySessionRequest { 59 return &QuerySessionRequest{ 60 Page: pageReq, 61 } 62 } 63 64 // NewQuerySessionRequestFromToken 列表查询请求 65 func NewQuerySessionRequestFromToken(tk *token.Token) *QuerySessionRequest { 66 return &QuerySessionRequest{ 67 Page: request.NewPageRequest(1, 1), 68 Account: tk.Account, 69 ApplicationId: tk.ApplicationId, 70 GrantType: tk.GrantType, 71 } 72 } 73 74 // Validate todo 75 func (req *QuerySessionRequest) Validate() error { 76 return nil 77 } 78 79 // NewDescribeSessionRequestWithToken todo 80 func NewDescribeSessionRequestWithToken(tk *token.Token) *DescribeSessionRequest { 81 return &DescribeSessionRequest{ 82 Domain: tk.Domain, 83 Account: tk.Account, 84 Login: true, 85 } 86 } 87 88 // NewDescribeSessionRequestWithID todo 89 func NewDescribeSessionRequestWithID(id string) *DescribeSessionRequest { 90 return &DescribeSessionRequest{ 91 SessionId: id, 92 } 93 } 94 95 // Validate todo 96 func (req *DescribeSessionRequest) Validate() error { 97 if req.SessionId == "" && !req.HasAccount() { 98 return fmt.Errorf("id or (domain and account) requried") 99 } 100 101 return nil 102 } 103 104 // HasAccount todo 105 func (req *DescribeSessionRequest) HasAccount() bool { 106 if req.Domain != "" && req.Account != "" { 107 return true 108 } 109 110 return false 111 } 112 113 // NewLogoutRequest todo 114 func NewLogoutRequest(sessionID string) *LogoutRequest { 115 return &LogoutRequest{ 116 SessionId: sessionID, 117 } 118 } 119 120 // NewQueryUserLastSessionRequest todo 121 func NewQueryUserLastSessionRequest(account string) *QueryUserLastSessionRequest { 122 return &QueryUserLastSessionRequest{ 123 Account: account, 124 } 125 } 126 127 // Validate todo 128 func (req *QueryUserLastSessionRequest) Validate() error { 129 return validate.Struct(req) 130 }