package auth_token import ( "github.com/astaxie/beego/orm" "log" "nginx-ui/server/models" "nginx-ui/server/utils" "nginx-ui/server/vo" ) type Service struct { } type ListQuery struct { Uid int `json:"uid"` } func NewService() *Service { return &Service{} } func (u *Service) List(query *ListQuery, req *vo.PageReq) (*vo.PageResp, error) { req.Ensure() qs := orm.NewOrm().QueryTable(new(models.AuthToken)).Filter("Uid", query.Uid) qs = qs.Offset(req.Offset).Limit(req.PageSize).OrderBy("-Id") var list []models.AuthToken _, err := qs.All(&list) if err != nil { return nil, err } count, err := qs.Count() if err != nil { return nil, err } resp := vo.PageResp{ PageSize: req.PageSize, Current: req.Current, Total: count, List: list, } return &resp, err } func (u *Service) Creat(token *models.AuthToken) error { o := orm.NewOrm() token.Token = utils.GenerateUUID() _, err := o.Insert(token) return err } func (u *Service) Update(token *models.AuthToken) error { o := orm.NewOrm() if token.Token == "" { token.Token = utils.GenerateUUID() } _, err := o.Update(token) return err } func (u *Service) GetById(id int) (*models.AuthToken, error) { o := orm.NewOrm() exist := models.AuthToken{Id: id} err := o.Read(&exist) if err != nil { return nil, err } return &exist, nil } func GetByToken(token string) (*models.AuthToken, error) { o := orm.NewOrm() exist := models.AuthToken{Token: token} err := o.Read(&exist, "Token") if err != nil { return nil, err } return &exist, nil } func (u *Service) DeleteById(id int) error { o := orm.NewOrm() exist := models.AuthToken{Id: id} _, err := o.Delete(&exist, "Id") if err != nil { return err } return nil } func VerifyToken(token string, path string, ip string) (*models.AuthToken, error) { log.Printf("verify token: %s, path: %s, ip: %s", token, path, ip) o := orm.NewOrm() authToken := models.AuthToken{Token: token} err := o.Read(&authToken, "Token") if err != nil { return nil, err } err = authToken.CheckValid() if err != nil { return nil, err } return &authToken, nil }