UserManagerExt.cs 1.0 KB

1234567891011121314151617181920212223242526272829303132
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Threading.Tasks;
  5. using Microsoft.AspNetCore.Identity;
  6. namespace BO.AppServer.Business.Security.Extensions
  7. {
  8. internal static class UserManagerExt
  9. {
  10. public static async Task<bool> HasUserRoleAny(this UserManager<IdentityUser> userMan, string userName, IEnumerable<string> roles)
  11. {
  12. if (userMan == null)
  13. throw new ArgumentNullException(nameof(userMan));
  14. if (string.IsNullOrEmpty(userName))
  15. throw new ArgumentNullException(nameof(userName));
  16. if (roles==null)
  17. throw new ArgumentNullException(nameof(roles));
  18. var user = await userMan.FindByNameAsync(userName);
  19. if (user == null)
  20. throw new ArgumentOutOfRangeException(nameof(user), $"User '{userName}' not found.");
  21. var ownedRoles = await userMan.GetRolesAsync(user);
  22. return roles.Any(x => ownedRoles.Contains(x));
  23. }
  24. }
  25. }