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 }