public Task Invoke(DotNetifyHubContext context, NextDelegate next) { Type type = Type.GetType($"{typeof(HeaderViewModel).Namespace}.{context.VMId}"); RoleRequiredAttribute attribute = type.GetCustomAttributes(typeof(RoleRequiredAttribute), true).FirstOrDefault() as RoleRequiredAttribute; if (attribute != null) { if (!attribute.RolesRequired.Contains(_currentUser.Role)) { return(null); } } return(next(context)); }
private static void CheckRoles(List <ValidationFailures> failures, List <string> messages, RoleRequiredAttribute requiredRoles, IHttpContext context) { IUserResolver userResolver = (IUserResolver)ServiceProxySystem.UserResolvers.Clone(); IRoleResolver roleResolver = (IRoleResolver)ServiceProxySystem.RoleResolvers.Clone(); userResolver.HttpContext = context; roleResolver.HttpContext = context; List <string> userRoles = new List <string>(roleResolver.GetRoles(userResolver)); bool passed = false; for (int i = 0; i < requiredRoles.Roles.Length; i++) { string requiredRole = requiredRoles.Roles[i]; if (userRoles.Contains(requiredRole)) { passed = true; break; } } if (!passed) { failures.Add(ServiceProxy.ValidationFailures.PermissionDenied); messages.Add("Permission Denied"); } }