diff --git a/pkg/api/tokens.go b/pkg/api/tokens.go index f1bff8cd..dbb3c0fe 100644 --- a/pkg/api/tokens.go +++ b/pkg/api/tokens.go @@ -23,7 +23,7 @@ var ( func (a *TokensApi) TokenListHandler(c *core.Context) (interface{}, *errs.Error) { uid := c.GetCurrentUid() - tokens, err := a.tokens.GetAllTokensByUid(uid) + tokens, err := a.tokens.GetAllUnexpiredMormalTokensByUid(uid) if err != nil { log.ErrorfWithRequestId(c, "[tokens.TokenListHandler] failed to get all tokens for user \"uid:%d\", because %s", uid, err.Error()) diff --git a/pkg/services/tokens.go b/pkg/services/tokens.go index f7f3e93d..693be9b5 100644 --- a/pkg/services/tokens.go +++ b/pkg/services/tokens.go @@ -46,6 +46,19 @@ func (s *TokenService) GetAllTokensByUid(uid int64) ([]*models.TokenRecord, erro return tokenRecords, err } +func (s *TokenService) GetAllUnexpiredMormalTokensByUid(uid int64) ([]*models.TokenRecord, error) { + if uid <= 0 { + return nil, errs.ErrUserIdInvalid + } + + now := time.Now().Unix() + + var tokenRecords []*models.TokenRecord + err := s.TokenDB(uid).Cols("uid", "user_token_id", "token_type", "user_agent", "created_unix_time", "expired_unix_time").Where("uid=? AND token_type=? AND expired_unix_time>?", uid, core.USER_TOKEN_TYPE_NORMAL, now).OrderBy("created_unix_time desc").Find(&tokenRecords) + + return tokenRecords, err +} + func (s *TokenService) ParseToken(c *core.Context) (*jwt.Token, *core.UserTokenClaims, error) { claims := &core.UserTokenClaims{}