diff --git a/server/internal/core/db/access_tokens.sql.go b/server/internal/core/db/access_tokens.sql.go deleted file mode 100644 index 129fa921..00000000 --- a/server/internal/core/db/access_tokens.sql.go +++ /dev/null @@ -1,44 +0,0 @@ -// Code generated by sqlc. DO NOT EDIT. -// versions: -// sqlc v1.26.0 -// source: access_tokens.sql - -package db - -import ( - "context" - - "github.com/google/uuid" - "github.com/jackc/pgx/v5/pgtype" -) - -const accessTokenById = `-- name: AccessTokenById :one -SELECT t.expires, u.username, u.display_name, u.permissions, u.root, u.home - FROM access_tokens t - JOIN users u - ON t.username = u.username - WHERE t.id = $1 -` - -type AccessTokenByIdRow struct { - Expires pgtype.Timestamp - Username string - DisplayName string - Permissions int32 - Root uuid.UUID - Home uuid.UUID -} - -func (q *Queries) AccessTokenById(ctx context.Context, id string) (AccessTokenByIdRow, error) { - row := q.db.QueryRow(ctx, accessTokenById, id) - var i AccessTokenByIdRow - err := row.Scan( - &i.Expires, - &i.Username, - &i.DisplayName, - &i.Permissions, - &i.Root, - &i.Home, - ) - return i, err -} \ No newline at end of file diff --git a/server/internal/core/user/auth.go b/server/internal/core/user/auth.go index 74f84769..5ffffc9e 100644 --- a/server/internal/core/user/auth.go +++ b/server/internal/core/user/auth.go @@ -5,6 +5,7 @@ import ( "time" "unsafe" + "github.com/google/uuid" "github.com/jackc/pgx/v5" "github.com/jackc/pgx/v5/pgtype" "github.com/shroff/phylum/server/internal/core/errors" @@ -48,24 +49,33 @@ func (m manager) CreateAccessToken(username string) (string, error) { } func (m manager) ReadAccessToken(accessToken string) (User, error) { - token, err := m.db.AccessTokenById(m.ctx, accessToken) - if errors.Is(err, pgx.ErrNoRows) { - return User{}, ErrCredentialsInvalid - } else if err != nil { + const q = `SELECT t.expires, u.username, u.display_name, u.permissions, u.root, u.home FROM access_tokens t JOIN users u ON t.username = u.username WHERE t.id = $1; ` + row := m.db.QueryRow(m.ctx, q, accessToken) + + var expires pgtype.Timestamp + var username string + var displayName string + var permissions int32 + var root uuid.UUID + var home uuid.UUID + if err := row.Scan(&expires, &username, &displayName, &permissions, &root, &home); err != nil { + if errors.Is(err, pgx.ErrNoRows) { + err = ErrCredentialsInvalid + } return User{}, err - } - if time.Now().After(token.Expires.Time) { + } else if time.Now().After(expires.Time) { return User{}, ErrCredentialsInvalid + } else { + return User{ + BasicUser: BasicUser{ + Username: username, + DisplayName: displayName, + }, + Permissions: permissions, + Root: root, + Home: home, + }, nil } - return User{ - BasicUser: BasicUser{ - Username: token.Username, - DisplayName: token.DisplayName, - }, - Permissions: token.Permissions, - Root: token.Root, - Home: token.Home, - }, nil } const ( diff --git a/server/sql/queries/access_tokens.sql b/server/sql/queries/access_tokens.sql deleted file mode 100644 index 3bc8e08e..00000000 --- a/server/sql/queries/access_tokens.sql +++ /dev/null @@ -1,6 +0,0 @@ --- name: AccessTokenById :one -SELECT t.expires, u.username, u.display_name, u.permissions, u.root, u.home - FROM access_tokens t - JOIN users u - ON t.username = u.username - WHERE t.id = $1; \ No newline at end of file