IwbSessionExtensions.cs 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using IwbZero.Authorization.Base.Users;
  5. namespace IwbZero.Runtime.Session
  6. {
  7. public static class IwbSessionExtensions
  8. {
  9. public static string GetUserName(this IIwbSession session)
  10. {
  11. return GetClaimValue(session, IwbClaimTypes.UserName);
  12. }
  13. public static string GetRealName(this IIwbSession session)
  14. {
  15. return GetClaimValue(session, IwbClaimTypes.RealName);
  16. }
  17. public static string GetUserSingleRole(this IIwbSession session)
  18. {
  19. return GetClaimValue(session, IwbClaimTypes.UserRoles);
  20. }
  21. public static string[] GetUserRoles(this IIwbSession session)
  22. {
  23. var claim = session.GetClaim(IwbClaimTypes.UserRoles);
  24. return claim?.Value.Split(new char[','], StringSplitOptions.RemoveEmptyEntries);
  25. }
  26. public static IEnumerable<string> GetUserRoleList(this IIwbSession session)
  27. {
  28. var claim = session.GetClaim(IwbClaimTypes.UserRoles);
  29. return claim?.Value?.Split(new char[','], StringSplitOptions.RemoveEmptyEntries).ToList() ?? new List<string>();
  30. }
  31. public static IEnumerable<string> GetUserRoleIdList(this IIwbSession session)
  32. {
  33. var claim = session.GetClaim(IwbClaimTypes.UserRoleIds);
  34. return claim?.Value?.Split(new char[','], StringSplitOptions.RemoveEmptyEntries).ToList() ?? new List<string>();
  35. }
  36. public static int? GetUserType(this IIwbSession session)
  37. {
  38. return GetClaimValue<int>(session, IwbClaimTypes.UserType);
  39. }
  40. public static string GetEmailAddress(this IIwbSession session)
  41. {
  42. return GetClaimValue(session, IwbClaimTypes.EmailAddress);
  43. }
  44. public static bool? GetRememberMe(this IIwbSession session)
  45. {
  46. return GetClaimValue<bool>(session, IwbClaimTypes.RememberMe);
  47. }
  48. public static DateTimeOffset? GetExpireTime(this IIwbSession session)
  49. {
  50. return GetClaimValue<DateTimeOffset>(session, IwbClaimTypes.ExpireTime);
  51. }
  52. public static T? GetClaimValue<T>(this IIwbSession session, string claimTypes)
  53. where T : struct
  54. {
  55. var claim = session.GetClaim(claimTypes);
  56. if (string.IsNullOrEmpty(claim?.Value))
  57. return null;
  58. var result = (T)Convert.ChangeType(claim.Value, typeof(T));
  59. return result;
  60. }
  61. public static string GetClaimValue(this IIwbSession session, string claimTypes)
  62. {
  63. var claim = session.GetClaim(claimTypes);
  64. return claim?.Value ?? "";
  65. }
  66. public static bool IsUser(this IIwbSession session, UserBase user)
  67. {
  68. if (session == null)
  69. {
  70. throw new ArgumentNullException(nameof(session));
  71. }
  72. if (user == null)
  73. {
  74. throw new ArgumentNullException(nameof(user));
  75. }
  76. return session.TenantId == user.TenantId &&
  77. session.UserId.HasValue &&
  78. session.UserId.Value == user.Id;
  79. }
  80. }
  81. }