ExternalLoginInfoHelper.cs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. using Abp.Extensions;
  2. using System.Security.Claims;
  3. namespace VberAdmin.Identity;
  4. public class ExternalLoginInfoHelper
  5. {
  6. public static (string name, string surname) GetNameAndSurnameFromClaims(List<Claim> claims)
  7. {
  8. string name = null;
  9. string surname = null;
  10. var givennameClaim = claims.FirstOrDefault(c => c.Type == ClaimTypes.GivenName);
  11. if (givennameClaim != null && !givennameClaim.Value.IsNullOrEmpty())
  12. {
  13. name = givennameClaim.Value;
  14. }
  15. var surnameClaim = claims.FirstOrDefault(c => c.Type == ClaimTypes.Surname);
  16. if (surnameClaim != null && !surnameClaim.Value.IsNullOrEmpty())
  17. {
  18. surname = surnameClaim.Value;
  19. }
  20. if (name == null || surname == null)
  21. {
  22. var nameClaim = claims.FirstOrDefault(c => c.Type == ClaimTypes.Name);
  23. if (nameClaim != null)
  24. {
  25. var nameSurName = nameClaim.Value;
  26. if (!nameSurName.IsNullOrEmpty())
  27. {
  28. var lastSpaceIndex = nameSurName.LastIndexOf(' ');
  29. if (lastSpaceIndex < 1 || lastSpaceIndex > (nameSurName.Length - 2))
  30. {
  31. name = surname = nameSurName;
  32. }
  33. else
  34. {
  35. name = nameSurName.Substring(0, lastSpaceIndex);
  36. surname = nameSurName.Substring(lastSpaceIndex);
  37. }
  38. }
  39. }
  40. }
  41. return (name, surname);
  42. }
  43. }