in src/JetBrains.Space.AspNetCore.Authentication/SpaceOptions.cs [21:62]
public SpaceOptions()
{
CallbackPath = new PathString("/signin-space");
AuthorizationEndpoint = SpaceDefaults.AuthorizationEndpointPath;
TokenEndpoint = SpaceDefaults.TokenEndpointPath;
UserInformationEndpoint = SpaceDefaults.UserInformationEndpointPath;
ClaimActions.MapJsonKey(ClaimTypes.NameIdentifier, "id");
ClaimActions.MapJsonKey(SpaceClaimTypes.UserId, "id");
ClaimActions.MapJsonKey(SpaceClaimTypes.UserName, "username");
ClaimActions.MapJsonKey(SpaceClaimTypes.SmallAvatar, "smallAvatar");
ClaimActions.MapJsonKey(SpaceClaimTypes.Avatar, "avatar");
ClaimActions.MapJsonKey(SpaceClaimTypes.ProfilePicture, "profilePicture");
ClaimActions.MapJsonSubKey(SpaceClaimTypes.FirstName, "name", "firstName");
ClaimActions.MapJsonSubKey(SpaceClaimTypes.LastName, "name", "lastName");
ClaimActions.MapCustomJson(ClaimTypes.Name, element =>
{
if (element.TryGetProperty("name", out var nameElement) && nameElement.ValueKind == JsonValueKind.Object)
{
return nameElement.TryGetProperty("firstName", out var firstName) &&
nameElement.TryGetProperty("lastName", out var lastName)
? $"{firstName} {lastName}"
: null;
}
return null;
});
ClaimActions.MapCustomJson(ClaimTypes.Email, element =>
{
if (element.TryGetProperty("emails", out var emailElements) && emailElements.ValueKind == JsonValueKind.Array)
{
var emailElement = emailElements.EnumerateArray().FirstOrDefault();
if (emailElement.TryGetProperty("email", out var email))
{
return email.GetString();
}
}
return null;
});
}