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  }