gitea源码

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