diff --git a/backend/routes/auth/discord.go b/backend/routes/auth/discord.go index af455ba..7b510a8 100644 --- a/backend/routes/auth/discord.go +++ b/backend/routes/auth/discord.go @@ -32,8 +32,8 @@ type oauthCallbackRequest struct { type discordCallbackResponse struct { HasAccount bool `json:"has_account"` // if true, Token and User will be set. if false, Ticket and Discord will be set - Token string `json:"token,omitempty"` - User *db.User `json:"user,omitempty"` + Token string `json:"token,omitempty"` + User *userResponse `json:"user,omitempty"` Discord string `json:"discord,omitempty"` // username, for UI purposes Ticket string `json:"ticket,omitempty"` @@ -87,8 +87,9 @@ func (s *Server) discordCallback(w http.ResponseWriter, r *http.Request) error { render.JSON(w, r, discordCallbackResponse{ HasAccount: true, Token: token, - User: &u, + User: dbUserToUserResponse(u), }) + return nil } else if err != db.ErrUserNotFound { // internal error diff --git a/backend/routes/auth/routes.go b/backend/routes/auth/routes.go index b5ce8ba..4de3d55 100644 --- a/backend/routes/auth/routes.go +++ b/backend/routes/auth/routes.go @@ -4,11 +4,13 @@ import ( "net/http" "os" + "codeberg.org/u1f320/pronouns.cc/backend/db" "codeberg.org/u1f320/pronouns.cc/backend/log" "codeberg.org/u1f320/pronouns.cc/backend/server" "emperror.dev/errors" "github.com/go-chi/chi/v5" "github.com/go-chi/render" + "github.com/rs/xid" ) type Server struct { @@ -17,6 +19,31 @@ type Server struct { RequireInvite bool } +type userResponse struct { + ID xid.ID `json:"id"` + Username string `json:"username"` + DisplayName *string `json:"display_name"` + Bio *string `json:"bio"` + AvatarURL *string `json:"avatar_url"` + Links []string `json:"links"` + + Discord *string `json:"discord"` + DiscordUsername *string `json:"discord_username"` +} + +func dbUserToUserResponse(u db.User) *userResponse { + return &userResponse{ + ID: u.ID, + Username: u.Username, + DisplayName: u.DisplayName, + Bio: u.Bio, + AvatarURL: u.AvatarURL, + Links: u.Links, + Discord: u.Discord, + DiscordUsername: u.DiscordUsername, + } +} + func Mount(srv *server.Server, r chi.Router) { s := &Server{ Server: srv,