David Peck (Peck Tech)
08/25/2023, 7:27 AMOnExternalLogin = (user, loginInfo) => {
if (loginInfo.Principal.FindFirst(ClaimTypes.GivenName) is Claim firstNameClaim)
{
user.Claims.Add(new IdentityUserClaim<string> {
ClaimType = "firstName",
ClaimValue = firstNameClaim.Value,
UserId = user.Id
});
}
if (loginInfo.Principal.FindFirst(ClaimTypes.Surname) is Claim surnameClaim)
{
user.Claims.Add(new IdentityUserClaim<string> {
ClaimType = "surname",
ClaimValue = surnameClaim.Value,
UserId = user.Id
});
}
var continueSignIn = true;
return continueSignIn;
}
Mike Chambers
08/25/2023, 10:36 AMpublic readonly IMemberService _memberService;
then you can add to the onExternalLogin
IMember? member = _memberService!.GetByKey(user.Key);
if (member == null)
{
throw new InvalidOperationException($"Could not find a member with key: {member?.Key}.");
}
foreach (MemberPropertyModel property in model.MemberProperties.Where(p => p.Value != null).Where(property => member.Properties.Contains(property.Alias)))
{
member.Properties[property.Alias]?.SetValue(property.Value);
}
_memberService.Save(member);
or you could just use
member.SetValue("Surname", surname);
rather than looping though a set of properties like I have.
If you are using ModelsBuilder you could also fetch the prop alias rather than use a magic string.David Peck (Peck Tech)
08/25/2023, 12:29 PM