一、取消上方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