Commit f943a05c by Tuukka Kivilahti

Merge branch 'accountpermission' into 'master'

Card state filter, and ui fixes

 * Added permission for user to view accountevents.
 * Added filtering by PrintedCard.state
 * Added login for template
 * Update eventusers card after purchase and role modifications.

Kattonu: @tkfftk
2 parents aa1d190a 8662ee4b
...@@ -108,7 +108,7 @@ public class MenuBean implements MenuBeanLocal { ...@@ -108,7 +108,7 @@ public class MenuBean implements MenuBeanLocal {
userkauppa.addPage(menuitemfacade.findOrCreate("/bill/list"), BillPermission.VIEW_OWN); userkauppa.addPage(menuitemfacade.findOrCreate("/bill/list"), BillPermission.VIEW_OWN);
userkauppa.addPage(menuitemfacade.findOrCreate("/bill/edit"), BillPermission.VIEW_OWN).setVisible(false); userkauppa.addPage(menuitemfacade.findOrCreate("/bill/edit"), BillPermission.VIEW_OWN).setVisible(false);
userkauppa.addPage(menuitemfacade.findOrCreate("/bill/showBill"), BillPermission.VIEW_OWN).setVisible(false); userkauppa.addPage(menuitemfacade.findOrCreate("/bill/showBill"), BillPermission.VIEW_OWN).setVisible(false);
userkauppa.addPage(menuitemfacade.findOrCreate("/user/accountEvents"), UserPermission.VIEW_ACCOUNTEVENTS); userkauppa.addPage(menuitemfacade.findOrCreate("/user/accountEvents"), UserPermission.VIEW_OWN_ACCOUNTEVENTS);
MenuNavigation userPlaces = usermenu.addPage(null, null); MenuNavigation userPlaces = usermenu.addPage(null, null);
userPlaces.setKey("topnavi.userplaces"); userPlaces.setKey("topnavi.userplaces");
......
...@@ -38,6 +38,7 @@ import fi.codecrew.moya.model.User; ...@@ -38,6 +38,7 @@ import fi.codecrew.moya.model.User;
UserPermission.S_MODIFY, UserPermission.S_MODIFY,
UserPermission.S_MODIFY_ACCOUNTEVENTS, UserPermission.S_MODIFY_ACCOUNTEVENTS,
UserPermission.S_VIEW_ACCOUNTEVENTS, UserPermission.S_VIEW_ACCOUNTEVENTS,
UserPermission.S_VIEW_OWN_ACCOUNTEVENTS,
UserPermission.S_VIEW_ALL, UserPermission.S_VIEW_ALL,
UserPermission.S_VIEW_SELF, UserPermission.S_VIEW_SELF,
UserPermission.S_WRITE_ROLES, UserPermission.S_WRITE_ROLES,
...@@ -53,7 +54,7 @@ import fi.codecrew.moya.model.User; ...@@ -53,7 +54,7 @@ import fi.codecrew.moya.model.User;
MapPermission.S_MANAGE_MAPS, MapPermission.S_MANAGE_MAPS,
MapPermission.S_MANAGE_OTHERS, MapPermission.S_MANAGE_OTHERS,
MapPermission.S_BUY_PLACES, MapPermission.S_BUY_PLACES,
// MapPermission.S_RELEASE_PLACE, // MapPermission.S_RELEASE_PLACE,
ShopPermission.S_LIST_ALL_PRODUCTS, ShopPermission.S_LIST_ALL_PRODUCTS,
ShopPermission.S_LIST_USERPRODUCTS, ShopPermission.S_LIST_USERPRODUCTS,
...@@ -165,7 +166,8 @@ public class PermissionBean implements PermissionBeanLocal { ...@@ -165,7 +166,8 @@ public class PermissionBean implements PermissionBeanLocal {
} }
/** /**
* Makes sure default user and public role exist and the user is member of the role. * Makes sure default user and public role exist and the user is member of
* the role.
*/ */
@Override @Override
public EventUser getAnonEventUser() { public EventUser getAnonEventUser() {
......
...@@ -372,12 +372,17 @@ public class PlaceBean implements PlaceBeanLocal { ...@@ -372,12 +372,17 @@ public class PlaceBean implements PlaceBeanLocal {
private static boolean isUserMember(EventUser user, Product prod) { private static boolean isUserMember(EventUser user, Product prod) {
boolean ret = false; boolean ret = false;
for (GroupMembership gm : user.getGroupMemberships()) { if (user.getGroupMemberships() != null)
if (prod.equals(gm.getPlaceReservation().getProduct())) { {
ret = true; for (GroupMembership gm : user.getGroupMemberships()) {
break;
if (gm.getPlaceReservation() != null && prod.equals(gm.getPlaceReservation().getProduct())) {
ret = true;
break;
}
} }
} }
return ret; return ret;
} }
......
...@@ -104,6 +104,9 @@ public class ProductBean implements ProductBeanLocal { ...@@ -104,6 +104,9 @@ public class ProductBean implements ProductBeanLocal {
@EJB @EJB
private DiscountBean discountBean; private DiscountBean discountBean;
@EJB
private CardTemplateBean cardTemplateBean;
private static final Logger logger = LoggerFactory.getLogger(ProductBean.class); private static final Logger logger = LoggerFactory.getLogger(ProductBean.class);
/** /**
...@@ -350,6 +353,7 @@ public class ProductBean implements ProductBeanLocal { ...@@ -350,6 +353,7 @@ public class ProductBean implements ProductBeanLocal {
public AccountEvent createAccountEvent(Product product, BigDecimal quantity, EventUser user) { public AccountEvent createAccountEvent(Product product, BigDecimal quantity, EventUser user) {
user = eventUserFacade.reload(user); user = eventUserFacade.reload(user);
AccountEvent ret = productPBean.createAccountEvent(product, quantity, user, Calendar.getInstance()); AccountEvent ret = productPBean.createAccountEvent(product, quantity, user, Calendar.getInstance());
cardTemplateBean.checkPrintedCard(user);
return ret; return ret;
} }
......
...@@ -55,8 +55,12 @@ public class RoleBean implements RoleBeanLocal { ...@@ -55,8 +55,12 @@ public class RoleBean implements RoleBeanLocal {
@EJB @EJB
private EventUserFacade eventuserfacade; private EventUserFacade eventuserfacade;
@EJB
private EventBeanLocal permbean; private EventBeanLocal permbean;
@EJB
private CardTemplateBean cardTemplateBean;
// VIEW_ALL pitää olla että voidaan hakea roolien perusteella. // VIEW_ALL pitää olla että voidaan hakea roolien perusteella.
@Override @Override
@RolesAllowed({ UserPermission.S_READ_ROLES, UserPermission.S_VIEW_ALL }) @RolesAllowed({ UserPermission.S_READ_ROLES, UserPermission.S_VIEW_ALL })
...@@ -185,6 +189,7 @@ public class RoleBean implements RoleBeanLocal { ...@@ -185,6 +189,7 @@ public class RoleBean implements RoleBeanLocal {
if (!role.getUsers().contains(eventuser)) { if (!role.getUsers().contains(eventuser)) {
role.getUsers().add(eventuser); role.getUsers().add(eventuser);
} }
cardTemplateBean.checkPrintedCard(eventuser);
return role; return role;
} }
...@@ -203,6 +208,8 @@ public class RoleBean implements RoleBeanLocal { ...@@ -203,6 +208,8 @@ public class RoleBean implements RoleBeanLocal {
ur.getUsers().remove(usr); ur.getUsers().remove(usr);
} }
} }
cardTemplateBean.checkPrintedCard(usr);
} }
@Override @Override
......
...@@ -731,20 +731,6 @@ public class UserBean implements UserBeanLocal { ...@@ -731,20 +731,6 @@ public class UserBean implements UserBeanLocal {
return userFacade.searchAllUsers(search); return userFacade.searchAllUsers(search);
} }
// @Override
// public SearchResult<User> getEventUsers(SearchQuery search) {
// if (search.getSearch() == null || search.getSearch().isEmpty())
// {
// throw new
// RuntimeException("You should be using getThisEventsUsers if not searching globally...");
// // return userFacade.searchEventUsers(search);
// } else {
// return userFacade.searchAllUsers(search);
// }
//
// }
//
@Override @Override
@RolesAllowed(UserPermission.S_VIEW_ALL) @RolesAllowed(UserPermission.S_VIEW_ALL)
public SearchResult<EventUser> getThisEventsUsers(UserSearchQuery searchQuery) { public SearchResult<EventUser> getThisEventsUsers(UserSearchQuery searchQuery) {
...@@ -761,9 +747,8 @@ public class UserBean implements UserBeanLocal { ...@@ -761,9 +747,8 @@ public class UserBean implements UserBeanLocal {
newSearchList.addAll(returnUsers.getResults()); newSearchList.addAll(returnUsers.getResults());
returnUsers = new SearchResult<EventUser>(newSearchList, (long) newSearchList.size()); returnUsers = new SearchResult<EventUser>(newSearchList, (long) newSearchList.size());
}
else if (searchQuery.isUsersWithUnusedCodes()) { } else if (searchQuery.isUsersWithUnusedCodes()) {
List<EventUser> newSearchList = new ArrayList<EventUser>(); List<EventUser> newSearchList = new ArrayList<EventUser>();
List<GroupMembership> groupMembers = new ArrayList<GroupMembership>(); List<GroupMembership> groupMembers = new ArrayList<GroupMembership>();
groupMembers = gmfacade.findAllWithoutUser(); groupMembers = gmfacade.findAllWithoutUser();
......
...@@ -23,6 +23,7 @@ import fi.codecrew.moya.enums.DatabaseHasCompare; ...@@ -23,6 +23,7 @@ import fi.codecrew.moya.enums.DatabaseHasCompare;
import fi.codecrew.moya.enums.DatabaseValueCompare; import fi.codecrew.moya.enums.DatabaseValueCompare;
import fi.codecrew.moya.facade.callbacks.EventLimiter; import fi.codecrew.moya.facade.callbacks.EventLimiter;
import fi.codecrew.moya.facade.callbacks.EventUserAccountSaldoPredicate; import fi.codecrew.moya.facade.callbacks.EventUserAccountSaldoPredicate;
import fi.codecrew.moya.facade.callbacks.EventUserCardStateFilter;
import fi.codecrew.moya.facade.callbacks.EventUserPlacegroupPredicate; import fi.codecrew.moya.facade.callbacks.EventUserPlacegroupPredicate;
import fi.codecrew.moya.facade.callbacks.EventUserRolefilter; import fi.codecrew.moya.facade.callbacks.EventUserRolefilter;
import fi.codecrew.moya.facade.callbacks.EventUserSearchPredicate; import fi.codecrew.moya.facade.callbacks.EventUserSearchPredicate;
...@@ -147,6 +148,11 @@ public class EventUserFacade extends IntegerPkGenericFacade<EventUser> { ...@@ -147,6 +148,11 @@ public class EventUserFacade extends IntegerPkGenericFacade<EventUser> {
if (query.getFilterRoles() != null && !query.getFilterRoles().isEmpty()) { if (query.getFilterRoles() != null && !query.getFilterRoles().isEmpty()) {
callbacks.add(new EventUserRolefilter(query.getFilterRoles())); callbacks.add(new EventUserRolefilter(query.getFilterRoles()));
} }
if (query.getHasCardState() != null && !query.getHasCardState().isEmpty()) {
callbacks.add(new EventUserCardStateFilter(query.getHasCardState()));
}
if (query.getAccountSaldo() != null && if (query.getAccountSaldo() != null &&
query.getAccountSaldoCompare() != null && query.getAccountSaldoCompare() != null &&
!DatabaseValueCompare.NONE.equals(query.getAccountSaldoCompare())) !DatabaseValueCompare.NONE.equals(query.getAccountSaldoCompare()))
......
package fi.codecrew.moya.facade.callbacks;
import java.util.List;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Path;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import javax.persistence.criteria.Subquery;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.codecrew.moya.enums.CardState;
import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.EventUser_;
import fi.codecrew.moya.model.PrintedCard;
import fi.codecrew.moya.model.PrintedCard_;
import fi.codecrew.moya.utilities.jpa.FacadeCallback;
public class EventUserCardStateFilter implements FacadeCallback<EventUser> {
private final List<CardState> states;
private static final Logger logger = LoggerFactory.getLogger(EventUserCardStateFilter.class);
public EventUserCardStateFilter(List<CardState> statelist) {
this.states = statelist;
}
public void exec(CriteriaBuilder cb, CriteriaQuery<?> cq, Path<EventUser> root, List<Predicate> predicates) {
if (states != null && !states.isEmpty())
{
for (CardState s : states)
{
logger.info("Statte {}, type {}", s, s.getClass());
}
logger.debug("Requiring states {}", states);
Path<Integer> rootId = root.get(EventUser_.id);
Subquery<Integer> subq = cq.subquery(Integer.class);
Root<PrintedCard> subroot = subq.from(PrintedCard.class);
subq.select(subroot.join(PrintedCard_.user).get(EventUser_.id));
subq.where(subroot.get(PrintedCard_.cardState).in(states));
predicates.add(rootId.in(subq));
}
}
}
...@@ -4,6 +4,7 @@ import java.math.BigDecimal; ...@@ -4,6 +4,7 @@ import java.math.BigDecimal;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import fi.codecrew.moya.enums.CardState;
import fi.codecrew.moya.enums.DatabaseHasCompare; import fi.codecrew.moya.enums.DatabaseHasCompare;
import fi.codecrew.moya.enums.DatabaseValueCompare; import fi.codecrew.moya.enums.DatabaseValueCompare;
import fi.codecrew.moya.model.Role; import fi.codecrew.moya.model.Role;
...@@ -18,6 +19,7 @@ public class UserSearchQuery extends SearchQuery { ...@@ -18,6 +19,7 @@ public class UserSearchQuery extends SearchQuery {
private boolean placeAssoc = false; private boolean placeAssoc = false;
private boolean usersWithUnusedCodes = false; private boolean usersWithUnusedCodes = false;
private DatabaseHasCompare requireImage = DatabaseHasCompare.NONE; private DatabaseHasCompare requireImage = DatabaseHasCompare.NONE;
private List<CardState> hasCardState = new ArrayList<>();
private BigDecimal accountSaldo; private BigDecimal accountSaldo;
private DatabaseValueCompare accountSaldoCompare = DatabaseValueCompare.NONE; private DatabaseValueCompare accountSaldoCompare = DatabaseValueCompare.NONE;
...@@ -26,6 +28,11 @@ public class UserSearchQuery extends SearchQuery { ...@@ -26,6 +28,11 @@ public class UserSearchQuery extends SearchQuery {
super(); super();
} }
public CardState[] getCardStates()
{
return CardState.values();
}
public UserSearchQuery(int page, int pagesize, String sort, String search, QuerySortOrder direction) { public UserSearchQuery(int page, int pagesize, String sort, String search, QuerySortOrder direction) {
super(page, pagesize, sort, search, direction); super(page, pagesize, sort, search, direction);
} }
...@@ -91,4 +98,12 @@ public class UserSearchQuery extends SearchQuery { ...@@ -91,4 +98,12 @@ public class UserSearchQuery extends SearchQuery {
this.requireImage = requireImage; this.requireImage = requireImage;
} }
public List<CardState> getHasCardState() {
return hasCardState;
}
public void setHasCardState(List<CardState> hasCardState) {
this.hasCardState = hasCardState;
}
} }
...@@ -12,6 +12,7 @@ public enum UserPermission implements IAppPermission { ...@@ -12,6 +12,7 @@ public enum UserPermission implements IAppPermission {
READ_ROLES, // ("View all roles."), READ_ROLES, // ("View all roles."),
WRITE_ROLES, // ("Modify roles"), WRITE_ROLES, // ("Modify roles"),
VIEW_ACCOUNTEVENTS, // ("Show other users account events"), VIEW_ACCOUNTEVENTS, // ("Show other users account events"),
VIEW_OWN_ACCOUNTEVENTS, // ("Show other users account events"),
MODIFY_ACCOUNTEVENTS, // ("Modify Account events"), MODIFY_ACCOUNTEVENTS, // ("Modify Account events"),
ANYUSER, // ("All users have this anyways"), ANYUSER, // ("All users have this anyways"),
MANAGE_HTTP_SESSION, // ("Manage http sessions"), MANAGE_HTTP_SESSION, // ("Manage http sessions"),
...@@ -32,6 +33,7 @@ public enum UserPermission implements IAppPermission { ...@@ -32,6 +33,7 @@ public enum UserPermission implements IAppPermission {
public static final String S_READ_ROLES = "USER/READ_ROLES"; public static final String S_READ_ROLES = "USER/READ_ROLES";
public static final String S_WRITE_ROLES = "USER/WRITE_ROLES"; public static final String S_WRITE_ROLES = "USER/WRITE_ROLES";
public static final String S_VIEW_ACCOUNTEVENTS = "USER/VIEW_ACCOUNTEVENTS"; public static final String S_VIEW_ACCOUNTEVENTS = "USER/VIEW_ACCOUNTEVENTS";
public static final String S_VIEW_OWN_ACCOUNTEVENTS = "USER/VIEW_OWN_ACCOUNTEVENTS";
public static final String S_MODIFY_ACCOUNTEVENTS = "USER/MODIFY_ACCOUNTEVENTS"; public static final String S_MODIFY_ACCOUNTEVENTS = "USER/MODIFY_ACCOUNTEVENTS";
public static final String S_ANYUSER = "USER/ANYUSER"; public static final String S_ANYUSER = "USER/ANYUSER";
public static final String S_MANAGE_HTTP_SESSION = "USER/MANAGE_HTTP_SESSION"; public static final String S_MANAGE_HTTP_SESSION = "USER/MANAGE_HTTP_SESSION";
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
<p:dataTable styleClass="bordertable" id="usertable" value="#{userSearchView.eventuserModel}" rows="20" paginator="true" lazy="true" var="user"> <p:dataTable styleClass="bordertable" id="usertable" value="#{userSearchView.eventuserModel}" rows="20" paginator="true" lazy="true" var="user">
<p:column headerText="#{i18n['user.nick']}" sortBy="nick"> <p:column headerText="#{i18n['user.nick']}" sortBy="#{user.nick}">
<h:outputText styleClass="hoverable" value="#{(empty user.nick)?'----':user.nick}" /> <h:outputText styleClass="hoverable" value="#{(empty user.nick)?'----':user.nick}" />
<div class="userdata_popup"> <div class="userdata_popup">
<h:panelGrid columns="3"> <h:panelGrid columns="3">
...@@ -45,16 +45,16 @@ ...@@ -45,16 +45,16 @@
</div> </div>
</p:column> </p:column>
<p:column sortBy="login" headerText="#{i18n['user.login']}"> <p:column sortBy="#{user.login}" headerText="#{i18n['user.login']}">
<h:outputText value="#{user.login}" /> <h:outputText value="#{user.login}" />
</p:column> </p:column>
<p:column headerText="#{i18n['user.firstNames']}" sortBy="firstnames"> <p:column headerText="#{i18n['user.firstNames']}" sortBy="#{user.firstnames}">
<h:outputText value="#{user.firstnames}" /> <h:outputText value="#{user.firstnames}" />
</p:column> </p:column>
<p:column headerText="#{i18n['user.lastName']}" sortBy="lastname"> <p:column headerText="#{i18n['user.lastName']}" sortBy="#{user.lastname}">
<h:outputText value="#{user.lastname}" /> <h:outputText value="#{user.lastname}" />
</p:column> </p:column>
<p:column headerText="#{i18n['user.email']}" sortBy="email"> <p:column headerText="#{i18n['user.email']}" sortBy="{user.email}">
<h:outputText value="#{user.email}" /> <h:outputText value="#{user.email}" />
</p:column> </p:column>
......
...@@ -11,20 +11,20 @@ ...@@ -11,20 +11,20 @@
<p:dataTable id="user" value="#{userSearchView.userModel}" rows="20" var="wra" paginator="true" lazy="true"> <p:dataTable id="user" value="#{userSearchView.userModel}" rows="20" var="wra" paginator="true" lazy="true">
<p:column sortBy="nick" headerText="#{i18n['user.nick']}"> <p:column sortBy="#{wra.user.nick}" headerText="#{i18n['user.nick']}">
<h:outputText value="#{(empty wra.user.nick)?'----':wra.user.nick}" /> <h:outputText value="#{(empty wra.user.nick)?'----':wra.user.nick}" />
</p:column> </p:column>
<p:column sortBy="login" headerText="#{i18n['user.login']}"> <p:column sortBy="#{wra.user.login}" headerText="#{i18n['user.login']}">
<h:outputText value="#{wra.user.login}" /> <h:outputText value="#{wra.user.login}" />
</p:column> </p:column>
<p:column headerText="#{i18n['user.firstNames']}" sortBy="firstnames"> <p:column headerText="#{i18n['user.firstNames']}" sortBy="#{wra.user.firstnames}">
<h:outputText value="#{wra.user.firstnames}" /> <h:outputText value="#{wra.user.firstnames}" />
</p:column> </p:column>
<p:column headerText="#{i18n['user.lastName']}" sortBy="lastname"> <p:column headerText="#{i18n['user.lastName']}" sortBy="#{wra.user.lastname}">
<h:outputText value="#{wra.user.lastname}" /> <h:outputText value="#{wra.user.lastname}" />
</p:column> </p:column>
<p:column headerText="#{i18n['user.email']}" sortBy="email"> <p:column headerText="#{i18n['user.email']}" sortBy="#{wra.user.email}">
<h:outputText value="#{wra.user.email}" /> <h:outputText value="#{wra.user.email}" />
</p:column> </p:column>
......
...@@ -149,6 +149,10 @@ ...@@ -149,6 +149,10 @@
<h:outputText value="#{i18n['template.loggedInAs']}" /> <h:outputText value="#{i18n['template.loggedInAs']}" />
<br /> <br />
<b><h:outputText value="#{sessionHandler.currentUser.nick}" /></b> <b><h:outputText value="#{sessionHandler.currentUser.nick}" /></b>
<br />
<h:link outcome="/auth/logout">
<h:outputText value="#{i18n['login.logout']}" />
</h:link>
</ui:fragment> </ui:fragment>
<ui:fragment rendered="#{!sessionHandler.loggedIn}"> <ui:fragment rendered="#{!sessionHandler.loggedIn}">
<div style="text-align: left; padding: 0.7em;"> <div style="text-align: left; padding: 0.7em;">
......
...@@ -24,26 +24,40 @@ ...@@ -24,26 +24,40 @@
<h:panelGrid columns="2"> <h:panelGrid columns="2">
<h:panelGroup> <h:panelGroup>
<a onclick="$('#advancedSearch').show(); $(this).hide();"><h:outputText value="#{i18n['userlist.showAdvancedSearch']}" /></a> <a onclick="$('#advancedSearch').show(); $(this).hide();"><h:outputText value="#{i18n['userlist.showAdvancedSearch']}" /></a>
<span id="advancedSearch" style="display: none;"> <h:selectBooleanCheckbox id="placeassoc" value="#{userSearchView.searchQuery.placeAssoc}" /> <h:outputLabel for="placeassoc" <div id="advancedSearch" style="display: none;">
value="#{i18n['userlist.placeassoc']}" /> <br /> <h:outputLabel for="saldofilter" value="#{i18n['userlist.saldofilter']}" /> <h:selectOneMenu <h:selectBooleanCheckbox id="placeassoc" value="#{userSearchView.searchQuery.placeAssoc}" />
value="#{userSearchView.searchQuery.accountSaldoCompare}"> <h:outputLabel for="placeassoc" value="#{i18n['userlist.placeassoc']}" />
<br />
<h:outputLabel for="saldofilter" value="#{i18n['userlist.saldofilter']}" />
<h:selectOneMenu value="#{userSearchView.searchQuery.accountSaldoCompare}">
<f:selectItems value="#{userSearchView.searchQuery.accountCompareValues}" /> <f:selectItems value="#{userSearchView.searchQuery.accountCompareValues}" />
</h:selectOneMenu> <h:inputText value="#{userSearchView.searchQuery.accountSaldo}">
</h:selectOneMenu>
<h:inputText value="#{userSearchView.searchQuery.accountSaldo}">
<f:convertNumber minFractionDigits="0" maxFractionDigits="2" /> <f:convertNumber minFractionDigits="0" maxFractionDigits="2" />
</h:inputText> <br /> <h:outputLabel for="rolefilter" value="#{i18n['userlist.rolefilter']}" /> <h:selectManyCheckbox layout="pageDirection" styleClass="nowrap" id="rolefilter" </h:inputText>
value="#{userSearchView.searchQuery.filterRoles}" converter="#{roleConverter}">
<br />
<h:outputLabel for="rolefilter" value="#{i18n['userlist.rolefilter']}" />
<h:selectManyCheckbox layout="pageDirection" styleClass="nowrap" id="rolefilter" value="#{userSearchView.searchQuery.filterRoles}" converter="#{roleConverter}">
<f:selectItems value="#{roleDataView.roles}" var="r" itemLabel="#{r.name}" /> <f:selectItems value="#{roleDataView.roles}" var="r" itemLabel="#{r.name}" />
</h:selectManyCheckbox> </h:selectManyCheckbox>
<h:outputLabel for="cardstatusfilter" value="#{i18n['userlist.cardfilter']}" />
<h:selectManyCheckbox layout="pageDirection" styleClass="nowrap" id="cardfilter" value="#{userSearchView.searchQuery.hasCardState}" converter="#{cardStateConverter}">
<f:selectItems value="#{userSearchView.searchQuery.cardStates}" var="r" itemLabel="#{r}" />
</h:selectManyCheckbox>
</span> </div>
<br /> <br />
<h:selectBooleanCheckbox id="onlythisevent" value="#{userSearchView.searchQuery.onlyThisEvent}" /> <h:selectBooleanCheckbox id="onlythisevent" value="#{userSearchView.searchQuery.onlyThisEvent}" />
<h:outputLabel for="onlythisevent" value="#{i18n['userlist.onlythisevent']}" /> <h:outputLabel for="onlythisevent" value="#{i18n['userlist.onlythisevent']}" />
<br /> <br />
<h:selectBooleanCheckbox id="userswithunusedcodes" value="#{userSearchView.searchQuery.usersWithUnusedCodes}" /> <h:selectBooleanCheckbox id="userswithunusedcodes" value="#{userSearchView.searchQuery.usersWithUnusedCodes}" />
<h:outputLabel for="userswithunusedcodes" value="#{i18n['userlist.usersWithUnusedCodes']}" /> <h:outputLabel for="userswithunusedcodes" value="#{i18n['userlist.usersWithUnusedCodes']}" />
<br /> <br />
......
...@@ -100,6 +100,7 @@ bortalApplication.user.READ_ORGROLES = View organization roles ...@@ -100,6 +100,7 @@ bortalApplication.user.READ_ORGROLES = View organization roles
bortalApplication.user.READ_ROLES = View all roles. bortalApplication.user.READ_ROLES = View all roles.
bortalApplication.user.VIEW_ACCOUNTEVENTS = Show other users account events bortalApplication.user.VIEW_ACCOUNTEVENTS = Show other users account events
bortalApplication.user.VIEW_ALL = View all users bortalApplication.user.VIEW_ALL = View all users
bortalApplication.user.VIEW_OWN_ACCOUNTEVENTS = View own accountevent
bortalApplication.user.VIEW_SELF = Can view self bortalApplication.user.VIEW_SELF = Can view self
bortalApplication.user.VITUTTAAKO = Can send feedback bortalApplication.user.VITUTTAAKO = Can send feedback
bortalApplication.user.WRITE_ORGROLES = Modify organization roles bortalApplication.user.WRITE_ORGROLES = Modify organization roles
......
...@@ -183,6 +183,7 @@ bortalApplication.user.READ_ORGROLES = View organization roles ...@@ -183,6 +183,7 @@ bortalApplication.user.READ_ORGROLES = View organization roles
bortalApplication.user.READ_ROLES = View all roles. bortalApplication.user.READ_ROLES = View all roles.
bortalApplication.user.VIEW_ACCOUNTEVENTS = Show other users account events bortalApplication.user.VIEW_ACCOUNTEVENTS = Show other users account events
bortalApplication.user.VIEW_ALL = View all users bortalApplication.user.VIEW_ALL = View all users
bortalApplication.user.VIEW_OWN_ACCOUNTEVENTS = View own accountevent
bortalApplication.user.VIEW_SELF = Can view self bortalApplication.user.VIEW_SELF = Can view self
bortalApplication.user.VITUTTAAKO = Can send feedback bortalApplication.user.VITUTTAAKO = Can send feedback
bortalApplication.user.WRITE_ORGROLES = Modify organization roles bortalApplication.user.WRITE_ORGROLES = Modify organization roles
......
...@@ -185,6 +185,7 @@ bortalApplication.user.READ_ORGROLES = Saa n\u00E4hd\u00E4 j\u00E4r ...@@ -185,6 +185,7 @@ bortalApplication.user.READ_ORGROLES = Saa n\u00E4hd\u00E4 j\u00E4r
bortalApplication.user.READ_ROLES = Saa n\u00E4hd\u00E4 kaikki roolit bortalApplication.user.READ_ROLES = Saa n\u00E4hd\u00E4 kaikki roolit
bortalApplication.user.VIEW_ACCOUNTEVENTS = Saa n\u00E4hd\u00E4 muiden k\u00E4ytt\u00E4jien tapahtumat bortalApplication.user.VIEW_ACCOUNTEVENTS = Saa n\u00E4hd\u00E4 muiden k\u00E4ytt\u00E4jien tapahtumat
bortalApplication.user.VIEW_ALL = Saa n\u00E4hd\u00E4 kaikki k\u00E4ytt\u00E4j\u00E4t bortalApplication.user.VIEW_ALL = Saa n\u00E4hd\u00E4 kaikki k\u00E4ytt\u00E4j\u00E4t
bortalApplication.user.VIEW_OWN_ACCOUNTEVENTS = Tarkastele omia tilitapahtumia
bortalApplication.user.VIEW_SELF = Voi katsella omaa tunnusta bortalApplication.user.VIEW_SELF = Voi katsella omaa tunnusta
bortalApplication.user.VITUTTAAKO = Saa avautua bortalApplication.user.VITUTTAAKO = Saa avautua
bortalApplication.user.WRITE_ORGROLES = Saa muokata organisaation rooleja bortalApplication.user.WRITE_ORGROLES = Saa muokata organisaation rooleja
......
...@@ -33,7 +33,7 @@ public class AuthView extends GenericCDIView { ...@@ -33,7 +33,7 @@ public class AuthView extends GenericCDIView {
@Inject @Inject
private NavigationHandler navihandler; private NavigationHandler navihandler;
@EJB @EJB
private transient BootstrapBeanLocal bootStrapBean; private transient BootstrapBeanLocal bootStrapBean;
...@@ -53,13 +53,12 @@ public class AuthView extends GenericCDIView { ...@@ -53,13 +53,12 @@ public class AuthView extends GenericCDIView {
logger.warn("Error executing logout", e); logger.warn("Error executing logout", e);
} }
} }
req.getSession().invalidate(); req.getSession().invalidate();
navihandler.forward("/frontpage"); navihandler.forward("/frontpage?faces-redirect=true");
} }
public String doLogout() { public String doLogout() {
HttpServletRequest req = getRequest(); HttpServletRequest req = getRequest();
if (permbean.isLoggedIn()) { if (permbean.isLoggedIn()) {
...@@ -69,28 +68,28 @@ public class AuthView extends GenericCDIView { ...@@ -69,28 +68,28 @@ public class AuthView extends GenericCDIView {
logger.warn("Error executing logout", e); logger.warn("Error executing logout", e);
} }
} }
req.getSession().invalidate(); req.getSession().invalidate();
navihandler.forward("/frontpage"); navihandler.forward("/frontpage");
return "/frontpage"; return "/frontpage";
} }
public void executeLogin() { public void executeLogin() {
executeLogin(null); executeLogin(null);
} }
public void executeLogin(String onError) { public void executeLogin(String onError) {
if(onError == null) if (onError == null)
onError = "/auth/loginError"; onError = "/auth/loginError";
doLogin(onError); doLogin(onError);
} }
private void doLogin(String onError) { private void doLogin(String onError) {
bootStrapBean.saneDefaults(); bootStrapBean.saneDefaults();
if (login == null || password == null || login.isEmpty() || password.isEmpty()) { if (login == null || password == null || login.isEmpty() || password.isEmpty()) {
return; return;
} }
...@@ -127,15 +126,15 @@ public class AuthView extends GenericCDIView { ...@@ -127,15 +126,15 @@ public class AuthView extends GenericCDIView {
} }
} }
return; return;
} }
public void executeAdduserViewLogin() { public void executeAdduserViewLogin() {
navihandler.saveNavigation("/admin/adduser/update"); navihandler.saveNavigation("/admin/adduser/update");
doLogin("/admin/adduser/login"); doLogin("/admin/adduser/login");
} }
public String executeLoginAction() { public String executeLoginAction() {
executeLogin(); executeLogin();
return null; return null;
......
package fi.codecrew.moya.web.converter;
import javax.ejb.EJB;
import javax.enterprise.context.RequestScoped;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.inject.Named;
import fi.codecrew.moya.beans.RoleBeanLocal;
import fi.codecrew.moya.enums.CardState;
@Named()
@RequestScoped
public class CardStateConverter implements Converter {
@EJB
private RoleBeanLocal rolebean;
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
return CardState.valueOf(value);
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
return value.toString();
}
}
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!