Commit 7760d10c by Tuukka Kivilahti

Nopea ilmoittautuminen, Nyt voi katsoa kursseja vaikka ei olisi ostanut lippua -…

…> ei tartte uloskirjautua että voi ilmota
1 parent 4bda07e3
...@@ -2,6 +2,7 @@ package fi.codecrew.moya.beans; ...@@ -2,6 +2,7 @@ package fi.codecrew.moya.beans;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Set;
import javax.annotation.security.DeclareRoles; import javax.annotation.security.DeclareRoles;
import javax.annotation.security.RolesAllowed; import javax.annotation.security.RolesAllowed;
...@@ -15,6 +16,7 @@ import fi.codecrew.moya.enums.apps.LecturePermission; ...@@ -15,6 +16,7 @@ import fi.codecrew.moya.enums.apps.LecturePermission;
import fi.codecrew.moya.facade.EventUserFacade; import fi.codecrew.moya.facade.EventUserFacade;
import fi.codecrew.moya.facade.LectureFacade; import fi.codecrew.moya.facade.LectureFacade;
import fi.codecrew.moya.facade.LectureGroupFacade; import fi.codecrew.moya.facade.LectureGroupFacade;
import fi.codecrew.moya.model.ApplicationPermission;
import fi.codecrew.moya.model.EventUser; import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.Lecture; import fi.codecrew.moya.model.Lecture;
import fi.codecrew.moya.model.LectureGroup; import fi.codecrew.moya.model.LectureGroup;
...@@ -198,4 +200,18 @@ public class LectureBean implements LectureBeanLocal { ...@@ -198,4 +200,18 @@ public class LectureBean implements LectureBeanLocal {
return maxCount - userLectureSelects(group, user); return maxCount - userLectureSelects(group, user);
} }
@Override
public boolean isUserCanParticipate(EventUser user) {
List<Role> roles = userBean.findUsersRoles(user);
for (Role role : roles) {
for (ApplicationPermission apperm : role.getPermissions()) {
if(apperm.getPermission().getFullName().equals(LecturePermission.PARTICIPATE.getFullName()))
return true;
}
}
return false;
}
} }
...@@ -156,7 +156,6 @@ public class UserBean implements UserBeanLocal { ...@@ -156,7 +156,6 @@ public class UserBean implements UserBeanLocal {
@EJB @EJB
private ProductFacade productFacade; private ProductFacade productFacade;
@Override @Override
@RolesAllowed(UserPermission.S_VIEW_ALL) @RolesAllowed(UserPermission.S_VIEW_ALL)
public List<EventUser> getUsers() { public List<EventUser> getUsers() {
...@@ -217,6 +216,8 @@ public class UserBean implements UserBeanLocal { ...@@ -217,6 +216,8 @@ public class UserBean implements UserBeanLocal {
// add roles from events default role. // add roles from events default role.
addRecursive(checkedRoles, event.getDefaultRole()); addRecursive(checkedRoles, event.getDefaultRole());
} }
if (!u.isAnonymous()) {
// add roles from accountEvents of the user // add roles from accountEvents of the user
addRecursive(checkedRoles, productbean.getRolesFromAccountEvents(u)); addRecursive(checkedRoles, productbean.getRolesFromAccountEvents(u));
...@@ -230,6 +231,7 @@ public class UserBean implements UserBeanLocal { ...@@ -230,6 +231,7 @@ public class UserBean implements UserBeanLocal {
} }
} }
} }
}
} }
// currentEventuser = u; // currentEventuser = u;
......
...@@ -32,4 +32,6 @@ public interface LectureBeanLocal { ...@@ -32,4 +32,6 @@ public interface LectureBeanLocal {
public int userLectureSelectsLeft(LectureGroup group, EventUser user); public int userLectureSelectsLeft(LectureGroup group, EventUser user);
public int userLectureSelects(LectureGroup group, EventUser user); public int userLectureSelects(LectureGroup group, EventUser user);
public boolean isUserCanParticipate(EventUser user);
} }
...@@ -5,6 +5,7 @@ import fi.codecrew.moya.enums.BortalApplication; ...@@ -5,6 +5,7 @@ import fi.codecrew.moya.enums.BortalApplication;
public enum LecturePermission implements IAppPermission { public enum LecturePermission implements IAppPermission {
VIEW, VIEW,
PARTICIPATE,
MANAGE, MANAGE,
; ;
......
...@@ -15,6 +15,11 @@ ...@@ -15,6 +15,11 @@
<h:form id="viewlecturesform"> <h:form id="viewlecturesform">
<p:outputPanel styleClass="messagebox" rendered="#{!lectureUserView.participateActive}">
<h2><p:outputLabel value="#{i18n['lecture.participateNotActive.title']}" /></h2>
<p:outputLabel value="#{i18n['lecture.participateNotActive.message']}" />
</p:outputPanel>
<p:fieldset rendered="#{lectureUserView.lectureGroupsVisible}" id="lectureGroups" legend="#{i18n['lecture.selectgroup']}"> <p:fieldset rendered="#{lectureUserView.lectureGroupsVisible}" id="lectureGroups" legend="#{i18n['lecture.selectgroup']}">
<p:dataTable value="#{lectureUserView.lectureGroups}" var="lectureGroup"> <p:dataTable value="#{lectureUserView.lectureGroups}" var="lectureGroup">
<p:column headerText="#{i18n['lectureGroup.name']}"> <p:column headerText="#{i18n['lectureGroup.name']}">
...@@ -37,7 +42,7 @@ ...@@ -37,7 +42,7 @@
</h1> </h1>
<p:fieldset id="participatedLectures" legend="#{i18n['lecture.participatedLectures']} #{lectureUserView.currentGroupParticipateCount} / #{lectureUserView.currentLectureGroup.selectCount}"> <p:fieldset id="participatedLectures" rendered="#{lectureUserView.participateActive}" legend="#{i18n['lecture.participatedLectures']} #{lectureUserView.currentGroupParticipateCount} / #{lectureUserView.currentLectureGroup.selectCount}">
<p:dataTable value="#{lectureUserView.participatedLectures}" var="lecture"> <p:dataTable value="#{lectureUserView.participatedLectures}" var="lecture">
<p:column headerText="#{i18n['lecture.name']}" style="width:125px"> <p:column headerText="#{i18n['lecture.name']}" style="width:125px">
<h:outputText value="#{lecture.name}" /> <h:outputText value="#{lecture.name}" />
...@@ -82,7 +87,7 @@ ...@@ -82,7 +87,7 @@
<h:outputText value="#{lecture.participantsCount}" /> / <h:outputText value="#{lecture.maxParticipantsCount}" /> <h:outputText value="#{lecture.participantsCount}" /> / <h:outputText value="#{lecture.maxParticipantsCount}" />
</p:column> </p:column>
<p:column style="width:80px"> <p:column style="width:80px">
<p:commandButton value="#{i18n['lecture.participate']}" rendered="#{!lectureUserView.currentGroupFull and !lecture.full}" actionListener="#{lectureUserView.participateCurrent}" update=":viewlecturesform:availableLectures :viewlecturesform:participatedLectures" onerror="location.reload(true)" /> <p:commandButton value="#{i18n['lecture.participate']}" rendered="#{!lectureUserView.currentGroupFull and !lecture.full and lectureUserView.participateActive}" actionListener="#{lectureUserView.participateCurrent}" update=":viewlecturesform:availableLectures :viewlecturesform:participatedLectures" onerror="location.reload(true)" />
<h:outputText value="#{i18n['lecture.full']}" rendered="#{lecture.full}" /> <h:outputText value="#{i18n['lecture.full']}" rendered="#{lecture.full}" />
<h:outputText value="#{i18n['lecture.groupFull']}" rendered="#{lectureUserView.currentGroupFull}" /> <h:outputText value="#{i18n['lecture.groupFull']}" rendered="#{lectureUserView.currentGroupFull}" />
</p:column> </p:column>
......
...@@ -78,6 +78,7 @@ ...@@ -78,6 +78,7 @@
</h:form> </h:form>
<h:form> <h:form>
<h:panelGrid columns="2" columnClasses="topalign,topalign">
<h:panelGroup> <h:panelGroup>
<table> <table>
<ui:fragment rendered="#{!cc.attrs.creating}"> <ui:fragment rendered="#{!cc.attrs.creating}">
...@@ -149,22 +150,23 @@ ...@@ -149,22 +150,23 @@
<p:commandButton rendered="#{cc.attrs.creating or userView.canSave}" id="commitbtn" action="#{cc.attrs.commitaction}" ajax="false" value="#{cc.attrs.commitvalue}" onerror="location.reload(true);" /> <p:commandButton rendered="#{cc.attrs.creating or userView.canSave}" id="commitbtn" action="#{cc.attrs.commitaction}" ajax="false" value="#{cc.attrs.commitvalue}" onerror="location.reload(true);" />
</h:panelGroup> </h:panelGroup>
</h:form>
<h:form>
<h:panelGroup rendered="#{userView.showUserSelectableRoles and cc.attrs.showRoles}"> <h:panelGroup rendered="#{userView.showUserSelectableRoles and cc.attrs.showRoles}">
<h2> <h2>
<h:outputText value="#{i18n['user.userSelectableRoles']}:" /> <h:outputText value="#{i18n['user.userSelectableRoles']}:" />
</h2> </h2>
<h:selectManyCheckbox converter="#{roleConverter}" layout="pageDirection" id="roles" value="#{userView.usersRoles}">
<f:selectItems var="roleitem" itemLabel="#{roleitem.name}" value="#{roleDataView.userSelectableRoles}" /> <p:selectManyCheckbox converter="#{roleConverter}" layout="pageDirection" value="#{userView.userSelectableRoles}">
</h:selectManyCheckbox> <f:selectItems value="#{roleDataView.userSelectableRoles}" var="roleitem" itemLabel="#{roleitem.name}" itemValue="#{roleitem}" />
</p:selectManyCheckbox>
<div> <div>
<h:message rendered="#{roleView.canReadRoles}" for="roles" /> <h:message rendered="#{roleView.canReadRoles}" for="roles" />
</div> </div>
<h:commandButton action="#{userView.saveUserSelectableRoles}" value="#{i18n['user.saveUserSelectableRoles']}" /> <h:commandButton action="#{userView.saveUserSelectableRoles}" value="#{i18n['user.saveUserSelectableRoles']}" />
</h:panelGroup> </h:panelGroup>
</h:panelGrid>
</h:form> </h:form>
......
...@@ -211,3 +211,10 @@ th, td { ...@@ -211,3 +211,10 @@ th, td {
vertical-align: top; vertical-align: top;
padding-left: 20px; padding-left: 20px;
} }
.messagebox {
border: 1px red solid;
padding-left: 20px;
padding-right: 20px;
padding-bottom: 20px;
}
...@@ -205,6 +205,7 @@ lecture.availableLectures = Aihealueen kurssit ja luennot ...@@ -205,6 +205,7 @@ lecture.availableLectures = Aihealueen kurssit ja luennot
lecture.createLecture = Uuden tiedot lecture.createLecture = Uuden tiedot
lecture.createNew = Luo uusi lecture.createNew = Luo uusi
lecture.description = Kuvaus lecture.description = Kuvaus
lecture.full = Kurssi t\u00E4ynn\u00E4
lecture.groupFull = Kiinti\u00F6 t\u00E4ynn\u00E4 lecture.groupFull = Kiinti\u00F6 t\u00E4ynn\u00E4
lecture.hours = Kesto, tunteja lecture.hours = Kesto, tunteja
lecture.maxParticipantsCount = Max. osallistujia lecture.maxParticipantsCount = Max. osallistujia
...@@ -212,6 +213,8 @@ lecture.multicreate = Luo monta putkeen ...@@ -212,6 +213,8 @@ lecture.multicreate = Luo monta putkeen
lecture.name = Nimi lecture.name = Nimi
lecture.participants = Osallistujia lecture.participants = Osallistujia
lecture.participate = Ilmoittaudu lecture.participate = Ilmoittaudu
lecture.participateNotActive.message = Voit ilmoittautua kursseille kun olet ostanut lipun tapahtumaan
lecture.participateNotActive.title = Osta ensiksi p\u00E4\u00E4sylippu
lecture.participatedLectures = Kurssi-ilmoittautumisesi lecture.participatedLectures = Kurssi-ilmoittautumisesi
lecture.roles = Roolit lecture.roles = Roolit
lecture.saveLecture = Muokkaa lecture.saveLecture = Muokkaa
......
...@@ -557,6 +557,7 @@ lecture.availableLectures = available lectures ...@@ -557,6 +557,7 @@ lecture.availableLectures = available lectures
lecture.createLecture = New lecture lecture.createLecture = New lecture
lecture.createNew = Create new lecture.createNew = Create new
lecture.description = Description lecture.description = Description
lecture.full = Lecture full
lecture.groupFull = Limit reached lecture.groupFull = Limit reached
lecture.hours = Duration hours lecture.hours = Duration hours
lecture.maxParticipantsCount = Max participants lecture.maxParticipantsCount = Max participants
...@@ -564,6 +565,8 @@ lecture.multicreate = Create multible in row ...@@ -564,6 +565,8 @@ lecture.multicreate = Create multible in row
lecture.name = Name lecture.name = Name
lecture.participants = Participants lecture.participants = Participants
lecture.participate = Participate lecture.participate = Participate
lecture.participateNotActive.message = You can participate to lectures when you have bought a ticket to event.
lecture.participateNotActive.title = Buy tickets before participating
lecture.participatedLectures = Your lectures lecture.participatedLectures = Your lectures
lecture.roles = Roles lecture.roles = Roles
lecture.saveLecture = Edit lecture.saveLecture = Edit
......
...@@ -567,6 +567,7 @@ lecture.availableLectures = Aihealueen kurssit ja luennot ...@@ -567,6 +567,7 @@ lecture.availableLectures = Aihealueen kurssit ja luennot
lecture.createLecture = Uuden tiedot lecture.createLecture = Uuden tiedot
lecture.createNew = Luo uusi lecture.createNew = Luo uusi
lecture.description = Kuvaus lecture.description = Kuvaus
lecture.full = Kurssi t\u00E4ynn\u00E4
lecture.groupFull = Kiinti\u00F6 t\u00E4ynn\u00E4 lecture.groupFull = Kiinti\u00F6 t\u00E4ynn\u00E4
lecture.hours = Kesto tunteina lecture.hours = Kesto tunteina
lecture.maxParticipantsCount = Osallistujia enint. lecture.maxParticipantsCount = Osallistujia enint.
...@@ -574,6 +575,8 @@ lecture.multicreate = Luo monta putkeen ...@@ -574,6 +575,8 @@ lecture.multicreate = Luo monta putkeen
lecture.name = Nimi lecture.name = Nimi
lecture.participants = Osallistujia lecture.participants = Osallistujia
lecture.participate = Ilmoittaudu lecture.participate = Ilmoittaudu
lecture.participateNotActive.message = Voit ilmoittautua kursseille vasta kun olet ostanut lipun tapahtumaan. Osta lippu valitsemalla vasemmalta Kauppa -> Osta tuotteita.
lecture.participateNotActive.title = Aloita ostamalla lippu tapahtumaan
lecture.participatedLectures = Ilmoittautumisesi lecture.participatedLectures = Ilmoittautumisesi
lecture.roles = Roolit lecture.roles = Roolit
lecture.saveLecture = Muokkaa lecture.saveLecture = Muokkaa
......
...@@ -121,6 +121,7 @@ public class AuthView extends GenericCDIView { ...@@ -121,6 +121,7 @@ public class AuthView extends GenericCDIView {
HttpServletRequest request = getRequest(); HttpServletRequest request = getRequest();
if (request.getUserPrincipal() != null) { if (request.getUserPrincipal() != null) {
logger.info("Principal not empty. need to logout first"); logger.info("Principal not empty. need to logout first");
try { try {
......
...@@ -55,10 +55,7 @@ public class RoleDataView extends GenericCDIView { ...@@ -55,10 +55,7 @@ public class RoleDataView extends GenericCDIView {
return roles; return roles;
} }
public ListDataModel<Role> getUserSelectableRoles() { public List<Role> getUserSelectableRoles() {
if (roles == null) { return rolebean.listUserSelectableRoles();
roles = new ListDataModel<Role>(rolebean.listUserSelectableRoles());
}
return roles;
} }
} }
...@@ -94,6 +94,9 @@ public class UserView extends GenericCDIView { ...@@ -94,6 +94,9 @@ public class UserView extends GenericCDIView {
private transient CardTemplateBeanLocal cardBean; private transient CardTemplateBeanLocal cardBean;
private List<Role> usersRoles; private List<Role> usersRoles;
private List<Role> userSelectableRoles = null;
@EJB @EJB
private transient RoleBeanLocal rolebean; private transient RoleBeanLocal rolebean;
@EJB @EJB
...@@ -188,6 +191,17 @@ public class UserView extends GenericCDIView { ...@@ -188,6 +191,17 @@ public class UserView extends GenericCDIView {
return null; return null;
} }
public List<Role> getUserSelectableRoles() {
if (userSelectableRoles == null && user != null)
{
userSelectableRoles = rolebean.getRoles(getSelectedUser());
}
return userSelectableRoles;
}
public List<Role> getUsersRoles() { public List<Role> getUsersRoles() {
if (usersRoles == null && user != null) if (usersRoles == null && user != null)
{ {
...@@ -327,6 +341,12 @@ public class UserView extends GenericCDIView { ...@@ -327,6 +341,12 @@ public class UserView extends GenericCDIView {
} }
public String saveUser() { public String saveUser() {
if(userSelectableRoles != null) {
saveUserSelectableRoles();
}
logger.info("Saving user"); logger.info("Saving user");
if (permbean.getCurrentUser().equals(user) || permbean.hasPermission(UserPermission.MODIFY)) { if (permbean.getCurrentUser().equals(user) || permbean.hasPermission(UserPermission.MODIFY)) {
...@@ -482,6 +502,10 @@ public class UserView extends GenericCDIView { ...@@ -482,6 +502,10 @@ public class UserView extends GenericCDIView {
this.usersRoles = usersRoles; this.usersRoles = usersRoles;
} }
public void setUserSelectableRoles(List<Role> usersRoles) {
this.userSelectableRoles = usersRoles;
}
public String getUsername() { public String getUsername() {
return username; return username;
} }
...@@ -536,10 +560,11 @@ public class UserView extends GenericCDIView { ...@@ -536,10 +560,11 @@ public class UserView extends GenericCDIView {
public String saveUserSelectableRoles() public String saveUserSelectableRoles()
{ {
rolebean.saveUserSelectableRoles(user, usersRoles); rolebean.saveUserSelectableRoles(user, userSelectableRoles);
usersRoles = null; userSelectableRoles = null;
return null; return null;
} }
......
...@@ -10,6 +10,7 @@ import javax.inject.Named; ...@@ -10,6 +10,7 @@ import javax.inject.Named;
import fi.codecrew.moya.beans.EventBeanLocal; import fi.codecrew.moya.beans.EventBeanLocal;
import fi.codecrew.moya.beans.LectureBeanLocal; import fi.codecrew.moya.beans.LectureBeanLocal;
import fi.codecrew.moya.beans.UserBeanLocal;
import fi.codecrew.moya.enums.apps.LecturePermission; import fi.codecrew.moya.enums.apps.LecturePermission;
import fi.codecrew.moya.model.Lecture; import fi.codecrew.moya.model.Lecture;
import fi.codecrew.moya.model.LectureGroup; import fi.codecrew.moya.model.LectureGroup;
...@@ -31,6 +32,7 @@ public class LectureUserView extends GenericCDIView { ...@@ -31,6 +32,7 @@ public class LectureUserView extends GenericCDIView {
@EJB @EJB
EventBeanLocal eventBean; EventBeanLocal eventBean;
ListDataModel<LectureGroup> lectureGroups = null; ListDataModel<LectureGroup> lectureGroups = null;
ListDataModel<Lecture> lectures = null; ListDataModel<Lecture> lectures = null;
ListDataModel<Lecture> participatedLectures = null; ListDataModel<Lecture> participatedLectures = null;
...@@ -50,6 +52,10 @@ public class LectureUserView extends GenericCDIView { ...@@ -50,6 +52,10 @@ public class LectureUserView extends GenericCDIView {
return true; return true;
} }
public boolean isParticipateActive() {
return lectureBean.isUserCanParticipate(userView.getCurrentUser());
}
public ListDataModel<LectureGroup> getLectureGroups() { public ListDataModel<LectureGroup> getLectureGroups() {
lectureGroups = new ListDataModel<LectureGroup>(lectureBean.getLectureGroups()); lectureGroups = new ListDataModel<LectureGroup>(lectureBean.getLectureGroups());
...@@ -91,6 +97,9 @@ public class LectureUserView extends GenericCDIView { ...@@ -91,6 +97,9 @@ public class LectureUserView extends GenericCDIView {
} }
public void participateCurrent() { public void participateCurrent() {
if(!isParticipateActive()) {
return;
}
if (lectures != null && lectures.isRowAvailable()) { if (lectures != null && lectures.isRowAvailable()) {
Lecture lecture = lectures.getRowData(); Lecture lecture = lectures.getRowData();
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!