diff --git a/auth/middleware.go b/auth/middleware.go index cb78aad716d17c38286bc41fe9a98f3a6b11ad19..6a91df21feafb44c23156a9c7691026ccb4930b7 100644 --- a/auth/middleware.go +++ b/auth/middleware.go @@ -101,49 +101,7 @@ } func authForUsername(ctx context.Context, username string) (*AuthContext, error) { var auth AuthContext - if err := database.WithTx(ctx, &sql.TxOptions{ - Isolation: 0, - ReadOnly: true, - }, func(tx *sql.Tx) error { - var ( - err error - rows *sql.Rows - ) - query := database. - Select(ctx, []string{ - `u.id`, `u.username`, - `u.created`, `u.updated`, - `u.email`, - `u.user_type`, - `u.url`, `u.location`, `u.bio`, - `u.suspension_notice`, - }). - From(`"user" u`). - Where(`u.username = ?`, username) - if rows, err = query.RunWith(tx).Query(); err != nil { - panic(err) - } - defer rows.Close() - - if !rows.Next() { - if err := rows.Err(); err != nil { - panic(err) - } - return fmt.Errorf("Authenticating for unknown user %s", username) - } - if err := rows.Scan(&auth.UserID, &auth.Username, &auth.Created, - &auth.Updated, &auth.Email, &auth.UserType, &auth.URL, &auth.Location, - &auth.Bio, &auth.SuspensionNotice); err != nil { - panic(err) - } - if rows.Next() { - if err := rows.Err(); err != nil { - panic(err) // Invariant - } - panic(errors.New("Multiple matching user accounts; invariant broken")) - } - return nil - }); err != nil { + if err := LookupUser(ctx, username, &auth); err != nil { return nil, err } diff --git a/auth/middleware_test.go b/auth/middleware_test.go index 59fbe0c1d993398a184385f4b5b9cd8fe5e6ac4d..1efe99e409094ab652fec39502ae4ae27c7be68a 100644 --- a/auth/middleware_test.go +++ b/auth/middleware_test.go @@ -12,6 +12,7 @@ "github.com/DATA-DOG/go-sqlmock" "github.com/stretchr/testify/assert" "github.com/vaughan0/go-ini" + "git.sr.ht/~sircmpwn/core-go/config" "git.sr.ht/~sircmpwn/core-go/crypto" "git.sr.ht/~sircmpwn/core-go/database" ) @@ -185,7 +186,10 @@ db, mock, err := sqlmock.New() if err != nil { panic(err) } - ctx := database.Context(context.Background(), db) + ctx := config.Context( + database.Context(context.Background(), db), + nil, "git.sr.ht", + ) return ctx, mock }