我正在尝试编写一个SQL查询来检查"写"在Sitecore中访问用户。
例如,假设我想检查John
的访问权限,我们目前在Sitecore中使用其Mulitsite Manager有40个网站。除了从用户管理器执行此操作外,我还希望在SQL的帮助下完成此操作。
您知道我可以用来检查访问权限的数据库吗?
除此之外,我在代码中也遇到了一点错误。但我想,一旦我输入正确的数据库名称,它就会被修复。
提前谢谢你, Vaibhav的
答案 0 :(得分:0)
使用SQL查询检查用户访问权限是一种非常糟糕的做法。
要检查您需要在Sitecore类之上使用的用户权限:
namespace Sitecore.Security.AccessControl
{
public class ItemAccess
{
public ItemAccess(Item item);
public virtual bool CanAdd(BranchId branchId);
public virtual bool CanAdd(TemplateID templateID);
public virtual bool CanAdmin();
public virtual bool CanCopyTo(Item destination);
public virtual bool CanCreate();
public virtual bool CanDelete();
public virtual bool CanDuplicate();
public virtual bool CanMoveTo(Item destination);
public virtual bool CanRead();
public virtual bool CanReadLanguage();
public virtual bool CanRemoveVersion();
public virtual bool CanRename();
public virtual bool CanWrite();
public virtual bool CanWriteLanguage();
}
}
要检查用户是否有编写过程,请使用下一个代码:
public bool CheckWriteAccess(string itemId, string UserName)
{
bool WriteAccess = false;
if (Sitecore.Data.ID.IsID(itemId))
{
Item item = Sitecore.Context.Database.GetItem(Sitecore.Data.ID.Parse(itemId));
if (item != null)
{
Sitecore.Security.Domains.Domain domain = Sitecore.Context.Domain;
string domainUser = domain.Name + @"\" + UserName;
if (Sitecore.Security.Accounts.User.Exists(domainUser))
{
Sitecore.Security.Accounts.User user = Sitecore.Security.Accounts.User.FromName(domainUser, false);
// UserSwitcher allows below code to run under a specific user
using (new Sitecore.Security.Accounts.UserSwitcher(user))
{
WriteAccess = item.Access.CanWrite();
}
}
}
}
return WriteAccess;
}