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  }