Exemple #1
0
        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));
        }
Exemple #2
0
        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");
            }
        }