package com.github.wicketoracle.html.panel.menu; import org.apache.wicket.authorization.strategies.role.Roles; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.link.StatelessLink; import org.apache.wicket.markup.html.panel.Panel; import org.apache.wicket.model.Model; import org.apache.wicket.datetime.PatternDateConverter; import org.apache.wicket.datetime.markup.html.basic.DateLabel; import com.github.wicketoracle.app.changepassword.ChangePasswordPage; import com.github.wicketoracle.app.createuser.CreateUserPage; import com.github.wicketoracle.app.data.DataMgrPage; import com.github.wicketoracle.app.home.HomePage; import com.github.wicketoracle.app.login.LoginPage; import com.github.wicketoracle.app.report.ReportPage; import com.github.wicketoracle.app.ucp.UCPConfigPage; import com.github.wicketoracle.app.user.delegate.mgr.DelegateUserMgrPage; import com.github.wicketoracle.app.user.standard.mgr.StandardUserMgrPage; import com.github.wicketoracle.session.Session; /** * Panel modelling the navigation menu that is presented <i>after</i> users * have successfully authenticated with the application * * @author Andrew Hall * */ class PostLoginMenuPanel extends Panel { private static final long serialVersionUID = 1L; private transient Session session = ( Session ) getSession(); private Label usernameLabel = new Label( "LabelCurrentUsername" , session.getUsername() ); private DateLabel passwordExpiryDateLabel = new DateLabel( "LabelPasswordExpiryDate" , new Model<java.util.Date>( session.getPersonalDetails().getPasswordExpiryDate() ) , new PatternDateConverter( "dd-MM-yyyy", false ) ); private StatelessLink logoutLink = new StatelessLink( "LinkLogout" ) { private static final long serialVersionUID = 1L; public void onClick() { ( ( Session ) getSession() ).invalidateNow(); setResponsePage( LoginPage.class ); } }; private StatelessLink homePageLink = new StatelessLink( "LinkHomePage" ) { private static final long serialVersionUID = 1L; public void onClick() { setResponsePage( HomePage.class ); } }; private StatelessLink changePasswordLink = new StatelessLink( "LinkChangePassword" ) { private static final long serialVersionUID = 1L; public void onClick() { setResponsePage( ChangePasswordPage.class ); } }; private StatelessLink createUserLink = new StatelessLink( "LinkCreateUser" ) { private static final long serialVersionUID = 1L; public void onClick() { setResponsePage( CreateUserPage.class ); } }; private StatelessLink manageUCPLink = new StatelessLink( "LinkManageUCP" ) { private static final long serialVersionUID = 1L; public void onClick() { setResponsePage( UCPConfigPage.class ); } }; private StatelessLink manageDelegateUsersLink = new StatelessLink( "LinkManageDelegateUsers" ) { private static final long serialVersionUID = 1L; public void onClick() { setResponsePage( DelegateUserMgrPage.class ); } }; private StatelessLink manageStandardUsersLink = new StatelessLink( "LinkManageStandardUsers" ) { private static final long serialVersionUID = 1L; public void onClick() { setResponsePage( StandardUserMgrPage.class ); } }; private StatelessLink manageDataLink = new StatelessLink( "LinkManageData" ) { private static final long serialVersionUID = 1L; public void onClick() { setResponsePage( DataMgrPage.class ); } }; private StatelessLink reportsLink = new StatelessLink( "LinkReports" ) { private static final long serialVersionUID = 1L; public void onClick() { setResponsePage( ReportPage.class ); } }; /** * Construct. * * @param pId * component id */ PostLoginMenuPanel( final String pId ) { super( pId ); final Roles roles = ( ( Session ) getSession() ).getRoles(); add( usernameLabel ); add( passwordExpiryDateLabel ); add( logoutLink ); add( homePageLink ); add( changePasswordLink ); add( createUserLink.setVisible( roles.hasRole( com.github.wicketoracle.app.createuser.RequiredRoles.ROLE_CREATE_USER ) ) ); add( manageUCPLink.setVisible( roles.hasRole( com.github.wicketoracle.app.ucp.RequiredRoles.ROLE_UCP_MGR ) ) ); add( manageDelegateUsersLink.setVisible( roles.hasRole( com.github.wicketoracle.app.user.delegate.mgr.RequiredRoles.ROLE_DELEGATE_APP_USER_MGR ) ) ); add( manageStandardUsersLink.setVisible( roles.hasRole( com.github.wicketoracle.app.user.standard.mgr.RequiredRoles.ROLE_STANDARD_APP_USER_MGR ) ) ); add( manageDataLink.setVisible( roles.hasRole( com.github.wicketoracle.app.data.RequiredRoles.ROLE_REF_DATA_MGR ) ) ); add( reportsLink.setVisible( roles.hasRole( com.github.wicketoracle.app.report.RequiredRoles.ROLE_REPORT_USER ) ) ); } }