github.com/infraboard/keyauth@v0.8.1/apps/application/application_ext.go (about)

     1  package application
     2  
     3  import (
     4  	"errors"
     5  	"time"
     6  
     7  	"github.com/infraboard/mcube/exception"
     8  	"github.com/infraboard/mcube/http/request"
     9  	"github.com/rs/xid"
    10  
    11  	"github.com/infraboard/keyauth/apps/token"
    12  )
    13  
    14  // NewUserApplicartion 新建实例
    15  func NewUserApplicartion(req *CreateApplicatonRequest) (*Application, error) {
    16  	if err := req.Validate(); err != nil {
    17  		return nil, exception.NewBadRequest(err.Error())
    18  	}
    19  
    20  	app := newDeafultApplication(req)
    21  
    22  	return app, nil
    23  }
    24  
    25  // NewBuildInApplication 构建内建应用
    26  func NewBuildInApplication(account string, req *CreateApplicatonRequest) (*Application, error) {
    27  	app, err := NewUserApplicartion(req)
    28  	if err != nil {
    29  		return nil, err
    30  	}
    31  	app.BuildIn = true
    32  
    33  	return app, nil
    34  }
    35  
    36  func newDeafultApplication(req *CreateApplicatonRequest) *Application {
    37  	now := time.Now().Unix() * 1000
    38  	return &Application{
    39  		Id:           xid.New().String(),
    40  		BuildIn:      false,
    41  		CreateAt:     now,
    42  		UpdateAt:     now,
    43  		ClientId:     token.MakeBearer(24),
    44  		ClientSecret: token.MakeBearer(32),
    45  		CreateBy:     req.CreateBy,
    46  
    47  		Name:                     req.Name,
    48  		Website:                  req.Website,
    49  		LogoImage:                req.LogoImage,
    50  		Description:              req.Description,
    51  		RedirectUri:              req.RedirectUri,
    52  		AccessTokenExpireSecond:  req.AccessTokenExpireSecond,
    53  		RefreshTokenExpireSecond: req.RefreshTokenExpireSecond,
    54  		ClientType:               req.ClientType,
    55  	}
    56  }
    57  
    58  // CheckClientSecret 判断凭证是否合法
    59  func (a *Application) CheckClientSecret(secret string) error {
    60  	if a.ClientSecret != secret {
    61  		return errors.New("client_secret is not correct")
    62  	}
    63  
    64  	return nil
    65  }
    66  
    67  func (a *Application) IsOwner(account string) bool {
    68  	return a.CreateBy == account
    69  }
    70  
    71  // NewApplicationSet 实例化
    72  func NewApplicationSet(req *request.PageRequest) *Set {
    73  	return &Set{
    74  		Items: []*Application{},
    75  	}
    76  }
    77  
    78  // Add 添加应用
    79  func (s *Set) Add(app *Application) {
    80  	s.Items = append(s.Items, app)
    81  }
    82  
    83  // NewGetBuildInAdminApplicationRequest todo
    84  func NewGetBuildInAdminApplicationRequest() *GetBuildInApplicationRequest {
    85  	return &GetBuildInApplicationRequest{
    86  		Name: AdminServiceApplicationName,
    87  	}
    88  }