Raw
 1package storage
 2
 3import (
 4	"context"
 5	"database/sql"
 6	"time"
 7)
 8
 9const ActionRefreshReuseRevoked = "refresh.reuse_revoked"
10
11func (s *Store) RevokeRefreshTokenAudited(ctx context.Context, id string, audit AppendAuditInput) (bool, error) {
12	const operation = "revoke reused refresh token"
13	var deleted int64
14	err := s.audited(ctx, operation, audit.Actor, func(tx *sql.Tx, at time.Time) error {
15		var err error
16		if deleted, err = execCount(ctx, tx, operation, `DELETE FROM refresh_tokens WHERE id = ?`, id); err != nil || deleted == 0 {
17			return err
18		}
19		_, err = appendAudit(ctx, tx, operation+" audit", audit, at)
20		return err
21	})
22	if err != nil {
23		return false, err
24	}
25	return deleted > 0, nil
26}