我正在开发一个 Umbraco 13 网站,该网站正在使用 members 和 member groups。
在模板中,我希望能够确定当前成员是否属于某个成员组。目标是仅向某些成员组显示模板中的某些内容。
我希望有这样的方法:
member.IsInRole("myGroup");
但我没找到任何东西。
我知道我可以通过利用 IMemberService > GetAllRoles(int memberId) 并检查列表来创建自己的方法。
令我惊讶的是,某处没有内置方法。有谁知道我是否错过了它还是它根本不存在?
没有像
IsInRole("myGroup")
这样的方法,但有类似的方法可以使用。
您可以使用
GetMembersInRole(string roleName)
或 FindMembersInRole(string roleName, string usernameToMatch, StringPropertyMatchType matchType = StringPropertyMatchType.StartsWith)
了解成员是否担任角色。
using Umbraco.Cms.Core.Models;
using Umbraco.Cms.Core.Models.Membership;
using Umbraco.Cms.Core.Persistence.Querying;
namespace Umbraco.Cms.Core.Services;
public interface IMembershipRoleService<out T>
where T : class, IMembershipUser
{
void AddRole(string roleName);
IEnumerable<IMemberGroup> GetAllRoles();
IEnumerable<string> GetAllRoles(int memberId);
IEnumerable<string> GetAllRoles(string username);
IEnumerable<int> GetAllRolesIds();
IEnumerable<int> GetAllRolesIds(int memberId);
IEnumerable<int> GetAllRolesIds(string username);
IEnumerable<T> GetMembersInRole(string roleName);
IEnumerable<T> FindMembersInRole(string roleName, string usernameToMatch, StringPropertyMatchType matchType = StringPropertyMatchType.StartsWith);
bool DeleteRole(string roleName, bool throwIfBeingUsed);
void AssignRole(string username, string roleName);
void AssignRoles(string[] usernames, string[] roleNames);
void DissociateRole(string username, string roleName);
void DissociateRoles(string[] usernames, string[] roleNames);
void AssignRole(int memberId, string roleName);
void AssignRoles(int[] memberIds, string[] roleNames);
void DissociateRole(int memberId, string roleName);
void DissociateRoles(int[] memberIds, string[] roleNames);
void ReplaceRoles(string[] usernames, string[] roleNames);
void ReplaceRoles(int[] memberIds, string[] roleNames);
}