private static IEnumerable <string> GetAuthorizedRoles(string className, string methodName, ISecurityRoleProvider provider) { try { return(provider.GetAuthorizedRoles(className, methodName)); } catch { return(new List <string>()); } }
public static bool CanExecute(string className, string methodName, ISecurityRoleProvider provider) { ParameterValidator.AssertIsNotNullOrWhiteSpace(nameof(className), className); var flag = false; var currentIdentity = WindowsIdentity.GetCurrent(); var myPrincipal = new WindowsPrincipal(currentIdentity); foreach (var authorizedRole in GetAuthorizedRoles(className, methodName, provider)) { if (currentIdentity.Name == authorizedRole || myPrincipal.IsInRole(authorizedRole)) { flag = true; break; } } return(flag); }