fixed transaction issues

This commit is contained in:
2026-01-01 22:44:39 +11:00
parent c4574e32c7
commit 05aad5f11b
5 changed files with 57 additions and 69 deletions

View File

@@ -1,47 +1,31 @@
package jwt
import (
"context"
"database/sql"
"github.com/pkg/errors"
)
// Revoke a token by adding it to the database
func revoke(ctx context.Context, t Token) error {
db := t.getDB()
if db == nil {
func (gen *TokenGenerator) revoke(tx *sql.Tx, t Token) error {
if gen.dbConn == nil {
return errors.New("No DB provided, unable to use this function")
}
tx, err := db.BeginTx(ctx, nil)
if err != nil {
return errors.Wrap(err, "db.BeginTx")
}
defer tx.Rollback()
jti := t.GetJTI()
exp := t.GetEXP()
query := `INSERT INTO jwtblacklist (jti, exp) VALUES (?, ?)`
_, err = tx.Exec(query, jti, exp)
_, err := tx.Exec(query, jti, exp)
if err != nil {
return errors.Wrap(err, "tx.Exec")
}
err = tx.Commit()
if err != nil {
return errors.Wrap(err, "tx.Commit")
}
return nil
}
// Check if a token has been revoked. Returns true if not revoked.
func checkNotRevoked(ctx context.Context, t Token) (bool, error) {
db := t.getDB()
if db == nil {
func (gen *TokenGenerator) checkNotRevoked(tx *sql.Tx, t Token) (bool, error) {
if gen.dbConn == nil {
return false, errors.New("No DB provided, unable to use this function")
}
tx, err := db.BeginTx(ctx, nil)
if err != nil {
return false, errors.Wrap(err, "db.BeginTx")
}
defer tx.Rollback()
jti := t.GetJTI()
query := `SELECT 1 FROM jwtblacklist WHERE jti = ? LIMIT 1`
rows, err := tx.Query(query, jti)
@@ -50,9 +34,5 @@ func checkNotRevoked(ctx context.Context, t Token) (bool, error) {
}
defer rows.Close()
revoked := rows.Next()
err = tx.Commit()
if err != nil {
return false, errors.Wrap(err, "tx.Commit")
}
return !revoked, nil
}