github.com/infraboard/keyauth@v0.8.1/apps/token/impl/query.go (about)

     1  package impl
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"go.mongodb.org/mongo-driver/bson"
     7  	"go.mongodb.org/mongo-driver/mongo/options"
     8  
     9  	"github.com/infraboard/keyauth/apps/token"
    10  )
    11  
    12  func newDescribeTokenRequestWithAccess(token string) *describeTokenRequest {
    13  	return &describeTokenRequest{
    14  		AccessToken: token,
    15  	}
    16  }
    17  
    18  func newDescribeTokenRequestWithRefresh(token string) *describeTokenRequest {
    19  	return &describeTokenRequest{
    20  		RefreshToken: token,
    21  	}
    22  }
    23  
    24  func newDescribeTokenRequest(req *token.DescribeTokenRequest) *describeTokenRequest {
    25  	return &describeTokenRequest{
    26  		AccessToken:  req.AccessToken,
    27  		RefreshToken: req.RefreshToken,
    28  	}
    29  }
    30  
    31  type describeTokenRequest struct {
    32  	AccessToken  string
    33  	RefreshToken string
    34  }
    35  
    36  func (req *describeTokenRequest) String() string {
    37  	return fmt.Sprintf("access_token: %s, refresh_token: %s",
    38  		req.AccessToken, req.RefreshToken)
    39  }
    40  
    41  func (req *describeTokenRequest) FindFilter() bson.M {
    42  	filter := bson.M{}
    43  	if req.AccessToken != "" {
    44  		filter["_id"] = req.AccessToken
    45  	}
    46  	if req.RefreshToken != "" {
    47  		filter["refresh_token"] = req.RefreshToken
    48  	}
    49  
    50  	return filter
    51  }
    52  
    53  func newQueryRequest(req *token.QueryTokenRequest) *queryRequest {
    54  	return &queryRequest{req}
    55  }
    56  
    57  type queryRequest struct {
    58  	*token.QueryTokenRequest
    59  }
    60  
    61  func (r *queryRequest) FindOptions() *options.FindOptions {
    62  	pageSize := int64(r.Page.PageSize)
    63  	skip := int64(r.Page.PageSize) * int64(r.Page.PageNumber-1)
    64  
    65  	opt := &options.FindOptions{
    66  		Sort:  bson.D{{Key: "create_at", Value: -1}},
    67  		Limit: &pageSize,
    68  		Skip:  &skip,
    69  	}
    70  
    71  	return opt
    72  }
    73  
    74  func (r *queryRequest) FindFilter() bson.M {
    75  	filter := bson.M{}
    76  	if r.ApplicationId != "" {
    77  		filter["application_id"] = r.ApplicationId
    78  	}
    79  	if r.GrantType != token.GrantType_NULL {
    80  		filter["grant_type"] = r.GrantType
    81  	}
    82  	if r.Account != "" {
    83  		filter["account"] = r.Account
    84  	}
    85  	return filter
    86  }
    87  
    88  func newDeleteTokenRequest(req *token.DeleteTokenRequest) *deleteTokenRequest {
    89  	return &deleteTokenRequest{
    90  		DeleteTokenRequest: req,
    91  	}
    92  }
    93  
    94  type deleteTokenRequest struct {
    95  	*token.DeleteTokenRequest
    96  }
    97  
    98  func (req *deleteTokenRequest) String() string {
    99  	return fmt.Sprintf("access_token: %s",
   100  		req.AccessToken)
   101  }
   102  
   103  func (req *deleteTokenRequest) FindFilter() bson.M {
   104  	filter := bson.M{}
   105  
   106  	filter["domain"] = req.Domain
   107  	filter["account"] = req.Account
   108  
   109  	if len(req.AccessToken) > 0 {
   110  		filter["_id"] = bson.M{"$in": req.AccessToken}
   111  	}
   112  
   113  	return filter
   114  }