正在尝试隐藏“ AEM页面属性”对话框中的某些选项卡。
但是,我可以使用rep:policy隐藏我的自定义标签。 但, 如何在AEM中为非管理员用户的页面的页面属性中隐藏OOTB个性化选项卡?
答案 0 :(得分:1)
这是Granite Render Conditions的绝佳用例。我在blog中解释了它们的工作方式,并提供了示例和一些资源。
在这里无法使用ACL策略,因为即使您覆盖了标签,吊索资源合并仍会在/ libs下找到该标签。
这是您需要执行的步骤:
我认为这应该很简单。但是如果您想要一个有效的示例,我可以在今天/明天提供一个示例。
答案 1 :(得分:0)
如果您不希望进行叠加操作(这总是开销),则可以执行以下操作:
写一个服务器以检查用户是否为管理员
builtins.__dict__
在/ apps / your-project /下创建一个clientlib,并将分类添加为“ cq.personalization.wizard”
添加以下代码
@Component(name = "com.aem.showcase.core.impl.AdminUserCheck",
service = Servlet.class, property = {
"service.description=Admin user check",
"sling.servlet.methods=GET",
"sling.servlet.paths=/bin/isadminuser" })
public class AdminUserCheck extends SlingSafeMethodsServlet{
protected void doGet(SlingHttpServletRequest request,
SlingHttpServletResponse resp)
throws ServletException, IOException {
resp.setContentType("application/json");
resp.setCharacterEncoding("utf-8");
Session session = request.getResourceResolver().adaptTo(Session.class);
boolean isAdmin = Boolean.FALSE;
UserManager um;
try {
um = AccessControlUtil.getUserManager(session);
User currentUser = (User) um.getAuthorizable(session.getUserID());
isAdmin = currentUser.isAdmin();
JSONWriter jsonWriter = new JSONWriter(resp.getWriter());
jsonWriter.object();
jsonWriter.key("isadmin").value(isAdmin);
jsonWriter.endObject();
} catch (RepositoryException | JSONException e) {
e.printStackTrace();
}
}
}
最后将ExtraClintLibs属性添加到页面“ cq.personalization.wizard”。您需要在项目结构下添加它,我以我们零售为例:/ apps / weretail / components / structure / page / cq:dialog