/// <summary> /// Evaluates if menu item should be visible to current user with access to <see cref="Roles"/>. /// </summary> /// <param name="parameter"> /// Data used by the <see cref="MenuCommand"/>. If the <see cref="MenuCommand"/> does not require /// data to be passed, this object can be set to <c>null</c>. /// </param> /// <returns><c>true</c> if this <see cref="MenuCommand"/> can be executed; otherwise, <c>false</c>.</returns> public bool CanExecute(object parameter) { SecurityPrincipal currentPrincipal = CommonFunctions.CurrentPrincipal; ISecurityProvider securityProvider; if (!SecurityProviderCache.TryGetCachedProvider(currentPrincipal.Identity.Name, out securityProvider)) { securityProvider = SecurityProviderCache.CurrentProvider; } return(((object)securityProvider != null) && currentPrincipal.Identity.IsAuthenticated && securityProvider.UserData.Roles.Any() && (string.IsNullOrEmpty(Roles) || Roles == "*" || currentPrincipal.IsInRole(Roles))); }