code.gitea.io/gitea@v1.22.3/models/auth/auth_token.go (about) 1 // Copyright 2023 The Gitea Authors. All rights reserved. 2 // SPDX-License-Identifier: MIT 3 4 package auth 5 6 import ( 7 "context" 8 9 "code.gitea.io/gitea/models/db" 10 "code.gitea.io/gitea/modules/timeutil" 11 "code.gitea.io/gitea/modules/util" 12 13 "xorm.io/builder" 14 ) 15 16 var ErrAuthTokenNotExist = util.NewNotExistErrorf("auth token does not exist") 17 18 type AuthToken struct { //nolint:revive 19 ID string `xorm:"pk"` 20 TokenHash string 21 UserID int64 `xorm:"INDEX"` 22 ExpiresUnix timeutil.TimeStamp `xorm:"INDEX"` 23 } 24 25 func init() { 26 db.RegisterModel(new(AuthToken)) 27 } 28 29 func InsertAuthToken(ctx context.Context, t *AuthToken) error { 30 _, err := db.GetEngine(ctx).Insert(t) 31 return err 32 } 33 34 func GetAuthTokenByID(ctx context.Context, id string) (*AuthToken, error) { 35 at := &AuthToken{} 36 37 has, err := db.GetEngine(ctx).ID(id).Get(at) 38 if err != nil { 39 return nil, err 40 } 41 if !has { 42 return nil, ErrAuthTokenNotExist 43 } 44 return at, nil 45 } 46 47 func UpdateAuthTokenByID(ctx context.Context, t *AuthToken) error { 48 _, err := db.GetEngine(ctx).ID(t.ID).Cols("token_hash", "expires_unix").Update(t) 49 return err 50 } 51 52 func DeleteAuthTokenByID(ctx context.Context, id string) error { 53 _, err := db.GetEngine(ctx).ID(id).Delete(&AuthToken{}) 54 return err 55 } 56 57 func DeleteAuthTokensByUserID(ctx context.Context, uid int64) error { 58 _, err := db.GetEngine(ctx).Where(builder.Eq{"user_id": uid}).Delete(&AuthToken{}) 59 return err 60 } 61 62 func DeleteExpiredAuthTokens(ctx context.Context) error { 63 _, err := db.GetEngine(ctx).Where(builder.Lt{"expires_unix": timeutil.TimeStampNow()}).Delete(&AuthToken{}) 64 return err 65 }