core/database/auth_token.go

60 lines
1.1 KiB
Go

package database
import (
"context"
"system-trace/core/types"
)
type AuthToken struct {
UserID int32
AccessToken string `bun:"type:varchar"`
RefreshToken string `bun:"type:varchar"`
IsRevoked bool `bun:",default:false"`
}
func GetPairOfTokens(p *types.PairTokens) (*AuthToken, error) {
aut := new(AuthToken)
ctx := context.Background()
err := PG.NewSelect().
Model(aut).
Where("access_token = ?", p.AccessToken).
Where("refresh_token = ?", p.RefreshToken).
Where("is_revoked = ?", false).
Scan(ctx)
return aut, err
}
func InsertPairOfTokens(id int32, at, rt string) error {
p := AuthToken{
UserID: id,
AccessToken: at,
RefreshToken: rt,
}
ctx := context.Background()
_, err := PG.NewInsert().
Model(&p).
Returning("NULL").
Exec(ctx)
return err
}
func RevokePairOfTokens(p *types.PairTokens) error {
aut := AuthToken{
IsRevoked: true,
}
ctx := context.Background()
_, err := PG.NewUpdate().
Model(&aut).
Column("is_revoked").
Where("access_token = ?", p.AccessToken).
Where("refresh_token = ?", p.RefreshToken).
Exec(ctx)
return err
}