diff --git a/CHANGELOG.md b/CHANGELOG.md index 514d7114..a5a23b1b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +## v0.36.9 (WIP) + +- Updated the Discord `AuthUser.Name` field to use `global_name` ([#7603](https://github.com/pocketbase/pocketbase/pull/7603); thanks @HansHans135). + + ## v0.36.8 - Fixed OAuth2 client secret reset when serializing a cached collection model. diff --git a/tools/auth/discord.go b/tools/auth/discord.go index 41e78b48..27af8e74 100644 --- a/tools/auth/discord.go +++ b/tools/auth/discord.go @@ -54,6 +54,7 @@ func (p *Discord) FetchAuthUser(token *oauth2.Token) (*AuthUser, error) { extracted := struct { Id string `json:"id"` + GlobalName string `json:"global_name"` Username string `json:"username"` Discriminator string `json:"discriminator"` Avatar string `json:"avatar"` @@ -64,16 +65,26 @@ func (p *Discord) FetchAuthUser(token *oauth2.Token) (*AuthUser, error) { return nil, err } - // Build a full avatar URL using the avatar hash provided in the API response + // build a full avatar URL using the avatar hash provided in the API response // https://discord.com/developers/docs/reference#image-formatting avatarURL := fmt.Sprintf("https://cdn.discordapp.com/avatars/%s/%s.png", extracted.Id, extracted.Avatar) - // Concatenate the user's username and discriminator into a single username string - username := fmt.Sprintf("%s#%s", extracted.Username, extracted.Discriminator) + name := extracted.GlobalName + if name == "" { + // fallback to username+discriminator + // + // Note: Discord migrated to unique usernames without discriminators. + // Legacy accounts still have a non-zero discriminator (e.g. "1234"). + // See https://support.discord.com/hc/en-us/articles/12620128861463-New-Usernames-Display-Names. + name = extracted.Username + if extracted.Discriminator != "" && extracted.Discriminator != "0" { + name += "#" + extracted.Discriminator + } + } user := &AuthUser{ Id: extracted.Id, - Name: username, + Name: name, Username: extracted.Username, AvatarURL: avatarURL, RawUser: rawUser,