Liferay 对普通用户隐藏控制面板
2013-08-16 14:26
148 查看
一、取消上方dockbar的显示
这是在liferay的主题中默认的代码,就是所有登录的用户都会显示这个控制栏。
dockbar就是最上方的那个栏。
#if ($is_signed_in)
#dockbar()
#end
改成下面这样:
#if (($is_signed_in) && $permissionChecker.isCompanyAdmin($company_id))
#dockbar()
#end
对于非admin users 就不会显示
二、禁止访问
用户依然可以通过这个连接进入控制面板:
http://localhost:8080/group/control_panel
如果需要禁止用户进入控制面板的话,就需要用hook了。
1)
Into liferay-hook.xml add
following:
<portal-properties>portal.properties</portal-properties>
2) Add portal.properties file
to hook's src folder and add this line to it:
servlet.service.events.pre=my.event.portal.ControlPanelAccessPreAction
3) Create ControlPanelAccessPreAction.java into
appropriate package and add next code it
package my.event.portal;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.liferay.portal.kernel.events.Action;
import com.liferay.portal.kernel.events.ActionException;
import com.liferay.portal.kernel.util.WebKeys;
import com.liferay.portal.model.User;
import com.liferay.portal.security.auth.PrincipalException;
import com.liferay.portal.service.GroupLocalServiceUtil;
import com.liferay.portal.service.RoleServiceUtil;
import com.liferay.portal.service.UserServiceUtil;
import com.liferay.portal.theme.ThemeDisplay;
/**
* The ControlPanelAccessPreAction restricts access to Control panel of simple
* users.
*/
public class ControlPanelAccessPreAction extends Action {
/**
* Instantiates a new control panel access pre action.
*/
public ControlPanelAccessPreAction() {
super();
}
/*
* @see com.liferay.portal.kernel.events.Action#run(javax.servlet.http. HttpServletRequest,
* javax.servlet.http.HttpServletResponse)
*/
public void run(HttpServletRequest request,
HttpServletResponse response) throws ActionException {
try {
ThemeDisplay themeDisplay = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY);
if (GroupLocalServiceUtil.getGroup(themeDisplay.getLayout().getGroupId()).isControlPanel()) {
User currentUser = UserServiceUtil.getUserById(themeDisplay.getUserId());
if (!RoleServiceUtil.hasUserRole(currentUser.getUserId(),
currentUser.getCompanyId(),
"administrator",
true)) {
throw new PrincipalException("User " + request.getRemoteUser()
+ " can't access the control panel.");
}
}
} catch (Exception ex) {
throw new ActionException(ex);
}
}
}
4) Deploy hook
这是在liferay的主题中默认的代码,就是所有登录的用户都会显示这个控制栏。
dockbar就是最上方的那个栏。
#if ($is_signed_in)
#dockbar()
#end
改成下面这样:
#if (($is_signed_in) && $permissionChecker.isCompanyAdmin($company_id))
#dockbar()
#end
对于非admin users 就不会显示
二、禁止访问
用户依然可以通过这个连接进入控制面板:
http://localhost:8080/group/control_panel
如果需要禁止用户进入控制面板的话,就需要用hook了。
1)
Into liferay-hook.xml add
following:
<portal-properties>portal.properties</portal-properties>
2) Add portal.properties file
to hook's src folder and add this line to it:
servlet.service.events.pre=my.event.portal.ControlPanelAccessPreAction
3) Create ControlPanelAccessPreAction.java into
appropriate package and add next code it
package my.event.portal;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.liferay.portal.kernel.events.Action;
import com.liferay.portal.kernel.events.ActionException;
import com.liferay.portal.kernel.util.WebKeys;
import com.liferay.portal.model.User;
import com.liferay.portal.security.auth.PrincipalException;
import com.liferay.portal.service.GroupLocalServiceUtil;
import com.liferay.portal.service.RoleServiceUtil;
import com.liferay.portal.service.UserServiceUtil;
import com.liferay.portal.theme.ThemeDisplay;
/**
* The ControlPanelAccessPreAction restricts access to Control panel of simple
* users.
*/
public class ControlPanelAccessPreAction extends Action {
/**
* Instantiates a new control panel access pre action.
*/
public ControlPanelAccessPreAction() {
super();
}
/*
* @see com.liferay.portal.kernel.events.Action#run(javax.servlet.http. HttpServletRequest,
* javax.servlet.http.HttpServletResponse)
*/
public void run(HttpServletRequest request,
HttpServletResponse response) throws ActionException {
try {
ThemeDisplay themeDisplay = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY);
if (GroupLocalServiceUtil.getGroup(themeDisplay.getLayout().getGroupId()).isControlPanel()) {
User currentUser = UserServiceUtil.getUserById(themeDisplay.getUserId());
if (!RoleServiceUtil.hasUserRole(currentUser.getUserId(),
currentUser.getCompanyId(),
"administrator",
true)) {
throw new PrincipalException("User " + request.getRemoteUser()
+ " can't access the control panel.");
}
}
} catch (Exception ex) {
throw new ActionException(ex);
}
}
}
4) Deploy hook
相关文章推荐
- XP下在控制面板和登录界面中隐藏用户方法
- XP下在控制面板和登录界面中隐藏用户方法
- Liferay控制面板搜索用户分析
- 在开始屏幕(欢迎屏幕、控制面板的用户账户设置)上隐藏用户账户和开机自动登录某个账户
- 用HtmlUnit完成模拟普通用户登陆系统后,查询以及导出文件
- linux别名永久有效(root及普通用户)
- 37 普通方法隐藏base抽象 密封
- 2003服务器被入侵,如果还原Gest用户,删除隐藏用户
- 页面包含inc文件、用户控件、普通html/htm文件
- 以普通用户启动的Vim如何保存需要root权限的文件(转)
- liferay5.0.1 用户登录
- 以普通用户启动的Vim如何保存需要root权限的文件
- [Java][Liferay] 模拟用户
- CPAU.exe,普通用户运行需要管理员权限的软件
- 关于普通用户执行mount的问题
- 【AD】取消普通域用户帐号加域权限&授权特定普通域用户加域权 .
- 普通用户显示bash4.1 解决办法
- 隐藏用户在通讯录中的显示
- Win10隐私遥测数据是什么? 普通用户最高级别无效
- zabbix添加普通用户管理权限