From 31fc9fce43e928cc1626fb30750ef61b30c824bd Mon Sep 17 00:00:00 2001 From: Drew DeVault Date: Sat, 21 Nov 2020 12:17:19 -0500 Subject: [PATCH] Fetch user PGP key for meta.sr.ht --- auth/middleware.go | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/auth/middleware.go b/auth/middleware.go index 612f511954d112ddd1b86f075ec00faef90d5b47..15e8d0e6a1dc84a235cbb5f2908ffadc227dd7b1 100644 --- a/auth/middleware.go +++ b/auth/middleware.go @@ -68,6 +68,9 @@ type AuthContext struct { SuspensionNotice *string AuthMethod int + // Only set for meta.sr.ht-api + PGPKey *string + // Only filled out if AuthMethod == AUTH_INTERNAL InternalAuth InternalAuth @@ -417,6 +420,11 @@ func LookupUser(ctx context.Context, username string, user *AuthContext) error { }). From(`"user" u`). Where(`u.username = ?`, username) + if config.ServiceName(ctx) == "meta.sr.ht" { + query = query. + LeftJoin(`pgpkey p ON p.id = u.pgp_key_id`). + Column(`p.key`) + } if rows, err = query.RunWith(tx).Query(); err != nil { return err } @@ -428,7 +436,7 @@ func LookupUser(ctx context.Context, username string, user *AuthContext) error { } return FetchMetaProfile(ctx, username, user) } - if err = rows.Scan( + cols := []interface{}{ &user.UserID, &user.Username, &user.Created, &user.Updated, &user.Email, @@ -436,7 +444,12 @@ func LookupUser(ctx context.Context, username string, user *AuthContext) error { &user.URL, &user.Location, &user.Bio, - &user.SuspensionNotice); err != nil { + &user.SuspensionNotice, + } + if config.ServiceName(ctx) == "meta.sr.ht" { + cols = append(cols, &user.PGPKey) + } + if err = rows.Scan(cols...); err != nil { return err } if rows.Next() {