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;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import javax.annotation.security.DeclareRoles;
import javax.annotation.security.RolesAllowed;
......@@ -15,6 +16,7 @@ import fi.codecrew.moya.enums.apps.LecturePermission;
import fi.codecrew.moya.facade.EventUserFacade;
import fi.codecrew.moya.facade.LectureFacade;
import fi.codecrew.moya.facade.LectureGroupFacade;
import fi.codecrew.moya.model.ApplicationPermission;
import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.Lecture;
import fi.codecrew.moya.model.LectureGroup;
......@@ -198,4 +200,18 @@ public class LectureBean implements LectureBeanLocal {
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 {
@EJB
private ProductFacade productFacade;
@Override
@RolesAllowed(UserPermission.S_VIEW_ALL)
public List<EventUser> getUsers() {
......@@ -217,6 +216,8 @@ public class UserBean implements UserBeanLocal {
// add roles from events default role.
addRecursive(checkedRoles, event.getDefaultRole());
}
if (!u.isAnonymous()) {
// add roles from accountEvents of the user
addRecursive(checkedRoles, productbean.getRolesFromAccountEvents(u));
......@@ -230,6 +231,7 @@ public class UserBean implements UserBeanLocal {
}
}
}
}
}
// currentEventuser = u;
......
......@@ -32,4 +32,6 @@ public interface LectureBeanLocal {
public int userLectureSelectsLeft(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;
public enum LecturePermission implements IAppPermission {
VIEW,
PARTICIPATE,
MANAGE,
;
......
......@@ -15,6 +15,11 @@
<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:dataTable value="#{lectureUserView.lectureGroups}" var="lectureGroup">
<p:column headerText="#{i18n['lectureGroup.name']}">
......@@ -37,7 +42,7 @@
</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:column headerText="#{i18n['lecture.name']}" style="width:125px">
<h:outputText value="#{lecture.name}" />
......@@ -82,7 +87,7 @@
<h:outputText value="#{lecture.participantsCount}" /> / <h:outputText value="#{lecture.maxParticipantsCount}" />
</p:column>
<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.groupFull']}" rendered="#{lectureUserView.currentGroupFull}" />
</p:column>
......
......@@ -78,6 +78,7 @@
</h:form>
<h:form>
<h:panelGrid columns="2" columnClasses="topalign,topalign">
<h:panelGroup>
<table>
<ui:fragment rendered="#{!cc.attrs.creating}">
......@@ -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);" />
</h:panelGroup>
</h:form>
<h:form>
<h:panelGroup rendered="#{userView.showUserSelectableRoles and cc.attrs.showRoles}">
<h2>
<h:outputText value="#{i18n['user.userSelectableRoles']}:" />
</h2>
<h:selectManyCheckbox converter="#{roleConverter}" layout="pageDirection" id="roles" value="#{userView.usersRoles}">
<f:selectItems var="roleitem" itemLabel="#{roleitem.name}" value="#{roleDataView.userSelectableRoles}" />
</h:selectManyCheckbox>
<p:selectManyCheckbox converter="#{roleConverter}" layout="pageDirection" value="#{userView.userSelectableRoles}">
<f:selectItems value="#{roleDataView.userSelectableRoles}" var="roleitem" itemLabel="#{roleitem.name}" itemValue="#{roleitem}" />
</p:selectManyCheckbox>
<div>
<h:message rendered="#{roleView.canReadRoles}" for="roles" />
</div>
<h:commandButton action="#{userView.saveUserSelectableRoles}" value="#{i18n['user.saveUserSelectableRoles']}" />
</h:panelGroup>
</h:panelGrid>
</h:form>
......
......@@ -211,3 +211,10 @@ th, td {
vertical-align: top;
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
lecture.createLecture = Uuden tiedot
lecture.createNew = Luo uusi
lecture.description = Kuvaus
lecture.full = Kurssi t\u00E4ynn\u00E4
lecture.groupFull = Kiinti\u00F6 t\u00E4ynn\u00E4
lecture.hours = Kesto, tunteja
lecture.maxParticipantsCount = Max. osallistujia
......@@ -212,6 +213,8 @@ lecture.multicreate = Luo monta putkeen
lecture.name = Nimi
lecture.participants = Osallistujia
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.roles = Roolit
lecture.saveLecture = Muokkaa
......
......@@ -557,6 +557,7 @@ lecture.availableLectures = available lectures
lecture.createLecture = New lecture
lecture.createNew = Create new
lecture.description = Description
lecture.full = Lecture full
lecture.groupFull = Limit reached
lecture.hours = Duration hours
lecture.maxParticipantsCount = Max participants
......@@ -564,6 +565,8 @@ lecture.multicreate = Create multible in row
lecture.name = Name
lecture.participants = Participants
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.roles = Roles
lecture.saveLecture = Edit
......
......@@ -567,6 +567,7 @@ lecture.availableLectures = Aihealueen kurssit ja luennot
lecture.createLecture = Uuden tiedot
lecture.createNew = Luo uusi
lecture.description = Kuvaus
lecture.full = Kurssi t\u00E4ynn\u00E4
lecture.groupFull = Kiinti\u00F6 t\u00E4ynn\u00E4
lecture.hours = Kesto tunteina
lecture.maxParticipantsCount = Osallistujia enint.
......@@ -574,6 +575,8 @@ lecture.multicreate = Luo monta putkeen
lecture.name = Nimi
lecture.participants = Osallistujia
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.roles = Roolit
lecture.saveLecture = Muokkaa
......
......@@ -121,6 +121,7 @@ public class AuthView extends GenericCDIView {
HttpServletRequest request = getRequest();
if (request.getUserPrincipal() != null) {
logger.info("Principal not empty. need to logout first");
try {
......
......@@ -55,10 +55,7 @@ public class RoleDataView extends GenericCDIView {
return roles;
}
public ListDataModel<Role> getUserSelectableRoles() {
if (roles == null) {
roles = new ListDataModel<Role>(rolebean.listUserSelectableRoles());
}
return roles;
public List<Role> getUserSelectableRoles() {
return rolebean.listUserSelectableRoles();
}
}
......@@ -94,6 +94,9 @@ public class UserView extends GenericCDIView {
private transient CardTemplateBeanLocal cardBean;
private List<Role> usersRoles;
private List<Role> userSelectableRoles = null;
@EJB
private transient RoleBeanLocal rolebean;
@EJB
......@@ -188,6 +191,17 @@ public class UserView extends GenericCDIView {
return null;
}
public List<Role> getUserSelectableRoles() {
if (userSelectableRoles == null && user != null)
{
userSelectableRoles = rolebean.getRoles(getSelectedUser());
}
return userSelectableRoles;
}
public List<Role> getUsersRoles() {
if (usersRoles == null && user != null)
{
......@@ -327,6 +341,12 @@ public class UserView extends GenericCDIView {
}
public String saveUser() {
if(userSelectableRoles != null) {
saveUserSelectableRoles();
}
logger.info("Saving user");
if (permbean.getCurrentUser().equals(user) || permbean.hasPermission(UserPermission.MODIFY)) {
......@@ -482,6 +502,10 @@ public class UserView extends GenericCDIView {
this.usersRoles = usersRoles;
}
public void setUserSelectableRoles(List<Role> usersRoles) {
this.userSelectableRoles = usersRoles;
}
public String getUsername() {
return username;
}
......@@ -536,10 +560,11 @@ public class UserView extends GenericCDIView {
public String saveUserSelectableRoles()
{
rolebean.saveUserSelectableRoles(user, usersRoles);
usersRoles = null;
rolebean.saveUserSelectableRoles(user, userSelectableRoles);
userSelectableRoles = null;
return null;
}
......
......@@ -10,6 +10,7 @@ import javax.inject.Named;
import fi.codecrew.moya.beans.EventBeanLocal;
import fi.codecrew.moya.beans.LectureBeanLocal;
import fi.codecrew.moya.beans.UserBeanLocal;
import fi.codecrew.moya.enums.apps.LecturePermission;
import fi.codecrew.moya.model.Lecture;
import fi.codecrew.moya.model.LectureGroup;
......@@ -31,6 +32,7 @@ public class LectureUserView extends GenericCDIView {
@EJB
EventBeanLocal eventBean;
ListDataModel<LectureGroup> lectureGroups = null;
ListDataModel<Lecture> lectures = null;
ListDataModel<Lecture> participatedLectures = null;
......@@ -50,6 +52,10 @@ public class LectureUserView extends GenericCDIView {
return true;
}
public boolean isParticipateActive() {
return lectureBean.isUserCanParticipate(userView.getCurrentUser());
}
public ListDataModel<LectureGroup> getLectureGroups() {
lectureGroups = new ListDataModel<LectureGroup>(lectureBean.getLectureGroups());
......@@ -91,6 +97,9 @@ public class LectureUserView extends GenericCDIView {
}
public void participateCurrent() {
if(!isParticipateActive()) {
return;
}
if (lectures != null && lectures.isRowAvailable()) {
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!