Commit 77bd09e1 by Tuomas Riihimäki

Lisätty:

  - LanEventDomain
  - Facadesäätöä
  - Englanninkielistä käännöstä.
  - Poistettu PermissionDeniedException turhana ja huonona designpatternina..
1 parent 81bfd6d0
Showing with 1469 additions and 1195 deletions
......@@ -91,7 +91,7 @@ public class AccountEventBean implements AccountEventBeanLocal {
*/
@Override
@RolesAllowed(ShopPermission.S_SHOP_PRODUCTS)
public List<AccountEvent> shopCash(User shoppingUser, Map<Product, BigDecimal> shopMap, boolean buyInstant) throws PermissionDeniedException {
public List<AccountEvent> shopCash(User shoppingUser, Map<Product, BigDecimal> shopMap, boolean buyInstant) {
logger.debug("Shoping cash. buyinstant {}", buyInstant);
User seller = permbean.getCurrentUser();
shoppingUser = userbean.findById(shoppingUser.getId());
......
......@@ -9,6 +9,7 @@ import java.util.List;
import javax.annotation.security.DeclareRoles;
import javax.annotation.security.RolesAllowed;
import javax.ejb.EJB;
import javax.ejb.EJBAccessException;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
......@@ -20,6 +21,7 @@ import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.beanutil.PdfPrinter;
import fi.insomnia.bortal.bortal.views.BillSummary;
import fi.insomnia.bortal.enums.apps.BillPermission;
import fi.insomnia.bortal.enums.apps.SpecialPermission;
import fi.insomnia.bortal.facade.BillFacade;
import fi.insomnia.bortal.facade.BillLineFacade;
import fi.insomnia.bortal.facade.UserFacade;
......@@ -37,7 +39,13 @@ import fi.insomnia.bortal.utilities.I18n;
*/
@Stateless
@LocalBean
@DeclareRoles({ "USER", "BILL/WRITE_ALL", "BILL/READ_ALL", "BILL/CREATE_BILL" })
@DeclareRoles({
BillPermission.S_CREATE_BILL,
BillPermission.S_READ_ALL,
BillPermission.S_VIEW_OWN,
BillPermission.S_WRITE_ALL,
SpecialPermission.S_USER
})
public class BillBean implements BillBeanLocal {
private static final Logger logger = LoggerFactory.getLogger(BillBean.class);
......@@ -66,6 +74,9 @@ public class BillBean implements BillBeanLocal {
@EJB
private UtilBean utilbean;
@EJB
private LoggingBeanLocal loggingBean;
/**
* Default constructor.
*/
......@@ -74,7 +85,7 @@ public class BillBean implements BillBeanLocal {
}
@Override
@RolesAllowed("USER")
@RolesAllowed(BillPermission.S_VIEW_OWN)
public Bill findById(int id) {
LanEvent event = eventbean.getCurrentEvent();
if (id <= 0) {
......@@ -180,14 +191,14 @@ public class BillBean implements BillBeanLocal {
// }
@Override
@RolesAllowed("BILL/READ_ALL")
@RolesAllowed(BillPermission.S_READ_ALL)
public List<Bill> findAll() {
return billFacade.findAll(eventbean.getCurrentEvent());
}
@Override
@RolesAllowed("BILL/READ_ALL")
@RolesAllowed(BillPermission.S_READ_ALL)
public Collection<BillSummary> getBillLineSummary() {
Collection<BillSummary> ret = billLineFacade.getLineSummary(eventbean.getCurrentEvent());
......@@ -195,7 +206,7 @@ public class BillBean implements BillBeanLocal {
}
@Override
@RolesAllowed("BILL/WRITE_ALL")
@RolesAllowed(BillPermission.S_WRITE_ALL)
public void markPaid(Bill bill, Calendar when) {
Product creditproduct = productBean.findCreditProduct();
......@@ -233,10 +244,11 @@ public class BillBean implements BillBeanLocal {
}
@Override
@RolesAllowed("BILL/CREATE_BILL")
public void createBill(Bill bill) throws PermissionDeniedException {
if (!permbean.isCurrentUser(bill.getUser())) {
permbean.fatalPermission(BillPermission.WRITE_ALL, "Not enought rights to create bill for user ", bill.getUser());
@RolesAllowed({ BillPermission.S_CREATE_BILL, BillPermission.S_WRITE_ALL })
public void createBill(Bill bill) {
if (!permbean.hasPermission(BillPermission.WRITE_ALL) || !permbean.isCurrentUser(bill.getUser())) {
loggingBean.logMessage(SecurityLogType.permissionDenied, permbean.getCurrentUser(), "Not enought rights to create bill for user ");
throw new EJBAccessException("Could not create bill for another user");
}
User user = userfacade.find(bill.getUser().getId());
if (user.getBills() == null) {
......
......@@ -87,7 +87,7 @@ public class CardTemplateBean implements CardTemplateBeanLocal {
}
@Override
public void checkAllUsersCardRights() throws PermissionDeniedException {
public void checkAllUsersCardRights() {
for (User u : userbean.getUsers()) {
checkPrintedCard(u);
}
......@@ -99,7 +99,7 @@ public class CardTemplateBean implements CardTemplateBeanLocal {
* @throws PermissionDeniedException
*/
@Override
public PrintedCard checkPrintedCard(User user) throws PermissionDeniedException {
public PrintedCard checkPrintedCard(User user) {
logger.info("Checking printed card");
user = userfacade.find(user.getId());
......@@ -166,7 +166,7 @@ public class CardTemplateBean implements CardTemplateBeanLocal {
}
@RolesAllowed(UserPermission.S_WRITE_ROLES)
public CardTemplate getUsersCardtype(User user) throws PermissionDeniedException {
public CardTemplate getUsersCardtype(User user) {
List<Role> roles = userbean.findUsersRoles(user);
CardTemplate greatestTemplate = null;
......@@ -182,7 +182,7 @@ public class CardTemplateBean implements CardTemplateBeanLocal {
}
@Override
public PrintedCard setRfidUid(String tag, User user) throws PermissionDeniedException {
public PrintedCard setRfidUid(String tag, User user) {
PrintedCard ct = checkPrintedCard(user);
return setRfidUid(tag, ct);
}
......
package fi.insomnia.bortal.beans;
import javax.annotation.security.RolesAllowed;
import javax.ejb.EJB;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
......@@ -10,10 +11,13 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.clientutils.BortalLocalContextHolder;
import fi.insomnia.bortal.enums.apps.SpecialPermission;
import fi.insomnia.bortal.facade.EventFacade;
import fi.insomnia.bortal.facade.EventOrganiserFacade;
import fi.insomnia.bortal.facade.LanEventDomainFacade;
import fi.insomnia.bortal.model.EventOrganiser;
import fi.insomnia.bortal.model.LanEvent;
import fi.insomnia.bortal.model.LanEventDomain;
import fi.insomnia.bortal.model.User;
/**
......@@ -26,6 +30,7 @@ public class EventBean implements EventBeanLocal {
private static final String DEFAULT_EVENT_NAME = "Default event";
private static final String DEFAULT_ORGANISATION_NAME = "Default organisation";
private static final Logger logger = LoggerFactory.getLogger(EventBean.class);
private static final String DEFAULT_EVENT_DOMAIN = null;
@EJB
private EventFacade eventFacade;
......@@ -38,6 +43,8 @@ public class EventBean implements EventBeanLocal {
private LoggingBeanLocal loggingbean;
@EJB
private PermissionBeanLocal permbean;
@EJB
private LanEventDomainFacade domainfacade;
@Override
public LanEvent getEventByHostname(String hostname) {
......@@ -80,28 +87,49 @@ public class EventBean implements EventBeanLocal {
@Override
public LanEvent getCurrentEvent() {
String hostname = BortalLocalContextHolder.getHostname();
// logger.info("Current hostname from context: {}", hostname);
LanEvent ret = null;
if (BortalLocalContextHolder.getHostnameId() != null) {
ret = eventFacade.find(BortalLocalContextHolder.getHostnameId());
if (ret != null) {
return ret;
}
}
if (hostname == null || hostname.isEmpty()) {
hostname = DEFAULT_EVENT_DOMAIN;
}
LanEventDomain domain = domainfacade.findByDomain(hostname);
LanEvent ret = getEventByHostname(BortalLocalContextHolder.getHostname());
if (domain != null)
{
ret = domain.getEvent();
}
if (ret == null) {
ret = this.findOrCreateDefaultEvent();
}
BortalLocalContextHolder.setHostnameId(ret.getId());
return ret;
}
@Override
public LanEvent mergeChanges(LanEvent event) throws PermissionDeniedException {
// TODO: Hmm..
if (!permbean.isCurrentUser(event.getOrganiser().getAdmin()) && !permbean.getCurrentUser().isSuperadmin()) {
throw new PermissionDeniedException(loggingbean, permbean.getCurrentUser(), "User tried to merge event: " + event + " without being admin of that group");
}
@RolesAllowed({ SpecialPermission.S_SUPERADMIN, SpecialPermission.S_ORGANISATION_ADMIN })
public LanEvent mergeChanges(LanEvent event) {
return eventFacade.merge(event);
}
@Override
public void create(LanEvent event) throws PermissionDeniedException {
// TODO: Hmm..
if (!permbean.isCurrentUser(event.getOrganiser().getAdmin()) && !permbean.getCurrentUser().isSuperadmin()) {
throw new PermissionDeniedException(loggingbean, permbean.getCurrentUser(), "User tried to create a new event for organiser " + event.getOrganiser() + " without being admin of that group");
@RolesAllowed({ SpecialPermission.S_SUPERADMIN, SpecialPermission.S_ORGANISATION_ADMIN })
public void create(LanEvent event) {
}
eventFacade.create(event);
}
......
......@@ -8,6 +8,7 @@ import javax.ejb.Stateless;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.enums.apps.MapPermission;
import fi.insomnia.bortal.facade.EventMapFacade;
import fi.insomnia.bortal.model.EventMap;
import fi.insomnia.bortal.model.LanEvent;
......@@ -16,7 +17,7 @@ import fi.insomnia.bortal.model.LanEvent;
* Session Bean implementation class EventMapBean
*/
@Stateless
@DeclareRoles({ "MAP/MANAGE_MAPS" })
@DeclareRoles({ MapPermission.S_MANAGE_MAPS })
public class EventMapBean implements EventMapBeanLocal {
@EJB
......@@ -28,15 +29,15 @@ public class EventMapBean implements EventMapBeanLocal {
private static final Logger logger = LoggerFactory.getLogger(EventMapBean.class);
@Override
@RolesAllowed("MAP/MANAGE_MAPS")
@RolesAllowed(MapPermission.S_MANAGE_MAPS)
public EventMap saveMap(EventMap eventmap) {
return eventmapfacade.merge(eventmap);
}
@Override
@RolesAllowed("MAP/MANAGE_MAPS")
public EventMap create(String mapname) throws PermissionDeniedException {
@RolesAllowed(MapPermission.S_MANAGE_MAPS)
public EventMap create(String mapname) {
EventMap ret = new EventMap(eventbean.getCurrentEvent());
ret.setName(mapname);
LanEvent event = eventbean.getCurrentEvent();
......@@ -47,7 +48,7 @@ public class EventMapBean implements EventMapBeanLocal {
}
@Override
@RolesAllowed("MAP/MANAGE_MAPS")
@RolesAllowed(MapPermission.S_MANAGE_MAPS)
public void sendImage(int destId, byte[] imagedata) {
EventMap map = eventmapfacade.find(destId);
logger.debug("Setting mapdata for map {}", map);
......@@ -58,7 +59,7 @@ public class EventMapBean implements EventMapBeanLocal {
}
@Override
@RolesAllowed("MAP/MANAGE_MAPS")
@RolesAllowed(MapPermission.S_MANAGE_MAPS)
public EventMap find(Integer mapId) {
return eventmapfacade.find(mapId);
}
......
......@@ -17,9 +17,9 @@ import fi.insomnia.bortal.enums.apps.ContentPermission;
import fi.insomnia.bortal.enums.apps.IAppPermission;
import fi.insomnia.bortal.enums.apps.MapPermission;
import fi.insomnia.bortal.enums.apps.PollPermission;
import fi.insomnia.bortal.enums.apps.TerminalPermission;
import fi.insomnia.bortal.enums.apps.ShopPermission;
import fi.insomnia.bortal.enums.apps.SpecialPermission;
import fi.insomnia.bortal.enums.apps.TerminalPermission;
import fi.insomnia.bortal.enums.apps.UserPermission;
import fi.insomnia.bortal.facade.UserFacade;
import fi.insomnia.bortal.model.User;
......@@ -66,7 +66,7 @@ import fi.insomnia.bortal.model.User;
SpecialPermission.S_SUPERADMIN,
SpecialPermission.S_USER,
SpecialPermission.S_ANONYMOUS,
TerminalPermission.S_TERMINAL,
TerminalPermission.S_CASHIER_TERMINAL,
TerminalPermission.S_CUSTOMER_TERMINAL,
......@@ -102,32 +102,36 @@ public class PermissionBean implements PermissionBeanLocal {
}
@Override
public boolean fatalPermission(IAppPermission permission, Object... failmessage) throws PermissionDeniedException {
boolean ret = hasPermission(permission);
if (!ret) {
StringBuilder message = new StringBuilder().append(" permission: ").append(permission);
if (failmessage == null || failmessage.length == 0) {
message.append(" MSG: SessionHandler mbean permission exception: Permission: ")
.append(permission);
} else {
for (Object part : failmessage) {
message.append(part == null ? "NULL" : part.toString());
}
}
// throw new SecurityException("Foobar");
throw new PermissionDeniedException(loggingbean, getCurrentUser(), message.toString());
}
return true;
}
@Override
public void fatalNotLoggedIn() throws PermissionDeniedException {
if (!isLoggedIn()) {
throw new PermissionDeniedException(loggingbean, getCurrentUser(), "User is not logged in!");
}
}
// @Override
// public boolean fatalPermission(IAppPermission permission, Object...
// failmessage) {
// boolean ret = hasPermission(permission);
// if (!ret) {
// StringBuilder message = new
// StringBuilder().append(" permission: ").append(permission);
// if (failmessage == null || failmessage.length == 0) {
// message.append(" MSG: SessionHandler mbean permission exception: Permission: ")
// .append(permission);
// } else {
// for (Object part : failmessage) {
// message.append(part == null ? "NULL" : part.toString());
// }
// }
// // throw new SecurityException("Foobar");
//
// throw new PermissionDeniedException(loggingbean, getCurrentUser(),
// message.toString());
// }
// return true;
// }
//
// @Override
// public void fatalNotLoggedIn() throws PermissionDeniedException {
// if (!isLoggedIn()) {
// throw new PermissionDeniedException(loggingbean, getCurrentUser(),
// "User is not logged in!");
// }
// }
@Override
public boolean isCurrentUser(User user) {
......@@ -168,31 +172,31 @@ public class PermissionBean implements PermissionBeanLocal {
}
return defaultUser;
}
public String getPrincipal() {
Principal principal = context.getCallerPrincipal();
logger.debug("Principal: {}", principal);
String principalName = principal.getName();
logger.debug("Principal is {}", principalName);
return principalName;
}
@Override
public String getCommonName() throws IllegalStateException {
String dn = context.getCallerPrincipal().getName();
String[] parts = dn.split(",");
for (String part : parts) {
if (part.trim().toUpperCase().startsWith("CN=")) {
String cn = part.substring("CN=".length());
return cn;
}
}
throw new IllegalStateException("Current security principal has no CN");
}
}
......@@ -19,6 +19,7 @@ import javax.annotation.Resource;
import javax.annotation.security.DeclareRoles;
import javax.annotation.security.RolesAllowed;
import javax.ejb.EJB;
import javax.ejb.EJBAccessException;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.ejb.Timeout;
......@@ -29,6 +30,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.enums.apps.MapPermission;
import fi.insomnia.bortal.enums.apps.SpecialPermission;
import fi.insomnia.bortal.exceptions.BortalCatchableException;
import fi.insomnia.bortal.facade.GroupMembershipFacade;
import fi.insomnia.bortal.facade.PlaceFacade;
......@@ -48,7 +50,6 @@ import fi.insomnia.bortal.model.User;
@Stateless
@LocalBean
@DeclareRoles({ MapPermission.S_BUY_PLACES,
"MAP/BUY_PLACES",
MapPermission.S_MANAGE_MAPS })
public class PlaceBean implements PlaceBeanLocal {
private static final String PLACE_RESERVE_TIMEOUTER = "Map reserve timeouter";
......@@ -75,6 +76,8 @@ public class PlaceBean implements PlaceBeanLocal {
private PermissionBeanLocal permbean;
@EJB
private UserFacade userfacade;
@EJB
private LoggingBeanLocal loggerbean;
@Override
@RolesAllowed(MapPermission.S_MANAGE_MAPS)
......@@ -90,18 +93,24 @@ public class PlaceBean implements PlaceBeanLocal {
* logged in user, but if user does not have enough rights an exception will
* be thrown
*
* @throws PermissionDeniedException
*
*/
@RolesAllowed(SpecialPermission.S_USER)
@Override
public BigDecimal totalReservationPrice(User user, Place newPlace) throws PermissionDeniedException {
if (user == null) {
user = permbean.getCurrentUser();
} else if (!permbean.isCurrentUser(user) &&
!permbean.hasPermission(MapPermission.MANAGE_OTHERS)) {
throw new PermissionDeniedException(logbean,
permbean.getCurrentUser(), "No right to impersonate another user");
}
public BigDecimal getTotalReservationPrice(Place newPlace)
{
return addAndCalcPrice(permbean.getCurrentUser(), newPlace);
}
@RolesAllowed(MapPermission.S_MANAGE_OTHERS)
@Override
public BigDecimal getTotalReservationPrice(User user, Place newPlace)
{
return addAndCalcPrice(user, newPlace);
}
private BigDecimal addAndCalcPrice(User user, Place newPlace) {
Set<Place> places = new HashSet<Place>();
places.addAll(placeFacade.findUsersReservations(eventBean.getCurrentEvent(), user));
......@@ -207,12 +216,13 @@ public class PlaceBean implements PlaceBeanLocal {
@Override
@RolesAllowed(MapPermission.S_BUY_PLACES)
public PlaceGroup buySelectedPlaces(User user) throws BortalCatchableException, PermissionDeniedException {
public PlaceGroup buySelectedPlaces(User user) throws BortalCatchableException {
if (user == null) {
user = permbean.getCurrentUser();
} else {
if (!user.equals(permbean.getCurrentUser())) {
permbean.fatalPermission(MapPermission.MANAGE_OTHERS, "Can not buy places for user ", user);
loggerbean.logMessage(SecurityLogType.permissionDenied, permbean.getCurrentUser(), "Can not buy places for user " + user);
throw new EJBAccessException("Not enough permissions to buy place");
}
user = userfacade.find(user.getId());
}
......@@ -225,7 +235,7 @@ public class PlaceBean implements PlaceBeanLocal {
// PlaceGroup pg = pgbean.createPlaceGroup(user);
BigDecimal totalprice = totalReservationPrice(user, null);
BigDecimal totalprice = addAndCalcPrice(user, null);
BigDecimal balance = user.getAccountBalance();
if (balance.compareTo(totalprice) < 0) {
logger.info("User {} Could not buy things because account balance {} is too low for purchase {}", new Object[] { user, balance, totalprice });
......
......@@ -6,6 +6,7 @@ import java.util.List;
import javax.annotation.security.DeclareRoles;
import javax.annotation.security.RolesAllowed;
import javax.ejb.EJB;
import javax.ejb.EJBAccessException;
import javax.ejb.Stateless;
import org.slf4j.Logger;
......@@ -44,6 +45,8 @@ public class PlaceGroupBean implements PlaceGroupBeanLocal {
@EJB
private PermissionBeanLocal permbean;
@EJB
private LoggingBeanLocal loggerbean;
/**
* Default constructor.
......@@ -83,11 +86,10 @@ public class PlaceGroupBean implements PlaceGroupBeanLocal {
@Override
@RolesAllowed(MapPermission.S_BUY_PLACES)
public boolean associateToToken(User user, String token) throws PermissionDeniedException {
if (!permbean.isCurrentUser(user)) {
permbean.fatalPermission(MapPermission.MANAGE_OTHERS);
public boolean associateToToken(User user, String token) {
if (!permbean.isCurrentUser(user) && !permbean.hasPermission(MapPermission.MANAGE_OTHERS)) {
throw new EJBAccessException();
}
token = token.trim();
GroupMembership mem = gmemfacade.findByToken(token);
......@@ -161,10 +163,11 @@ public class PlaceGroupBean implements PlaceGroupBeanLocal {
}
@Override
public void releaseAndGenerateToken(GroupMembership gmem) throws PermissionDeniedException {
public void releaseAndGenerateToken(GroupMembership gmem) {
gmem = gmemfacade.find(gmem.getId());
if (!(permbean.getCurrentUser().getId().equals(gmem.getPlaceGroup().getCreator().getId()) || permbean.hasPermission(MapPermission.MANAGE_OTHERS))) {
throw new PermissionDeniedException(loggingbean, permbean.getCurrentUser(), "User tried to release and generate group membership: " + gmem);
loggerbean.logMessage(SecurityLogType.permissionDenied, permbean.getCurrentUser(), "User tried to release and generate group membership: " + gmem);
throw new EJBAccessException("Not enough rights to release token");
}
gmem.setUser(null);
gmem.setInviteToken(gmemfacade.createInviteToken());
......
......@@ -5,8 +5,6 @@ import java.io.IOException;
import java.io.InputStream;
import java.net.URISyntaxException;
import java.util.Calendar;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.EJB;
import javax.ejb.Stateless;
......@@ -235,9 +233,9 @@ public class TestDataBean implements TestDataBeanLocal {
return map;
} catch (URISyntaxException ex) {
Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex);
logger.warn("Exception while generating testmap", ex);
} catch (IOException ex) {
Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex);
logger.warn("Exception while generating testmap", ex);
} finally
{
......
......@@ -14,6 +14,7 @@ import java.util.Set;
import javax.annotation.security.DeclareRoles;
import javax.annotation.security.RolesAllowed;
import javax.ejb.EJB;
import javax.ejb.EJBAccessException;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.imageio.ImageIO;
......@@ -83,6 +84,9 @@ public class UserBean implements UserBeanLocal {
@EJB
private UserImageFacade imagefacade;
@EJB
private LoggingBeanLocal loggerbean;
@Override
@RolesAllowed(UserPermission.S_VIEW_ALL)
public List<User> getUsers() {
......@@ -93,10 +97,10 @@ public class UserBean implements UserBeanLocal {
@Override
@RolesAllowed(SpecialPermission.S_USER)
public User mergeChanges(User user) throws PermissionDeniedException {
if (!permbean.isCurrentUser(user)) {
permbean.fatalPermission(UserPermission.MODIFY);
public User mergeChanges(User user) {
if (!permbean.isCurrentUser(user) && !permbean.hasPermission(UserPermission.MODIFY)) {
loggerbean.logMessage(SecurityLogType.permissionDenied, permbean.getCurrentUser(), "User tried to save another user: " + user);
throw new EJBAccessException("Not enough rights to save user");
}
User ret = userFacade.merge(user);
......@@ -111,10 +115,11 @@ public class UserBean implements UserBeanLocal {
}
@Override
public List<Role> findUsersRoles(User u) throws PermissionDeniedException {
public List<Role> findUsersRoles(User u) {
User currusr = permbean.getCurrentUser();
if (!currusr.equals(u)) {
permbean.fatalNotLoggedIn();
if (!currusr.equals(u) && !permbean.hasPermission(UserPermission.MODIFY)) {
loggerbean.logMessage(SecurityLogType.permissionDenied, permbean.getCurrentUser(), "User tried to fetc another users roles: " + u);
throw new EJBAccessException("Not enough rights to find roles");
}
return localFindUsersRoles(u);
......@@ -164,13 +169,15 @@ public class UserBean implements UserBeanLocal {
@Override
@RolesAllowed(SpecialPermission.S_USER)
public UserImage uploadImage(User user, String contentType, byte[] image, String filename, String description) throws PermissionDeniedException {
public UserImage uploadImage(User user, String contentType, byte[] image, String filename, String description) {
user = userFacade.merge(user);
logger.debug("uploading image to userid {}", user);
if (!user.equals(permbean.getCurrentUser())) {
permbean.fatalPermission(UserPermission.MODIFY, "usert tried to save picture to userid " + user + " without sufficient permissions!");
User curruser = permbean.getCurrentUser();
if (!curruser.equals(user) && !permbean.hasPermission(UserPermission.MODIFY)) {
loggerbean.logMessage(SecurityLogType.permissionDenied, curruser, "user tried to save picture to userid " + user + " without sufficient permissions!");
throw new EJBAccessException("No permission to upload image as another user");
}
UserImage userimage = new UserImage(user);
......@@ -194,16 +201,18 @@ public class UserBean implements UserBeanLocal {
}
@Override
public UserImage findUserImage(int id) throws PermissionDeniedException {
public UserImage findUserImage(int id) {
UserImage ret = null;
if (id == 0 && permbean.isLoggedIn()) {
ret = permbean.getCurrentUser().getCurrentImage();
} else {
ret = userimagefacade.find(id);
if (ret != null && !permbean.isCurrentUser(ret.getUser())) {
permbean.fatalPermission(UserPermission.MODIFY, "Not enough rights to access image id: " + id + " for user " + ret.getUser());
if (ret != null && !permbean.isCurrentUser(ret.getUser()) && permbean.hasPermission(UserPermission.MODIFY)) {
loggerbean.logMessage(SecurityLogType.permissionDenied, permbean.getCurrentUser(), "Not enough rights to access image id: " + id + " for user " + ret.getUser());
throw new EJBAccessException("Not enough permissions to fetch image");
}
}
return ret;
}
......
......@@ -87,7 +87,7 @@ public class UtilBean implements UtilBeanLocal {
// }
@Override
public boolean convertImage(User user) throws PermissionDeniedException {
public boolean convertImage(User user) {
user = userbean.mergeChanges(user);
UserImage oldpic = user.getCurrentImage();
......
......@@ -24,13 +24,6 @@ public class AccountEventFacade extends EventChildGenericFacade<AccountEvent> {
super(AccountEvent.class);
}
// @Override
// public void create(AccountEvent event) {
// user = userfacade
//
// userfacade.evict(event.getUser());
// }
public List<Role> findProvidedRoles(LanEvent event, User u) {
CriteriaBuilder cb = getEm().getCriteriaBuilder();
......
......@@ -18,6 +18,7 @@ import fi.insomnia.bortal.model.ActionLogMessageResponse_;
public class ActionLogFacade extends IntegerPkGenericFacade<ActionLogMessage> {
public ActionLogFacade() {
super(ActionLogMessage.class);
}
......
......@@ -25,6 +25,7 @@ public class BillFacade extends EventChildGenericFacade<Bill> {
public BillFacade() {
super(Bill.class);
}
// @Override
......
......@@ -21,6 +21,7 @@ public class BillLineFacade extends EventChildGenericFacade<BillLine> {
private static final Logger logger = LoggerFactory.getLogger(BillLineFacade.class);
public BillLineFacade() {
super(BillLine.class);
}
......
......@@ -21,6 +21,7 @@ public class CardTemplateFacade extends IntegerPkGenericFacade<CardTemplate> {
private EventBeanLocal eventbean;
public CardTemplateFacade() {
super(CardTemplate.class);
}
......
......@@ -10,6 +10,7 @@ import fi.insomnia.bortal.model.CompoEntry;
public class CompoEntryFacade extends EventChildGenericFacade<CompoEntry> {
public CompoEntryFacade() {
super(CompoEntry.class);
}
......
......@@ -10,6 +10,7 @@ import fi.insomnia.bortal.model.CompoEntryFile;
public class CompoEntryFileFacade extends EventChildGenericFacade<CompoEntryFile> {
public CompoEntryFileFacade() {
super(CompoEntryFile.class);
}
......
......@@ -10,6 +10,7 @@ import fi.insomnia.bortal.model.CompoEntryParticipant;
public class CompoEntryParticipantFacade extends EventChildGenericFacade<CompoEntryParticipant> {
public CompoEntryParticipantFacade() {
super(CompoEntryParticipant.class);
}
......
......@@ -10,6 +10,7 @@ import fi.insomnia.bortal.model.Compo;
public class CompoFacade extends EventChildGenericFacade<Compo> {
public CompoFacade() {
super(Compo.class);
}
......
......@@ -10,6 +10,7 @@ import fi.insomnia.bortal.model.Discount;
public class DiscountFacade extends EventChildGenericFacade<Discount> {
public DiscountFacade() {
super(Discount.class);
}
......
......@@ -10,6 +10,7 @@ import fi.insomnia.bortal.model.DiscountInstance;
public class DiscountInstanceFacade extends EventChildGenericFacade<DiscountInstance> {
public DiscountInstanceFacade() {
super(DiscountInstance.class);
}
......
......@@ -21,10 +21,11 @@ import fi.insomnia.bortal.model.LanEvent;
* Session Bean implementation class GenericFacade
*/
public abstract class EventChildGenericFacade<T extends GenericEventChild> extends GenericFacade<EventPk, T> {
@PersistenceContext
private EntityManager em;
protected final EntityManager getEm() {
protected EntityManager getEm() {
return em;
}
......
......@@ -14,6 +14,7 @@ import fi.insomnia.bortal.model.LanEvent_;
public class EventFacade extends IntegerPkGenericFacade<LanEvent> {
public EventFacade() {
super(LanEvent.class);
}
......
......@@ -32,6 +32,7 @@ public class EventMapFacade extends IntegerPkGenericFacade<EventMap> {
);
return getSingleNullableResult(getEm().createQuery(cq));
}
public Long countSelectable(EventMap map) {
......
......@@ -16,6 +16,7 @@ import fi.insomnia.bortal.model.EventOrganiser_;
public class EventOrganiserFacade extends IntegerPkGenericFacade<EventOrganiser> {
public EventOrganiserFacade() {
super(EventOrganiser.class);
}
......
......@@ -10,6 +10,7 @@ import fi.insomnia.bortal.model.FoodWave;
public class FoodWaveFacade extends EventChildGenericFacade<FoodWave> {
public FoodWaveFacade() {
super(FoodWave.class);
}
......
......@@ -10,6 +10,7 @@ import fi.insomnia.bortal.model.FoodWaveTemplate;
public class FoodWaveTemplateFacade extends EventChildGenericFacade<FoodWaveTemplate> {
public FoodWaveTemplateFacade() {
super(FoodWaveTemplate.class);
}
......
......@@ -23,18 +23,6 @@ import fi.insomnia.bortal.utilities.jpa.ModelInterface;
public abstract class GenericFacade<I extends Serializable, C extends ModelInterface<I>> {
// protected static <T, C extends ModelInterface<T>>
// List<SingularAttribute<C, T>> mkAttrlist(SingularAttribute<C, T>...
// types) {
// List<SingularAttribute<C, T>> ret = new ArrayList<SingularAttribute<C,
// T>>();
// for (SingularAttribute<C, T> a : types) {
// ret.add(a);
// }
// return Collections.unmodifiableList(ret);
//
// }
private final Class<C> entClass;
private static final Logger logger = LoggerFactory.getLogger(GenericFacade.class);
......@@ -76,8 +64,8 @@ public abstract class GenericFacade<I extends Serializable, C extends ModelInter
/**
* Deprekoitu! Yleensä ei haluta palauttaa kaikkia entryjä kannasta, vaan
* vain ko. tapahtumaan / käyttäjään / muuhun olioon liittyvät Jos
* oikeasti tarpeellinen luo funktio facadeen!
* vain ko. tapahtumaan / käyttäjään / muuhun olioon liittyvät Jos oikeasti
* tarpeellinen luo funktio facadeen!
*/
// @Deprecated
// public List<C> findAll() {
......
......@@ -32,6 +32,7 @@ public class GroupMembershipFacade extends IntegerPkGenericFacade<GroupMembershi
private EventBeanLocal eventbean;
public GroupMembershipFacade() {
super(GroupMembership.class);
}
......
......@@ -9,10 +9,11 @@ import fi.insomnia.bortal.utilities.jpa.ModelInterface;
* Session Bean implementation class GenericFacade
*/
public abstract class IntegerPkGenericFacade<T extends ModelInterface<Integer>> extends GenericFacade<Integer, T> {
@PersistenceContext
private EntityManager em;
protected final EntityManager getEm() {
protected EntityManager getEm() {
return em;
}
......
......@@ -2,8 +2,15 @@ package fi.insomnia.bortal.facade;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.persistence.TypedQuery;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Path;
import javax.persistence.criteria.Root;
import fi.insomnia.bortal.model.LanEventDomain;
import fi.insomnia.bortal.model.LanEventDomain_;
import fi.insomnia.bortal.model.LanEvent_;
@Stateless
@LocalBean
......@@ -13,4 +20,20 @@ public class LanEventDomainFacade extends IntegerPkGenericFacade<LanEventDomain>
super(LanEventDomain.class);
}
public LanEventDomain findByDomain(String hostname) {
CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<LanEventDomain> cq = cb.createQuery(LanEventDomain.class);
Root<LanEventDomain> root = cq.from(LanEventDomain.class);
Path<String> domainPath = root.get(LanEventDomain_.domain);
cq.where(cb.like(cb.lower(domainPath), "%" + hostname.toLowerCase().trim()));
cq.orderBy(cb.asc(root.get(LanEventDomain_.overridePriority)), cb.desc(root.get(LanEventDomain_.event).get(LanEvent_.startTime)), cb.asc(cb.length(root.get(LanEventDomain_.domain))));
TypedQuery<LanEventDomain> query = getEm().createQuery(cq);
query.setMaxResults(1);
return super.getSingleNullableResult(query);
}
}
......@@ -10,6 +10,7 @@ import fi.insomnia.bortal.model.Location;
public class LocationFacade extends IntegerPkGenericFacade<Location> {
public LocationFacade() {
super(Location.class);
}
......
......@@ -10,6 +10,7 @@ import fi.insomnia.bortal.model.LogEntry;
public class LogEntryFacade extends IntegerPkGenericFacade<LogEntry> {
public LogEntryFacade() {
super(LogEntry.class);
}
......
......@@ -12,6 +12,7 @@ import fi.insomnia.bortal.model.LogEntryType;
public class LogEntryTypeFacade extends IntegerPkGenericFacade<LogEntryType> {
public LogEntryTypeFacade() {
super(LogEntryType.class);
}
......
......@@ -25,7 +25,6 @@ public class MenuNavigationFacade extends IntegerPkGenericFacade<MenuNavigation>
public MenuNavigationFacade() {
super(MenuNavigation.class);
// TODO Auto-generated constructor stub
}
@EJB
......
......@@ -14,6 +14,7 @@ import fi.insomnia.bortal.model.Menuitem_;
public class MenuitemFacade extends IntegerPkGenericFacade<Menuitem> {
public MenuitemFacade() {
super(Menuitem.class);
}
......
......@@ -10,6 +10,7 @@ import fi.insomnia.bortal.model.News;
public class NewsFacade extends IntegerPkGenericFacade<News> {
public NewsFacade() {
super(News.class);
}
......
......@@ -18,6 +18,7 @@ import fi.insomnia.bortal.model.NewsGroup_;
public class NewsGroupFacade extends IntegerPkGenericFacade<NewsGroup> {
public NewsGroupFacade() {
super(NewsGroup.class);
}
......
......@@ -10,6 +10,7 @@ import fi.insomnia.bortal.model.PageContent;
public class PageContentFacade extends IntegerPkGenericFacade<PageContent> {
public PageContentFacade() {
super(PageContent.class);
}
......
......@@ -28,6 +28,7 @@ public class PlaceFacade extends IntegerPkGenericFacade<Place> {
private static final Logger logger = LoggerFactory.getLogger(PlaceFacade.class);
public PlaceFacade() {
super(Place.class);
}
......
......@@ -10,6 +10,7 @@ import fi.insomnia.bortal.model.PlaceGroup;
public class PlaceGroupFacade extends IntegerPkGenericFacade<PlaceGroup> {
public PlaceGroupFacade() {
super(PlaceGroup.class);
}
......
......@@ -10,7 +10,7 @@ import fi.insomnia.bortal.model.PollAnswer;
public class PollAnswerFacade extends IntegerPkGenericFacade<PollAnswer> {
public PollAnswerFacade() {
super(PollAnswer.class);
}
}
......@@ -18,6 +18,7 @@ import fi.insomnia.bortal.model.Poll_;
public class PollFacade extends IntegerPkGenericFacade<Poll> {
public PollFacade() {
super(Poll.class);
}
......
......@@ -10,6 +10,7 @@ import fi.insomnia.bortal.model.PollQuestion;
public class PollQuestionFacade extends IntegerPkGenericFacade<PollQuestion> {
public PollQuestionFacade() {
super(PollQuestion.class);
}
......
......@@ -10,6 +10,7 @@ import fi.insomnia.bortal.model.PossibleAnswer;
public class PossibleAnswerFacade extends IntegerPkGenericFacade<PossibleAnswer> {
public PossibleAnswerFacade() {
super(PossibleAnswer.class);
}
......
......@@ -21,6 +21,7 @@ import fi.insomnia.bortal.model.User;
public class PrintedCardFacade extends IntegerPkGenericFacade<PrintedCard> {
public PrintedCardFacade() {
super(PrintedCard.class);
}
......
......@@ -23,6 +23,7 @@ public class ProductFacade extends IntegerPkGenericFacade<Product> {
private EventBeanLocal eventbean;
public ProductFacade() {
super(Product.class);
}
......
......@@ -23,6 +23,7 @@ public class ReaderFacade extends IntegerPkGenericFacade<Reader> {
private EventBeanLocal eventbean;
public ReaderFacade() {
super(Reader.class);
}
......
......@@ -18,6 +18,7 @@ import fi.insomnia.bortal.model.User;
public class RoleFacade extends IntegerPkGenericFacade<Role> {
public RoleFacade() {
super(Role.class);
}
......
......@@ -13,6 +13,7 @@ import fi.insomnia.bortal.model.salespoint.SalesEntity;
public class SalesEntityFacade extends IntegerPkGenericFacade<SalesEntity> {
public SalesEntityFacade() {
super(SalesEntity.class);
}
......
......@@ -25,6 +25,7 @@ public class SitePageFacade extends IntegerPkGenericFacade<SitePage> {
private EventBeanLocal eventbean;
public SitePageFacade() {
super(SitePage.class);
}
......
......@@ -26,21 +26,6 @@ public class UserFacade extends IntegerPkGenericFacade<User> {
private static final Logger logger = LoggerFactory.getLogger(UserFacade.class);
// private enum Userfields implements StringPredicateField<User> {
// nick(User_.nick), login(User_.login), firstnames(User_.firstnames),
// lastname(User_.lastname), email(User_.email);
// private SingularAttribute<User, String> field;
//
// Userfields(SingularAttribute<User, String> f) {
// field = f;
// }
//
// @Override
// public SingularAttribute<User, String> getField() {
// return field;
// }
// }
private static List<SingularAttribute<User, String>> SEARCHATTRS;
private List<SingularAttribute<User, String>> getAttrlist() {
......
......@@ -17,12 +17,4 @@ public class UserImageFacade extends IntegerPkGenericFacade<UserImage> {
super(UserImage.class);
}
// @Override
// public void create(UserImage entity)
// {
// super.create(entity);
// userfacade.evict(entity.getUser());
//
// }
}
......@@ -10,6 +10,7 @@ import fi.insomnia.bortal.model.Vote;
public class VoteFacade extends EventChildGenericFacade<Vote> {
public VoteFacade() {
super(Vote.class);
}
......
......@@ -24,6 +24,6 @@ public interface AccountEventBeanLocal {
List<Role> getRolesFromAccountEvents(User u);
List<AccountEvent> shopCash(User shoppingUser, Map<Product, BigDecimal>
shopMap, boolean buyInstant) throws PermissionDeniedException;
shopMap, boolean buyInstant);
}
......@@ -13,7 +13,7 @@ import fi.insomnia.bortal.model.Bill;
@Local
public interface BillBeanLocal {
Bill findById(int id) throws PermissionDeniedException;
Bill findById(int id);
//
// Bill createEmptyBill(User shoppingUser) throws PermissionDeniedException;
......@@ -29,6 +29,6 @@ public interface BillBeanLocal {
void getPdfBillStream(Bill bill, OutputStream ostream);
void createBill(Bill bill) throws PermissionDeniedException;
void createBill(Bill bill);
}
......@@ -19,11 +19,11 @@ public interface CardTemplateBeanLocal extends EntityFinderBean<CardTemplate> {
CardTemplate find(Integer id);
PrintedCard checkPrintedCard(User user) throws PermissionDeniedException;
PrintedCard checkPrintedCard(User user);
void checkAllUsersCardRights() throws PermissionDeniedException;
void checkAllUsersCardRights();
PrintedCard setRfidUid(String tag, User user) throws PermissionDeniedException;
PrintedCard setRfidUid(String tag, User user);
PrintedCard setRfidUid(String tag, PrintedCard card);
......
......@@ -12,9 +12,9 @@ public interface EventBeanLocal {
LanEvent getCurrentEvent();
LanEvent mergeChanges(LanEvent event) throws PermissionDeniedException;
LanEvent mergeChanges(LanEvent event);
void create(LanEvent event) throws PermissionDeniedException;
void create(LanEvent event);
String flushCache();
}
......@@ -9,7 +9,7 @@ public interface EventMapBeanLocal {
EventMap saveMap(EventMap eventmap);
EventMap create(String mapname) throws PermissionDeniedException;
EventMap create(String mapname);
void sendImage(int destId, byte[] imagedata);
......
......@@ -17,20 +17,22 @@ public interface PermissionBeanLocal {
boolean isCurrentUser(User thisuser);
boolean fatalPermission(IAppPermission perm, Object... failmessage) throws PermissionDeniedException;
// boolean fatalPermission(IAppPermission perm, Object... failmessage);
// throws PermissionDeniedException;
void fatalNotLoggedIn() throws PermissionDeniedException;
// void fatalNotLoggedIn();
User getAnonUser();
String getPrincipal();
/**
* Get common name of the logged in cert like "customer-01"
*
* @return CN of the certificate
* @throws IllegalStateException Principal has no CN
* @throws IllegalStateException
* Principal has no CN
*/
String getCommonName() throws IllegalStateException;
......
package fi.insomnia.bortal.beans;
import fi.insomnia.bortal.model.User;
public class PermissionDeniedException extends Exception {
public PermissionDeniedException(LoggingBeanLocal bean, User user, String message) {
super(message);
bean.logMessage(SecurityLogType.permissionDenied, user, this.getMessage());
}
/**
*
*/
private static final long serialVersionUID = -5845504817243929548L;
}
......@@ -35,9 +35,7 @@ public interface PlaceBeanLocal {
Place mergeChanges(Place place);
PlaceGroup buySelectedPlaces(User user) throws BortalCatchableException, PermissionDeniedException;
BigDecimal totalReservationPrice(User user, Place newPlace) throws PermissionDeniedException;
PlaceGroup buySelectedPlaces(User user) throws BortalCatchableException;
// void releaseUsersPlaces(User user) throws PermissionDeniedException;
......@@ -45,4 +43,8 @@ public interface PlaceBeanLocal {
void unbuyPlace(Place place);
BigDecimal getTotalReservationPrice(User user, Place newPlace);
BigDecimal getTotalReservationPrice(Place newPlace);
}
......@@ -17,9 +17,9 @@ public interface PlaceGroupBeanLocal {
// List<GroupMembership> getMemberships(User user);
boolean associateToToken(User user, String token) throws PermissionDeniedException;
boolean associateToToken(User user, String token);
void releaseAndGenerateToken(GroupMembership gmem) throws PermissionDeniedException;
void releaseAndGenerateToken(GroupMembership gmem);
void getGroupMembershipPdf(List<GroupMembership> memberships, OutputStream ostream);
......
......@@ -20,7 +20,7 @@ public interface UserBeanLocal {
User getUser(String login);
User mergeChanges(User currentUser) throws PermissionDeniedException;
User mergeChanges(User currentUser);
// boolean hasCurrentUserPermission(Permission userManagement,
// RolePermission execute);
......@@ -30,9 +30,9 @@ public interface UserBeanLocal {
// void fatalNotLoggedIn();
UserImage uploadImage(User user, String contentType, byte[] image, String filename, String description) throws PermissionDeniedException;
UserImage uploadImage(User user, String contentType, byte[] image, String filename, String description);
UserImage findUserImage(int id) throws PermissionDeniedException;
UserImage findUserImage(int id);
// List<User> searchName(String name);
......@@ -44,7 +44,7 @@ public interface UserBeanLocal {
User initPasswordReset(User user, String hash, String mailpath);
List<Role> findUsersRoles(User u) throws PermissionDeniedException;
List<Role> findUsersRoles(User u);
User findById(Integer integer);
......
......@@ -12,7 +12,7 @@ public interface UtilBeanLocal {
boolean sendMail(MailMessage message);
boolean convertImage(User user) throws PermissionDeniedException;
boolean convertImage(User user);
// void checkAllUsersImages() throws PermissionDeniedException;
......
......@@ -10,8 +10,10 @@ public class BortalLocalContextHolder {
private static final ThreadLocal<BortalLocalContextHolder> THREAD_WITH_CONTEXT = new ThreadLocal<BortalLocalContextHolder>();
private String hostname;
private Integer hostnameId;
private final Map<IAppPermission, Boolean> rightcache = new HashMap<IAppPermission, Boolean>();
private static boolean inDevelopmentMode = false;
public BortalLocalContextHolder() {
......@@ -72,9 +74,14 @@ public class BortalLocalContextHolder {
public static void setInDevelopmentMode(boolean developmentMode) {
inDevelopmentMode = developmentMode;
}
public static Integer getHostnameId() {
return getThread().hostnameId;
}
public static void setHostnameId(Integer id)
{
getThread().hostnameId = id;
}
}
\ No newline at end of file
......@@ -137,6 +137,7 @@ public class Bill extends GenericEventChild {
* User who should pay this bill.
*/
@ManyToOne(optional = false)
@JoinColumn(updatable = false)
private User user;
private static final Logger logger = LoggerFactory.getLogger(Bill.class);
......
package fi.insomnia.bortal.model;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
......@@ -18,6 +19,7 @@ import javax.persistence.TemporalType;
import org.eclipse.persistence.annotations.OptimisticLocking;
import org.eclipse.persistence.annotations.OptimisticLockingType;
import org.eclipse.persistence.annotations.PrivateOwned;
import fi.insomnia.bortal.enums.EventStatus;
import fi.insomnia.bortal.model.salespoint.Salespoint;
......@@ -96,7 +98,12 @@ public class LanEvent extends GenericEntity {
@OneToMany(mappedBy = "event", cascade = CascadeType.ALL)
private List<Salespoint> salespoints;
@OneToMany(mappedBy = "event", cascade = CascadeType.ALL)
@PrivateOwned
private List<LanEventDomain> domains = new ArrayList<LanEventDomain>();
public LanEvent() {
}
public Calendar getStartTime() {
......@@ -265,4 +272,12 @@ public class LanEvent extends GenericEntity {
this.salespoints = salespoints;
}
public List<LanEventDomain> getDomains() {
return domains;
}
public void setDomains(List<LanEventDomain> domains) {
this.domains = domains;
}
}
package fi.insomnia.bortal.model;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.Lob;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import org.eclipse.persistence.annotations.OptimisticLocking;
import org.eclipse.persistence.annotations.OptimisticLockingType;
@Entity
@Table(name = "event_domains")
@OptimisticLocking(type = OptimisticLockingType.CHANGED_COLUMNS)
public class LanEventDomain extends GenericEntity {
public LanEventDomain() {
super();
}
public LanEventDomain(LanEvent e, String dom) {
super();
event = e;
domain = dom;
}
private static final long serialVersionUID = -8050125804595746831L;
@Column(name = "domainname", nullable = false, unique = true)
private String domain;
@Lob
@Column(name = "description")
private String description;
@ManyToOne(optional = false)
@JoinColumn(name = "event_id", nullable = false)
private LanEvent event;
private int overridePriority;
public String getDomain() {
return domain;
}
public void setDomain(String domain) {
this.domain = domain;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public LanEvent getEvent() {
return event;
}
public void setEvent(LanEvent event) {
this.event = event;
}
public int getOverridePriority() {
return overridePriority;
}
public void setOverridePriority(int overridePriority) {
this.overridePriority = overridePriority;
}
}
......@@ -17,8 +17,6 @@ import javax.faces.event.ExceptionQueuedEventContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.beans.PermissionDeniedException;
public class BortalTerminalExceptionHandler extends ExceptionHandlerWrapper {
private static final Logger logger = LoggerFactory
......@@ -57,8 +55,7 @@ public class BortalTerminalExceptionHandler extends ExceptionHandlerWrapper {
logger.debug(
"Cause not null, but {}: {}, checking"
+ cause.getClass(), cause.getMessage());
if (cause instanceof PermissionDeniedException
|| cause instanceof EJBAccessException
if (cause instanceof EJBAccessException
|| cause instanceof AccessLocalException) {
logger.debug("Found Permission Denied cause: {}, {}",
cause.getClass(), cause.getMessage());
......
package fi.insomnia.bortal.enums.apps;
public enum SpecialPermission {
SUPERADMIN, USER, ANONYMOUS;
SUPERADMIN, USER, ANONYMOUS, ORGANISATION_ADMIN;
public static final String S_USER = "USER";
public static final String S_SUPERADMIN = "SUPERADMIN";
public static final String S_ANONYMOUS = "ANONYMOUS";
public static final String S_ORGANISATION_ADMIN = "ORGANISATION_ADMIN";
}
......@@ -42,6 +42,22 @@
<h:commandButton id="commitbtn" action="#{eventorgView.saveEvent()}" value="#{i18n['event.save']}" />
</h:panelGrid>
</h:form>
<h:form>
<h:inputText value="#{eventorgView.newdomain}" />
<h:commandButton action="#{eventorgView.addDomain()}" />
<h:dataTable var="domain" value="#{eventorgView.eventdomains}">
<h:column>
<f:facet name="header">
<h:outputText value="#{i18n['eventdomain.domainname']}" />
</f:facet>
<h:outputText value="#{domain.domain}" />
</h:column>
<h:column>
<h:commandButton action="#{eventorgView.removeDomain()}" />
</h:column>
</h:dataTable>
</h:form>
</ui:define>
......
......@@ -17,8 +17,6 @@ import javax.faces.event.ExceptionQueuedEventContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.beans.PermissionDeniedException;
public class BortalExceptionHandler extends ExceptionHandlerWrapper {
private static final Logger logger = LoggerFactory.getLogger(BortalExceptionHandler.class);
......@@ -51,9 +49,8 @@ public class BortalExceptionHandler extends ExceptionHandlerWrapper {
Throwable cause = t.getCause();
for (int loop = 0; loop < 20 && cause != null; ++loop) {
logger.debug("Cause not null, but {}: {}, checking" + cause.getClass(), cause.getMessage());
if (cause instanceof PermissionDeniedException ||
cause instanceof EJBAccessException ||
cause instanceof AccessLocalException) {
if (cause instanceof EJBAccessException ||
cause instanceof AccessLocalException) {
logger.debug("Found Permission Denied cause: {}, {}", cause.getClass(), cause.getMessage());
// errorpage(i, t, "permissionDenied");
......
global.copyright=Verkkopeliyhdistys Insomnia ry
global.productname=Omnia
navi.auth.login=frontpage
navi.auth.loginerror=frontpage
navi.auth.logout=frontpage
pagegroup.auth.login=frontpage
page.index.pagegroup=frontpage
page.auth.login.pagegroup=login
page.auth.loginerror.pagegroup=frontpage
page.auth.logout.pagegroup=login
page.auth.logoutsuccess.pagegroup=frontpage
page.auth.notauthorized.pagegroup=frontpage
page.bill.list.pagegroup=shop
page.viewexpired.pagegroup=frontpage
page.eventorg.list.pagegroup=admin
page.eventorg.edit.pagegroup=admin
page.eventorg.create.pagegroup=admin
page.eventorg.editEvent.pagegroup=admin
page.product.create.pagegroup=admin
page.product.createBill.pagegroup=shop
page.product.edit.pagegroup=admin
page.product.list.pagegroup=admin
product.providedRole=Tuote tarjoaa roolin
product.createDiscount=Lis mralennus
product.saved=Tuote tallennettu
product.returnProductEdit=Palaa tuotteeseen:
page.role.create.pagegroup=admin
page.role.edit.pagegroup=admin
page.role.list.pagegroup=admin
page.place.placemap.pagegroup=placemap
page.place.mygroups.pagegroup=user
page.place.insertToken.pagegroup=user
page.place.edit.pagegroup=admin
page.account.edit.pagegroup=admin
page.user.create.pagegroup=user
page.user.edit.pagegroup=user
page.user.list.pagegroup=user
page.user.editself.pagegroup=user
page.user.mygroups.pagegroup=user
page.admin.sendimage.pagegroup=admin
page.auth.login.loginerror.pagegroup=frontpage
page.auth.login.logout.pagegroup=frontpage
page.permissionDenied.pagegroup=frontpage
page.bill.placemap.pagegroup=placemap
page.bill.listAll.pagegroup=shop
page.bill.edit.pagegroup=shop
page.bill.billSummary.pagegroup=shop
page.account.list.pagegroup=user
page.auth.resetPassword.pagegroup=user
page.shop.readerevents.pagegroup=rfidshop
page.game.start.pagegroup=game
page.game.list.pagegroup=game
page.poll.start.pagegroup=poll
page.poll.answer.pagegroup=poll
page.poll.answered.pagegroup=poll
poll.edit=edit
global.copyright = Verkkopeliyhdistys Insomnia ry
global.productname = Omnia
httpsession.creationTime = Luotu
#Bill number
# Validationmessages
httpsession.id=ID
httpsession.creationTime=Luotu
httpsession.lastAccessedTime=Viimeksi nhty
httpsession.sessionHasExisted=Ollut elossa (s)
httpsession.maxInactiveInterval=Aikakatkaisu (s)
httpsession.isSessionNew=Uusi sessio
httpsession.invalidate=Mitti
httpsession.user=Tunnus
httpsession.invalidateSuccessfull=Sessio onnistuneesti mittity
user.unauthenticated=Kirjautumaton
httpsession.id = ID
httpsession.invalidate = Mit\uFFFDt\uFFFDi
httpsession.invalidateSuccessfull = Sessio onnistuneesti mit\uFFFDt\uFFFDity
httpsession.isSessionNew = Uusi sessio
httpsession.lastAccessedTime = Viimeksi n\uFFFDhty
httpsession.maxInactiveInterval = Aikakatkaisu (s)
httpsession.sessionHasExisted = Ollut elossa (s)
httpsession.user = Tunnus
map.id = #
navi.auth.login = frontpage
navi.auth.loginerror = frontpage
navi.auth.logout = frontpage
page.account.edit.pagegroup = admin
page.account.list.pagegroup = user
page.admin.sendimage.pagegroup = admin
page.auth.login.loginerror.pagegroup = frontpage
page.auth.login.logout.pagegroup = frontpage
page.auth.login.pagegroup = login
page.auth.loginerror.pagegroup = frontpage
page.auth.logout.pagegroup = login
page.auth.logoutsuccess.pagegroup = frontpage
page.auth.notauthorized.pagegroup = frontpage
page.auth.resetPassword.pagegroup = user
page.bill.billSummary.pagegroup = shop
page.bill.edit.pagegroup = shop
page.bill.list.pagegroup = shop
page.bill.listAll.pagegroup = shop
page.bill.placemap.pagegroup = placemap
page.eventorg.create.pagegroup = admin
page.eventorg.edit.pagegroup = admin
page.eventorg.editEvent.pagegroup = admin
page.eventorg.list.pagegroup = admin
page.game.list.pagegroup = game
page.game.start.pagegroup = game
page.index.pagegroup = frontpage
page.permissionDenied.pagegroup = frontpage
page.place.edit.pagegroup = admin
page.place.insertToken.pagegroup = user
page.place.mygroups.pagegroup = user
page.place.placemap.pagegroup = placemap
page.poll.answer.pagegroup = poll
page.poll.answered.pagegroup = poll
page.poll.start.pagegroup = poll
page.product.create.pagegroup = admin
page.product.createBill.pagegroup = shop
page.product.edit.pagegroup = admin
page.product.list.pagegroup = admin
page.role.create.pagegroup = admin
page.role.edit.pagegroup = admin
page.role.list.pagegroup = admin
page.shop.readerevents.pagegroup = rfidshop
page.user.create.pagegroup = user
page.user.edit.pagegroup = user
page.user.editself.pagegroup = user
page.user.list.pagegroup = user
page.user.mygroups.pagegroup = user
page.viewexpired.pagegroup = frontpage
pagegroup.auth.login = frontpage
poll.edit = edit
product.providedRole = Tuote tarjoaa roolin
product.returnProductEdit = Palaa tuotteeseen:
product.saved = Tuote tallennettu
user.unauthenticated = Kirjautumaton
accountEvent.delivered=Delivered
accountEvent.edit=Edit
accountEvent.eventTime=Time
accountEvent.productname=Product
accountEvent.quantity=Count
accountEvent.total=Total
accountEvent.unitPrice=Unit price
accountEvent.commit=Save
accountEvent.seller=Sold by
bill.addr1=Address 1
bill.addr2=Address 2
bill.addr3=Address 3
bill.addr4=Address 4
bill.addr5=Address 5
bill.billNumber=Bill number
bill.deliveryTerms=Delivery terms
bill.edit=edit
bill.isPaid=Paid
bill.markPaid=Mark paid
bill.notes=Notes
bill.noticetime=Notice time
bill.ourReference=Our reference
bill.paidDate=Paid date
bill.payer=Payer
bill.paymentTime=Payment time
bill.printBill=Print bill
bill.referenceNumberBase=Reference number base
bill.referencenumber=Reference nr.
bill.sentDate=Sent date
bill.theirReference=Clients reference
bill.totalPrice=Total
billine.name=Product
billine.quantity=Quantity
billine.referencedProduct=Referenced product
billine.save=Save
billine.unitName=Unit
billine.unitPrice=Unit price
billine.vat=VAT
bills.noBills=No bills
billedit.billnotfound=Bill not found. Select again.
cardTemplate.name=Card template
cardTemplate.power=Card power
cardTemplate.roles=Associated roles
discount.active=Active
discount.amountMax=Max amount
discount.amountMin=Min amount
discount.code=Discount code
discount.create=Create new
discount.details=Details
discount.edit=Edit
discount.maxNum=Max nr of discounts
discount.perUser=Discounts per user
discount.percentage=Discount percent
discount.role=Role discount
discount.save=Save
discount.shortdesc=Description
editplace.header=Edit place
editplacegroup.header=Placegroup information
eventorg.createEvent=Create event
eventorg.events=Event of the organisation
eventorgView.eventname=Name of event
game.gamepoints=Game points
global.cancel=Cancel
global.copyright=Insomnia Ry, Stream Ry
global.notauthorized=You don't have enough rights to enter this site.
global.productname=Intra
global.save=Save
imagefile.description=Description
imagefile.file=Imagefile
javax.validation.constraints.AssertFalse.message=must be false
javax.validation.constraints.AssertTrue.message=must be true
javax.validation.constraints.DecimalMax.message=must be less than or equal to {value}
javax.validation.constraints.DecimalMin.message=must be greater than or equal to {value}
javax.validation.constraints.Digits.message=numeric value out of bounds (<{integer} digits>.<{fraction} digits> expected)
javax.validation.constraints.Future.message=must be in the future
javax.validation.constraints.Max.message=must be less than or equal to {value}
javax.validation.constraints.Min.message=must be greater than or equal to {value}
javax.validation.constraints.NotNull.message=may not be null
javax.validation.constraints.Null.message=must be null
javax.validation.constraints.Past.message=must be in the past
javax.validation.constraints.Pattern.message=must match "{regexp}"
javax.validation.constraints.Size.message=size must be between {min} and {max}
login.login=Login
login.logout=Logout
login.logoutmessage=You have logged out of the system
login.password=Password
login.submit=Login
login.username=Username
loginerror.header=Login failed
loginerror.message=Username of password incorrect.
loginerror.resetpassword=Reset password
mapManage.lockedPlaces=Locked {0} places.
mapManage.releasedPlaces=Released {0} places
mapView.buyPlaces=Lock selected places
mapView.errorWhenReleasingPlace=Error when releasing place
mapView.errorWhenReservingPlace=Error when reserving place!
mapView.errorWhileBuyingPlaces=Error when buying places. Please try again. If error reoccurs please contact organizers.
mapView.notEnoughCreditsToReserve=You don't have enough credits to reserve this place.
nasty.user=Go away!
org.hibernate.validator.constraints.Email.message=not a well-formed email address
org.hibernate.validator.constraints.Length.message=length must be between {min} and {max}
org.hibernate.validator.constraints.NotEmpty.message=may not be empty
org.hibernate.validator.constraints.Range.message=must be between {min} and {max}
page.account.edit.header=Edit account events
page.account.list.header=Account events
page.admin.sendimage.header=Send image
page.auth.login.header=Login error
page.auth.login.loginerror.header=Kirjautumisvirhe
page.auth.login.loginerror.pagegroup=frontpage
page.auth.login.logout.header=Uloskirjautuminen
page.auth.login.logout.pagegroup=frontpage
page.auth.login.pagegroup=frontpage
page.auth.login.title=Login error
page.auth.loginerror.header=Login failed
page.auth.loginerror.pagegroup=frontpage
page.auth.logout.pagegroup=frontpage
page.auth.notauthorized.pagegroup=frontpage
page.auth.resetPassword.header=Reset password
page.bill.billSummary.header=Summary of bills
page.bill.edit.header=Edit bill
page.bill.listAll.header=Bills
page.bill.placemap.header=Place map
page.game.list.header=Insomnia Game
page.game.start.header=Insomnia Game
page.index.header=Frontpage
page.index.pagegroup=frontpage
page.permissionDenied.header=Access denied
page.place.edit.header=Edit place
page.place.insertToken.header=Insert place token
page.place.mygroups.header=My places
page.place.placemap.header=Reserve place
page.poll.answer.header=Poll
page.poll.answered.header=Thank you for your answer
page.poll.start.header=Poll
page.product.create.pagegroup=admin
page.product.createBill.pagegroup=shop
page.product.createBill.header=Buy products
page.product.edit.pagegroup=admin
page.product.list.pagegroup=admin
page.role.create.pagegroup=admin
page.role.edit.pagegroup=admin
page.role.list.pagegroup=admin
page.shop.readerevents.header=RFID shop
page.tests.placemap.pagegroup=shop
page.user.create.header=New user
page.user.create.pagegroup=user
page.user.edit.header=Edit user
page.user.edit.pagegroup=user
page.user.editself.header=My preferences
page.user.editself.pagegroup=user
page.user.list.header=Users
page.user.list.pagegroup=user
page.user.mygroups.header=My places
page.viewexpired=frontpage
pagination.results=Results
pagination.pages=Pages
pagination.firstpage=First
pagination.previouspage=Previous
pagination.nextpage=Next
pagination.lastpage=Last
passwordChanged.body=You can now login with the new password.
passwordChanged.header=Password changed successfully.
passwordReset.hashNotFound=Password change token has expired. Please send the query again.
passwordreset.mailBody=You can change your password in address: {0}\n\nIf you have not requested password reset, ignore this message.\n\nStream intranet\nwww.streamparty.org\ninfo@streamparty.org
passwordreset.mailSubject=[STREAM] Password reset
passwordreset.usernotfound=Username not found. Please note that username is case sensitive.
permissiondenied.alreadyLoggedIn=You don't have enough rights
permissiondenied.header=Access denied
permissiondenied.notLoggedIn=You don't have enough rights to enter this site.
place.code=Placecode
place.commit=Save
place.description=Description
place.details=Details
place.edit=Edit
place.height=Height
place.mapX=X
place.mapY=Y
place.name=Name
place.product=Product
place.releasetime=Releasetime
place.width=Width
place.membership=Associated user
placeSelect.legend.blue=My selected place
placeSelect.legend.green=My reserved place
placeSelect.legend.grey=Released if needed
placeSelect.legend.red=Reserved place
placeSelect.legend.white=Empty place
placeSelect.placeName=Place
placeSelect.placePrice=Price
placeSelect.placeProductName=Place type
placeSelect.placesleft=Places left
placeSelect.reservationPrice=Reservation price
placeSelect.reservedPlaces=Reserved places
placeSelect.totalPlaces=Places in total
placegroup.created=Created
placegroup.creator=Reserver
placegroup.details=Details
placegroup.edit=Show
placegroup.edited=Edited
placegroup.name=Name
placegroup.places=Places
placegroup.printPdf=Print placecodes
placegroupview.groupCreator=Reserver
placegroupview.header=My places
placegroupview.noMemberships=No places
placegroupview.placeReleaseFailed=Releasing of place failed!
placegroupview.placeReleased=Place {0} released
placegroupview.releasePlace=Release
placegroupview.reservationName=Place
placegroupview.token=Placecode / user
placetoken.commit=Associate token
placetoken.pageHeader=Add token
placetoken.token=Token
placetoken.tokenNotFound=Token not found! Check token
placetoken.topText=You can associate a ticket bought by someone else to your account by inserting a token to the field below
poll.answer=Answer to poll
poll.save=Send answers
product.barcode=Barcode
product.boughtTotal=Products billed
product.cart.count=To shoppingcart
product.create=Create product
product.edit=edit
product.name=Name of product
product.paid=Paid
product.prepaid=Prepaid
product.prepaidInstant=Created when prepaid is paid
product.price=Price of product
product.save=Save
product.shopInstant=Luo k\u2030teismaksu tuotteille
product.sort=Sort nr
product.unitName=Unit name
product.vat=VAT
products.save=Save
productshop.commit=Buy
productshop.noItemsInCart=There are no products in shopping cart
reader.assocToCard=Associate to card
reader.name=Reader name
reader.tag=Tag
reader.user=User
readerevent.associateToUser=Associate to user
readerevent.seenSince=Last seen
readerevent.shopToUser=Buy to user
readerview.cards=Card ( printcount )
resetMail.body=You can change a forgotten password by inserting your username to the field below. A link where you can change the password will be sent to the email address associated to that user.resetMail.header=Unohtuneen salasanan vaihto
resetMail.send=Send email
resetMail.username=Username
resetmailSent.body=Email has been sent containing a link where you can change the password.
resetmailSent.header=Email sent
role.create=Create role
role.description=Description
role.edit.save=Save
role.edit=Edit
role.execute=(X)
role.name=Name
role.parents=Parents
role.read=(R)
role.write=(W)
shop.accountBalance=Balance
shop.user=Selling to
sidebar.bill.list=My bills
sidebar.bill.listAll=All bills
sidebar.bill.summary=Summary of bills
sidebar.bills=Bills
sidebar.cardTemplate.create=New card template
sidebar.cardTemplate.list=Show card templates
sidebar.createuser=Register a new account
sidebar.eventorg.list=My organisations
sidebar.map.list=Maps
sidebar.map.placemap=Placemap
sidebar.maps=Maps
sidebar.other=Other
sidebar.product.create=New product
sidebar.product.createBill=Create bill
sidebar.product.list=Products
sidebar.products=Products
sidebar.role.create=New role
sidebar.role.list=Roles
sidebar.roles=Roles
sidebar.shop.readerEvents=Reader events
sidebar.shop.readerlist=Show readers
sidebar.user.create=New user
sidebar.user.editself=My preferences
sidebar.user.list=Users
sidebar.users=Users
sidebar.utils.flushCache=Flush Cache
sidebar.utils.testdata=Testdata
topmenu.adminfront=Adminstuff
topmenu.frontpage=Frontpage
topmenu.game=Insomnia Game
topmenu.placemap=Placemap
topmenu.poll=Polls
topmenu.rfidshop=Staffshop
topmenu.shoppings=Shop
topmenu.usersPreferences=My preferences
user.accountBalance=Account balance
user.accountEventHeader=Account events
user.accountEvents=Account events
user.address=Address
user.bank=Bank
user.bankaccount=Bank number
user.changePassword=Change password
user.create=Create user
user.createdmessage=User has been created successfully. You can now login.
user.defaultImage=Default picture
user.edit=Edit
user.email=Email
user.firstNames=Firstname
user.hasImage=Image
user.imagelist=Saved images
user.image=Image
user.imagesubmit=Send image
user.insertToken=Insert token
user.lastName=Lastname
user.login=Login
user.myGroups=My place reservations
user.nick=Nick
user.noAccountevents=No account events
user.noCurrentImage=No image
user.noImage=No image
user.password=Password
user.passwordcheck=Password ( again )
user.passwordlengthMessage=Password is too short!
user.phone=Tel
user.realname=Name
user.roles=Roles
user.rolesave=Save roles
user.save=Save
user.sendPicture=Send image
user.sex.FEMALE=Female
user.sex.MALE=Male
user.sex.UNDEFINED=Undefined
user.sex=Sex
user.shop=Buy
user.saveSuccessfull=Changes saved successfully
user.saveFailed=Save failed, Not enough permissions!
user.superadmin=Superadmin
user.thisIsCurrentImage=Current image
user.town=City
user.uploadimage=Send image
user.username=Username
user.validate.notUniqueUsername=Username already exists. Please select another.
user.wholeName=Name
user.zipCode=Postal nr.
userimage.webcam=Take picture with webcam
userview.header=Users
userview.loginstringFaulty=Username has to be atleast 2 characters long!
userview.passwordTooShort=Password has to be atleast 5 characters long!
userview.passwordsChanged=Password changed
userview.passwordsDontMatch=Passwords do not match! Please try again!
userview.userExists=Username already exists! please select another.
userlist.header=Users
userlist.search=Search
viewexpired.body=Please login again.
viewexpired.title=Login expired. Please login again.
accountEvent.commit = Save
accountEvent.delivered = Delivered
accountEvent.edit = Edit
accountEvent.eventTime = Time
accountEvent.productname = Product
accountEvent.quantity = Count
accountEvent.seller = Sold by
accountEvent.total = Total
accountEvent.unitPrice = Unit price
actionlog.create.header = Create new actionmessage
actionlog.create.message = Message
actionlog.create.role = Target role
actionlog.create.submitbutton = Send
actionlog.create.taskradio = Task
actionlog.crew = Crew
actionlog.message = Event
actionlog.messagelist.description = You can follow and create new action messages in this view
actionlog.messagelist.header = ActionLog
actionlog.messagestate.DONE = Done
actionlog.messagestate.NEW = New
actionlog.messagestate.PENDING = Pending
actionlog.state = State
actionlog.task = Task
actionlog.tasklist.header = Messagelist
actionlog.time = Time
actionlog.user = User
applicationPermission.description = description
applicationPermission.name = Rightsgroup
bill.addr1 = Address 1
bill.addr2 = Address 2
bill.addr3 = Address 3
bill.addr4 = Address 4
bill.addr5 = Address 5
bill.billNumber = Bill number
bill.deliveryTerms = Delivery terms
bill.edit = edit
bill.isPaid = Paid
bill.markPaid = Mark paid
bill.notes = Notes
bill.noticetime = Notice time
bill.ourReference = Our reference
bill.paidDate = Paid date
bill.payer = Payer
bill.paymentTime = Payment time
bill.printBill = Print bill
bill.referenceNumberBase = Reference number base
bill.referencenumber = Reference nr.
bill.sentDate = Sent date
bill.theirReference = Clients reference
bill.totalPrice = Total
billedit.billnotfound = Bill not found. Select again.
billine.name = Product
billine.quantity = Quantity
billine.referencedProduct = Referenced product
billine.save = Save
billine.unitName = Unit
billine.unitPrice = Unit price
billine.vat = VAT
bills.noBills = No bills
cardTemplate.name = Card template
cardTemplate.power = Card power
cardTemplate.roles = Associated roles
discount.active = Active
discount.amountMax = Max amount
discount.amountMin = Min amount
discount.code = Discount code
discount.create = Create new
discount.details = Details
discount.edit = Edit
discount.maxNum = Max nr of discounts
discount.perUser = Discounts per user
discount.percentage = Discount percent
discount.role = Role discount
discount.save = Save
discount.shortdesc = Description
editplace.header = Edit place
editplacegroup.header = Placegroup information
eventorg.createEvent = Create event
eventorg.events = Event of the organisation
eventorgView.eventname = Name of event
game.gamepoints = Game points
global.cancel = Cancel
global.copyright = Insomnia Ry, Stream Ry
global.notauthorized = You don't have enough rights to enter this site.
global.productname = Intra
global.save = Save
imagefile.description = Description
imagefile.file = Imagefile
javax.validation.constraints.AssertFalse.message = must be false
javax.validation.constraints.AssertTrue.message = must be true
javax.validation.constraints.DecimalMax.message = must be less than or equal to {value}
javax.validation.constraints.DecimalMin.message = must be greater than or equal to {value}
javax.validation.constraints.Digits.message = numeric value out of bounds (<{integer} digits>.<{fraction} digits> expected)
javax.validation.constraints.Future.message = must be in the future
javax.validation.constraints.Max.message = must be less than or equal to {value}
javax.validation.constraints.Min.message = must be greater than or equal to {value}
javax.validation.constraints.NotNull.message = may not be null
javax.validation.constraints.Null.message = must be null
javax.validation.constraints.Past.message = must be in the past
javax.validation.constraints.Pattern.message = must match "{regexp}"
javax.validation.constraints.Size.message = size must be between {min} and {max}
login.login = Login
login.logout = Logout
login.logoutmessage = You have logged out of the system
login.password = Password
login.submit = Login
login.username = Username
loginerror.header = Login failed
loginerror.message = Username of password incorrect.
loginerror.resetpassword = Reset password
map.edit = Edit
map.name = Name
mapManage.lockedPlaces = Locked {0} places.
mapManage.releasedPlaces = Released {0} places
mapView.buyPlaces = Lock selected places
mapView.errorWhenReleasingPlace = Error when releasing place
mapView.errorWhenReservingPlace = Error when reserving place!
mapView.errorWhileBuyingPlaces = Error when buying places. Please try again. If error reoccurs please contact organizers.
mapView.notEnoughCreditsToReserve = You don't have enough credits to reserve this place.
nasty.user = Go away!
org.hibernate.validator.constraints.Email.message = not a well-formed email address
org.hibernate.validator.constraints.Length.message = length must be between {min} and {max}
org.hibernate.validator.constraints.NotEmpty.message = may not be empty
org.hibernate.validator.constraints.Range.message = must be between {min} and {max}
page.account.edit.header = Edit account events
page.account.list.header = Account events
page.admin.sendimage.header = Send image
page.auth.login.header = Login error
page.auth.login.loginerror.header = Kirjautumisvirhe
page.auth.login.loginerror.pagegroup = frontpage
page.auth.login.logout.header = Uloskirjautuminen
page.auth.login.logout.pagegroup = frontpage
page.auth.login.pagegroup = frontpage
page.auth.login.title = Login error
page.auth.loginerror.header = Login failed
page.auth.loginerror.pagegroup = frontpage
page.auth.logout.pagegroup = frontpage
page.auth.notauthorized.pagegroup = frontpage
page.auth.resetPassword.header = Reset password
page.bill.billSummary.header = Summary of bills
page.bill.edit.header = Edit bill
page.bill.listAll.header = Bills
page.bill.placemap.header = Place map
page.game.list.header = Insomnia Game
page.game.start.header = Insomnia Game
page.index.header = Frontpage
page.index.pagegroup = frontpage
page.permissionDenied.header = Access denied
page.place.edit.header = Edit place
page.place.insertToken.header = Insert place token
page.place.mygroups.header = My places
page.place.placemap.header = Reserve place
page.poll.answer.header = Poll
page.poll.answered.header = Thank you for your answer
page.poll.start.header = Poll
page.product.create.pagegroup = admin
page.product.createBill.header = Buy products
page.product.createBill.pagegroup = shop
page.product.edit.pagegroup = admin
page.product.list.pagegroup = admin
page.role.create.pagegroup = admin
page.role.edit.pagegroup = admin
page.role.list.pagegroup = admin
page.shop.readerevents.header = RFID shop
page.tests.placemap.pagegroup = shop
page.user.create.header = New user
page.user.create.pagegroup = user
page.user.edit.header = Edit user
page.user.edit.pagegroup = user
page.user.editself.header = My preferences
page.user.editself.pagegroup = user
page.user.list.header = Users
page.user.list.pagegroup = user
page.user.mygroups.header = My places
page.viewexpired = frontpage
pagination.firstpage = First
pagination.lastpage = Last
pagination.nextpage = Next
pagination.pages = Pages
pagination.previouspage = Previous
pagination.results = Results
passwordChanged.body = You can now login with the new password.
passwordChanged.header = Password changed successfully.
passwordReset.hashNotFound = Password change token has expired. Please send the query again.
passwordreset.mailBody = You can change your password in address: {0}\n\nIf you have not requested password reset, ignore this message.\n\nStream intranet\nwww.streamparty.org\ninfo@streamparty.org
passwordreset.mailSubject = [STREAM] Password reset
passwordreset.usernotfound = Username not found. Please note that username is case sensitive.
permissiondenied.alreadyLoggedIn = You don't have enough rights
permissiondenied.header = Access denied
permissiondenied.notLoggedIn = You don't have enough rights to enter this site.
place.code = Placecode
place.commit = Save
place.description = Description
place.details = Details
place.edit = Edit
place.height = Height
place.mapX = X
place.mapY = Y
place.membership = Associated user
place.name = Name
place.product = Product
place.releasetime = Releasetime
place.width = Width
placeSelect.legend.blue = My selected place
placeSelect.legend.green = My reserved place
placeSelect.legend.grey = Released if needed
placeSelect.legend.red = Reserved place
placeSelect.legend.white = Empty place
placeSelect.placeName = Place
placeSelect.placePrice = Price
placeSelect.placeProductName = Place type
placeSelect.placesleft = Places left
placeSelect.reservationPrice = Reservation price
placeSelect.reservedPlaces = Reserved places
placeSelect.totalPlaces = Places in total
placegroup.created = Created
placegroup.creator = Reserver
placegroup.details = Details
placegroup.edit = Show
placegroup.edited = Edited
placegroup.name = Name
placegroup.places = Places
placegroup.printPdf = Print placecodes
placegroupview.groupCreator = Reserver
placegroupview.header = My places
placegroupview.noMemberships = No places
placegroupview.placeReleaseFailed = Releasing of place failed!
placegroupview.placeReleased = Place {0} released
placegroupview.releasePlace = Release
placegroupview.reservationName = Place
placegroupview.token = Placecode / user
placetoken.commit = Associate token
placetoken.pageHeader = Add token
placetoken.token = Token
placetoken.tokenNotFound = Token not found! Check token
placetoken.topText = You can associate a ticket bought by someone else to your account by inserting a token to the field below
poll.answer = Answer to poll
poll.begin = Open poll
poll.description = Description
poll.end = Close poll
poll.name = Poll name
poll.save = Send answers
product.barcode = Barcode
product.billed = Billed
product.boughtTotal = Products billed
product.cart.count = To shoppingcart
product.cashed = Cashpaid
product.color = Color in UI
product.create = Create product
product.createDiscount = Add volumediscount
product.edit = edit
product.name = Name of product
product.paid = Paid
product.prepaid = Prepaid
product.prepaidInstant = Created when prepaid is paid
product.price = Price of product
product.save = Save
product.shopInstant = Luo k\u2030teismaksu tuotteille
product.sort = Sort nr
product.unitName = Unit name
product.vat = VAT
products.save = Save
productshop.commit = Buy
productshop.noItemsInCart = There are no products in shopping cart
reader.assocToCard = Associate to card
reader.name = Reader name
reader.tag = Tag
reader.user = User
readerevent.associateToUser = Associate to user
readerevent.seenSince = Last seen
readerevent.shopToUser = Buy to user
readerview.cards = Card ( printcount )
resetMail.body = You can change a forgotten password by inserting your username to the field below. A link where you can change the password will be sent to the email address associated to that user.resetMail.header=Unohtuneen salasanan vaihto
resetMail.send = Send email
resetMail.username = Username
resetmailSent.body = Email has been sent containing a link where you can change the password.
resetmailSent.header = Email sent
role.create = Create role
role.description = Description
role.edit = Edit
role.edit.save = Save
role.execute = (X)
role.name = Name
role.parents = Parents
role.read = (R)
role.write = (W)
shop.accountBalance = Balance
shop.user = Selling to
sidebar.bill.list = My bills
sidebar.bill.listAll = All bills
sidebar.bill.summary = Summary of bills
sidebar.bills = Bills
sidebar.cardTemplate.create = New card template
sidebar.cardTemplate.list = Show card templates
sidebar.createuser = Register a new account
sidebar.eventorg.list = My organisations
sidebar.map.list = Maps
sidebar.map.placemap = Placemap
sidebar.maps = Maps
sidebar.other = Other
sidebar.product.create = New product
sidebar.product.createBill = Create bill
sidebar.product.list = Products
sidebar.products = Products
sidebar.role.create = New role
sidebar.role.list = Roles
sidebar.roles = Roles
sidebar.shop.readerEvents = Reader events
sidebar.shop.readerlist = Show readers
sidebar.user.create = New user
sidebar.user.editself = My preferences
sidebar.user.list = Users
sidebar.users = Users
sidebar.utils.flushCache = Flush Cache
sidebar.utils.testdata = Testdata
submenu.bill.billSummary = Bill summary
submenu.bill.list = My bills
submenu.bill.listAll = All bills
submenu.map.create = Create map
submenu.map.list = List maps
submenu.product.create = Create product
submenu.product.list = List products
supernavi.admin = Adminview
supernavi.user = Userview
topnavi.billing = Billing
topnavi.frontpage = Frontpage
topnavi.maps = Maps
topnavi.placemap = Map
topnavi.poll = Polls
topnavi.products = Products
topnavi.shop = Shop
topnavi.user = My properties
user.accountBalance = Account balance
user.accountEventHeader = Account events
user.accountEvents = Account events
user.address = Address
user.bank = Bank
user.bankaccount = Bank number
user.changePassword = Change password
user.create = Create user
user.createdmessage = User has been created successfully. You can now login.
user.defaultImage = Default picture
user.edit = Edit
user.email = Email
user.firstNames = Firstname
user.hasImage = Image
user.image = Image
user.imagelist = Saved images
user.imagesubmit = Send image
user.insertToken = Insert token
user.lastName = Lastname
user.login = Login
user.myGroups = My place reservations
user.nick = Nick
user.noAccountevents = No account events
user.noCurrentImage = No image
user.noImage = No image
user.password = Password
user.passwordcheck = Password ( again )
user.passwordlengthMessage = Password is too short!
user.phone = Tel
user.realname = Name
user.roles = Roles
user.rolesave = Save roles
user.save = Save
user.saveFailed = Save failed, Not enough permissions!
user.saveSuccessfull = Changes saved successfully
user.sendPicture = Send image
user.sex = Sex
user.sex.FEMALE = Female
user.sex.MALE = Male
user.sex.UNDEFINED = Undefined
user.shop = Buy
user.superadmin = Superadmin
user.thisIsCurrentImage = Current image
user.town = City
user.uploadimage = Send image
user.username = Username
user.validate.notUniqueUsername = Username already exists. Please select another.
user.wholeName = Name
user.zipCode = Postal nr.
userimage.webcam = Take picture with webcam
userlist.header = Users
userlist.search = Search
userview.header = Users
userview.loginstringFaulty = Username has to be atleast 2 characters long!
userview.passwordTooShort = Password has to be atleast 5 characters long!
userview.passwordsChanged = Password changed
userview.passwordsDontMatch = Passwords do not match! Please try again!
userview.userExists = Username already exists! please select another.
viewexpired.body = Please login again.
viewexpired.title = Login expired. Please login again.
#Generated by ResourceBundle Editor (http://eclipse-rbe.sourceforge.net)
#Bill number
# Validationmessages
global.infomail=info@streamparty.org
global.webpage=http\u003A//www.streamparty.org
bill.billMarkedPaidMail.message = Your deposit number {0} has been marked as paid.
bill.billMarkedPaidMail.subject = [Streamparty] Your credits have been updated
bill.billMarkedPaidMail.message=Your bill number {0} has been marked as paid.
bill.billMarkedPaidMail.subject=[INSOMNIA] Lasku merkitty maksetuksi
\ No newline at end of file
global.infomail = info@streamparty.org
global.webpage = http://www.streamparty.org
#Generated by ResourceBundle Editor (http://eclipse-rbe.sourceforge.net)
#Bill number
# Validationmessages
global.eventname=Stream seven
global.eventname = Stream seven
accountEvent.delivered=Toimitettu
accountEvent.edit=Muokkaa
accountEvent.eventTime=Aika
accountEvent.productname=Tuote
accountEvent.quantity=Lkm
accountEvent.total=Yhteens\u00e4
accountEvent.unitPrice=Yks. hinta
accountEvent.commit=Tallenna
accountEvent.seller=Myyj\u00e4
accountEvent.unitPrice=Yksikk\u00f6hinta
bill.addr1=Osoite 1
bill.addr2=Osoite 2
bill.addr3=Osoite 3
bill.addr4=Osoite 4
bill.addr5=Osoite 5
bill.billNumber=Laskun numero
bill.deliveryTerms=Toimitusehdot
bill.edit=Muokkaa
bill.isPaid=Maksettu
bill.markPaid=Maksettu
bill.notes=Huomioita
bill.noticetime=Huomautusaika
bill.ourReference=Myyj\u00e4n viite
bill.paidDate=Maksup\u00e4iv\u00e4
bill.payer=Maksaja
bill.paymentTime=Maksuehdot
bill.printBill=Tulosta lasku
bill.referenceNumberBase=Viitenumeropohja
bill.referencenumber=Viitenumero
bill.sentDate=P\u00e4iv\u00e4ys
bill.theirReference=Asiakkaan viite
bill.totalPrice=Laskun summa
billine.name=Tuote
billine.quantity=Lukum\u00e4\u00e4r\u00e4
billine.referencedProduct=Tuoteviittaus
billine.save=Tallenna
billine.unitName=Yksikk\u00f6
billine.unitPrice=Yksikk\u00f6hinta
billine.vat=ALV
bills.noBills=Ei laskuja
cardTemplate.name=Korttipohja
cardTemplate.power=Teho
cardTemplate.roles=Yhdistetyt roolit
discount.active=Aktiivinen
discount.amountMax=Enimm\u00e4ism\u00e4\u00e4r\u00e4
discount.amountMin=V\u00e4himm\u00e4ism\u00e4\u00e4r\u00e4
discount.code=Alennuskoodi
discount.create=Luo uusi
discount.details=Tiedot
discount.edit=Muokkaa
discount.maxNum=Alennusten enimm\u00e4islkm
discount.perUser=Alennuksia per k\u00e4ytt\u00e4j\u00e4
discount.percentage=Alennusprosentti
discount.role=Roolialennus
discount.save=Tallenna
discount.shortdesc=Kuvaus
editplace.header=Muokkaa paikkaa
editplacegroup.header=Paikkaryhm\u00e4n tiedot
eventorg.createEvent=Luo tapahtuma
eventorg.events=Organisaation tapahtumat
eventorgView.eventname=Tapahtuman nimi
game.gamepoints=Insomnia Game pisteet:
global.cancel=Peruuta
global.notauthorized=Sinulla ei ole riitt\u00e4vi\u00e4 oikeuksia t\u00e4lle sivulle.
global.notAuthorizedExecute=Sinulla ei ole riitt\u00e4v\u00e4sti oikeuksia suorittaa t\u00e4t\u00e4 toimenpidett\u00e4!
global.save=Tallenna
imagefile.description=Kuvaus
imagefile.file=Kuvatiedosto
javax.validation.constraints.AssertFalse.message=must be false
javax.validation.constraints.AssertTrue.message=must be true
javax.validation.constraints.DecimalMax.message=must be less than or equal to {value}
javax.validation.constraints.DecimalMin.message=must be greater than or equal to {value}
javax.validation.constraints.Digits.message=numeric value out of bounds (<{integer} digits>.<{fraction} digits> expected)
javax.validation.constraints.Future.message=must be in the future
javax.validation.constraints.Max.message=must be less than or equal to {value}
javax.validation.constraints.Min.message=must be greater than or equal to {value}
javax.validation.constraints.NotNull.message=may not be null
javax.validation.constraints.Null.message=must be null
javax.validation.constraints.Past.message=must be in the past
javax.validation.constraints.Pattern.message=must match "{regexp}"
javax.validation.constraints.Size.message=size must be between {min} and {max}
login.login=Kirjaudu sis\u00e4\u00e4n
login.logout=Kirjaudu ulos
login.logoutmessage=Olet kirjautunut ulos j\u00e4rjestelm\u00e4st\u00e4.
login.password=Salasana
login.submit=Kirjaudu sis\u00e4\u00e4n
login.username=K\u00e4ytt\u00e4j\u00e4tunnus
loginerror.header=Kirjautuminen ep\u00e4onnistui
loginerror.message=K\u00e4ytt\u00e4j\u00e4tunnus tai salasana ei ollut oikein.
loginerror.resetpassword=Salasana unohtunut?
mapManage.lockedPlaces=Lukittu kartasta {0} paikkaa.
mapManage.releasedPlaces=Vapautettu kartasta {0} paikkaa
mapView.buyPlaces=Lukitse valitut paikat
mapView.errorWhenReleasingPlace=Paikkaa vapauttassa tapahtui virhe.
mapView.errorWhenReservingPlace=Paikkaa varatessa tapahtui virhe.
mapView.errorWhileBuyingPlaces=Virhe paikkojen ostossa. Ole hyv\u00e4 ja yrit\u00e4 uudelleen. Jos virhe toistuu ota yhteytt\u00e4 j\u00e4rjest\u00e4jiin.
mapView.notEnoughCreditsToReserve=Sinulla ei ole riitt\u00e4v\u00e4sti suoritettuja konepaikkamaksuja t\u00e4m\u00e4n paikan varaamiseen.
org.hibernate.validator.constraints.Email.message=not a well-formed email address
org.hibernate.validator.constraints.Length.message=length must be between {min} and {max}
org.hibernate.validator.constraints.NotEmpty.message=may not be empty
org.hibernate.validator.constraints.Range.message=must be between {min} and {max}
page.auth.loginerror.header=kirjautuminen ep\u00e4onnistui
passwordChanged.body=Voit nyt kirjautua k\u00e4ytt\u00e4j\u00e4tunnuksella ja uudella salasanalla sis\u00e4\u00e4n j\u00e4rjestelm\u00e4\u00e4n.
passwordChanged.header=Salasana vaihdettu onnistuneesti
passwordReset.hashNotFound=Salasanan vaihto on vanhentunut. Jos haluat vaihtaa salasanan l\u00e4het\u00e4 vaihtopyynt\u00f6 uudelleen.
passwordReset.errorChanging=Odotamaton virhe. Ota yhteytt\u00e4 yll\u00e4pitoon.
passwordreset.mailBody=Voit vaihtaa salasanasi osoitteessa {0}\n\nJos et ole pyyt\u00e4nyt unohtuneen salasanan vaihtamista, ei t\u00e4h\u00e4n viestiin tarvitse reagoida.\n\nTerveisin,\nInsomnia lippupalvelu\nwww.insomnia.fi
passwordreset.mailSubject=[INSOMNIA] Salasanan vaihtaminen
passwordreset.usernotfound=Annettua k\u00e4ytt\u00e4j\u00e4tunnusta ei l\u00f6ydy. Huomioi ett\u00e4 isot ja pienet kirjaimet ovat merkitsevi\u00e4.
permissiondenied.alreadyLoggedIn=Sinulla ei ole riitt\u00e4v\u00e4sti oikeuksia!
permissiondenied.header=P\u00e4\u00e4sy kielletty
permissiondenied.notLoggedIn=Sinulla ei ole riitt\u00e4v\u00e4sti oikeuksia t\u00e4lle sivulle.
place.code=Paikkakoodi
place.commit=Tallenna
place.description=Kuvaus
place.details=Tiedot
place.edit=Muokkaa
place.height=Korkeus
place.mapX=X
place.mapY=Y
place.name=Nimi
place.product=Tuote
place.releasetime=Vapautusaika
place.width=Leveys
place.groupremove=Poista paikka paikkaryhmst
place.noReserver=Ei liitetty kyttjn
place.membership=Yhdistetty k\u00e4ytt\u00e4j\u00e4
placeSelect.legend.blue=Oma valittu paikka
placeSelect.legend.green=Oma ostettu paikka
placeSelect.legend.grey=Vapautetaan tarvittaessa
placeSelect.legend.red=Varattu paikka
placeSelect.legend.white=Vapaa paikka
placeSelect.placeName=Paikka
placeSelect.placePrice=Paikan hinta
placeSelect.placeProductName=Paikan tyyppi
placeSelect.placesleft=Paikkoja j\u00e4ljell\u00e4
placeSelect.reservationPrice=Tilauksen hinta
placeSelect.reservedPlaces=Valitut paikat
placeSelect.totalPlaces=Paikkoja yhteens\u00e4
placegroup.created=Luotu
placegroup.creator=Varaaja
placegroup.details=Tiedot
placegroup.edit=N\u00e4yt\u00e4
placegroup.edited=Muokattu
placegroup.name=Nimi
placegroup.places=Paikat
placegroup.printPdf=Tulosta paikkakoodit
placegroupview.groupCreator=Varaaja
placegroupview.header=Omat paikat
placegroupview.noMemberships=Ei omia paikkoja
placegroupview.placeReleaseFailed=Paikan vapauttaminen ep\u00e4onnistui!
placegroupview.placeReleased=Paikka {0} vapautettu
placegroupview.releasePlace=Vapauta
placegroupview.reservationName=Paikka
placegroupview.token=Paikkakoodi / k\u00e4ytt\u00e4j\u00e4
placegroupview.toptext=
placetoken.commit=Liit\u00e4
placetoken.pageHeader=Lis\u00e4\u00e4 konepaikkakoodi
placetoken.token=Paikkakoodi
placetoken.tokenNotFound=Paikkakoodia ei l\u00f6ytynyt! Tarkista koodi.
placetoken.placelist=Omat paikat
placetoken.topText=Voit yhdist\u00e4\u00e4 paikan omaan k\u00e4ytt\u00e4j\u00e4tunnukseesi sy\u00f6tt\u00e4m\u00e4ll\u00e4 paikkakoodin allaolevaan kentt\u00e4\u00e4n.
poll.answer=Vastaa kyselyyn
poll.save=L\u00e4het\u00e4 vastauksesi
product.barcode=Viivakoodi
product.boughtTotal=Tuotteita laskutettu
product.cart.count=Ostoskoriin
product.create=Luo tuote
product.edit=Muokkaa
product.name=Tuotteen nimi
product.paid=Maksettu
product.prepaid=Prepaid
product.prepaidInstant=Luodaan kun prepaid maksetaan
product.price=Tuotteen hinta
product.save=Tallenna
product.shopInstant=Luo k\u00e4teismaksu tuotteille
product.sort=J\u00e4rjestys luku
product.unitName=Tuoteyksikk\u00f6
product.vat=ALV
products.save=Tallenna
productshop.commit=Osta
productshop.noItemsInCart=Ostoskorissa ei ole tuotteita
productshop.billCreated=Lasku luotu
reader.assocToCard=Yhdist\u00e4 korttiin
reader.name=Lukijan nimi
reader.tag=Tag
reader.user=K\u00e4ytt\u00e4j\u00e4
readerevent.associateToUser=Yhdist\u00e4 k\u00e4ytt\u00e4j\u00e4\u00e4n
readerevent.seenSince=N\u00e4hty viimeksi
readerevent.shopToUser=Osta k\u00e4ytt\u00e4j\u00e4lle
readerview.cards=Kortit ( tulostuslkm )
resetMail.body=Voit vaihtaa unohtuneen salasanan sy\u00f6tt\u00e4m\u00e4ll\u00e4 k\u00e4ytt\u00e4j\u00e4tunnuksesi allaolevaan kentt\u00e4\u00e4n. Tunnukseen liitettyyn s\u00e4hk\u00f6postiosoitteeseen l\u00e4hetet\u00e4\u00e4n kertak\u00e4ytt\u00f6inen osoite jossa voit vaihtaa sy\u00f6tt\u00e4m\u00e4si k\u00e4ytt\u00e4j\u00e4tunnuksen salasanan.
resetMail.header=Unohtuneen salasanan vaihto
resetMail.send=L\u00e4het\u00e4 s\u00e4hk\u00f6posti
resetMail.username=K\u00e4ytt\u00e4j\u00e4tunnus
resetmailSent.body=Antamasi k\u00e4ytt\u00e4j\u00e4tunnuksen s\u00e4hk\u00f6postiosoitteeseen on l\u00e4hetetty osoite jossa voit vaihtaa tunnuksen salasanan.
resetmailSent.header=S\u00e4hk\u00f6posti l\u00e4hetetty
role.create=Luo rooli
role.description=Kuvaus
role.edit.save=Tallenna
role.edit=Muokkaa
role.name=Nimi
role.parents=Periytyy
role.cardtemplate=Korttipohja
role.savePermissions=Tallenna oikeudet
shop.accountBalance=Tilin saldo
shop.user=Myyd\u00e4\u00e4n
sidebar.bill.list=Omat laskut
sidebar.bill.listAll=Kaikki laskut
sidebar.bill.summary=Laskujen yhteenveto
sidebar.bills=Laskut
sidebar.cardTemplate.create=Uusi korttipohja
sidebar.cardTemplate.list=N\u00e4yt\u00e4 korttipohjat
sidebar.createuser=Rekister\u00f6idy uudeksi k\u00e4ytt\u00e4j\u00e4ksi
sidebar.eventorg.list=Omat organisaatiot
sidebar.map.list=Kartat
sidebar.map.placemap=Paikkakartta
sidebar.maps=Kartat
sidebar.other=Muuta
sidebar.product.create=Uusi tuote
sidebar.product.createBill=Luo lasku
sidebar.product.list=Tuotteet
sidebar.products=Tuotteet
sidebar.role.create=Uusi rooli
sidebar.role.list=Roolit
sidebar.roles=Roolit
sidebar.shop.readerEvents=Lukijan tapahtumat
sidebar.shop.readerlist=N\u00e4yt\u00e4 lukijat
sidebar.user.create=Uusi k\u00e4ytt\u00e4j\u00e4
sidebar.user.list=K\u00e4ytt\u00e4j\u00e4t
sidebar.users=K\u00e4ytt\u00e4j\u00e4t
sidebar.utils.flushCache=Flush Cache
sidebar.utils.testdata=Testdata
topmenu.adminfront=Admintavaraa
menu.poll.index=Kyselyt
menu.index=Etusivu
menu.user.edit=Omat tiedot
menu.place.placemap=Paikkakartta
menu.shop.createBill=Kauppa
submenu.shop.createBill=Luo lasku
submenu.bill.list=N\u00e4yt\u00e4 omat laskut
submenu.index=Etusivu
submenu.user.create=Luo uusi kyttj
submenu.auth.sendResetMail=Salasanan palautus
submenu.user.sendPicture=Lhet kuva
submenu.user.userlinks=Muokkaa tietoja
submenu.user.edit=K\u00e4ytt\u00e4j\u00e4n tiedot
user.changePassword=Vaihda salasana
submenu.user.changePassword=Vaihda salasana
submenu.user.accountEvents=Tilitapahtumat
submenu.place.myGroups=Omat paikkavaraukset
submenu.place.insertToken=Sy\u00f6t\u00e4 paikkakoodi
submenu.user.manageuserlinks=Hallitse k\u00e4ytt\u00e4ji\u00e4
submenu.user.list=Kaikki k\u00e4ytt\u00e4j\u00e4t
submenu.user.create=Luo k\u00e4ytt\u00e4j\u00e4
submenu.user.rolelinks=Hallitse rooleja
submenu.role.list=Roolit
submenu.role.create=Luo rooli
submenu.user.listCardTemplates=Korttiryhm\u00e4t
submenu.user.createCardTemplate=Luo korttiryhm\u00e4
topmenu.game=Insomnia Game
topmenu.poll=Kyselyt
topmenu.rfidshop=Staffshop
user.accountBalance=Tilin saldo
user.accountEventHeader=Tilitapahtumat
user.address=Osoite
user.bank=Pankki
user.bankaccount=Pankkitili
user.imageUploaded=Kuva lhetetty.
user.accountevents=Tilitapahtumat
user.create=Luo k\u00e4ytt\u00e4j\u00e4
user.createdmessage=K\u00e4ytt\u00e4j\u00e4tunnus on luotu onnistuneesti. Voit nyt kirjautua sis\u00e4\u00e4n.
user.defaultImage=Oletukuva
user.edit=Muokkaa
user.email=S\u00e4hk\u00f6posti
user.firstNames=Etunimi
user.hasImage=Kuva
user.imagelist=Tallennetut kuvat
user.imagesubmit=L\u00e4het\u00e4 kuva
user.lastName=Sukunimi
user.login=K\u00e4ytt\u00e4j\u00e4tunnus
user.nick=Nick
user.noAccountevents=Ei tilitapahtumia
user.noCurrentImage=Ei kuvaa
user.noImage=EI kuvaa
user.password=Salasana
user.passwordcheck=Salasana ( uudelleen )
user.passwordlengthMessage=Salasana liian lyhyt
user.phone=Puhelin
user.realname=Nimi
user.roles=Roolit
user.rolesave=Tallenna roolit
user.save=Tallenna
user.sendPicture=Kuvan lhetys
sendPicture.header=Lhet kuva
user.sex.FEMALE=Nainen
user.sex.MALE=Mies
user.sex.UNDEFINED=M\u00e4\u00e4rittelem\u00e4tt\u00e4
user.sex=Sukupuoli
user.shop=Osta
user.successfullySaved=Tiedot tallennettu onnistuneesti
user.superadmin=Superadmin
user.thisIsCurrentImage=Nykyinen kuva
user.town=Kaupunki
user.uploadimage=L\u00e4het\u00e4 kuva
user.username=K\u00e4ytt\u00e4j\u00e4tunnus
user.validate.notUniqueUsername=K\u00e4ytt\u00e4j\u00e4tunnus on jo olemassa. Ole hyv\u00e4 ja valitse toinen tunnus
user.wholeName=Nimi
user.zipCode=Postinumero
user.placegroups=Omat paikkaryhm\u00e4t
user.noPlacegroups
userimage.webcam=Ota kuva webkameralla
userview.loginstringFaulty=K\u00e4ytt\u00e4j\u00e4tunnus virheellinen. Pit\u00e4\u00e4 olla v\u00e4hint\u00e4\u00e4n kaksi merkki\u00e4 pitk\u00e4.
userview.passwordTooShort=Salasana liian lyhyt. Pit\u00e4\u00e4 olla v\u00e4hint\u00e4\u00e4n {0} merkki\u00e4 pitk\u00e4.
userview.passwordsChanged=Salasana vaihdettu
userview.passwordsDontMatch=Salasanat eiv\u00e4t ole samat! Ole hyv\u00e4 ja sy\u00f6t\u00e4 salasanat uudelleen.
userview.userExists=K\u00e4ytt\u00e4j\u00e4tunnus on jo olemassa. Ole hyv\u00e4 ja valitse toinen tunnus.
viewexpired.body=Ole hyv\u00e4 ja kirjaudu sis\u00e4\u00e4n uudelleen.
viewexpired.title=N\u00e4kym\u00e4 on vanhentunut
page.auth.logout.header=Uloskirjautuminen
page.bill.billSummary.header=Laskujen yhteenveto
bill.markedPaid=Lasku merkitty maksetuksi.
page.product.createBill.header=Osta tuotteita
index.title=Etusivu
user.edit.title=K\u00e4ytt\u00e4j\u00e4n tiedot
user.changepassword.title=Vaihda salasana
user.changepassword.forUser=K\u00e4ytt\u00e4j\u00e4lle
page.place.placemap.header=Paikkakartta
page.bill.list.header=Laskut
page.bill.edit.header=Laskun tiedot
page.auth.logoutsuccess.header=Logout
page.user.create.header=Luo uusi k\u00e4ytt\u00e4j\u00e4
page.auth.resetPassword.header=Nollaa salasana
page.place.mygroups.header=Paikkaryhm\u00e4t
page.place.insertToken.header=Sy\u00f6t\u00e4 paikkakoodi
page.account.list.header=Tilitapahtumat
applicationPermission.name=Oikeusryhm\u00e4
applicationPermission.description=kuvaus
userlist.header=Etsi k\u00e4ytt\u00e4ji\u00e4
userlist.search=Etsi
pagination.results=Tuloksia
pagination.pages=Sivuja
pagination.firstpage=Ensimm\u00e4inen
pagination.previouspage=Edellinen
pagination.nextpage=Seuraava
pagination.lastpage=Viimeinen
newslist.header=Uutisryhmt
newsgroup.name=Uutisryhmn nimi
newsgroup.priority=Jrjestysnumero
newsgroup.writerRole=Kirjoittajaryhm
newsgroup.edit=Muokkaa
newsgroup.readerRole=Lukijoiden roolit
news.title=Otsikko
news.abstract=Lyhennelm
news.publish=Julkaise
news.expire=Lopeta julkaisu
news.save=Tallenna
usertitle.managingUser=Hallitaan k\u00e4ytt\u00e4j\u00e4\u00e4
actionlog.messagelist.header=ActionLog
actionlog.messagelist.description=Voit seurata sek\u00e4 luoda uusia ActionMessageja tss n\u00e4kym\u00e4ss\u00e4.
actionlog.tasklist.header=Viestilista
actionlog.create.header=Luo uusi ActionMessage
actionlog.create.role=Kohderooli
actionlog.create.message=Viesti
actionlog.create.taskradio=Teht\u00e4v\u00e4
actionlog.create.submitbutton=L\u00e4het\u00e4
actionlog.time=Aika
actionlog.user=Tekij\u00e4
actionlog.crew=Crew
actionlog.message=Tapahtuma
actionlog.task=Taski
actionlog.messagestate.NEW=Uusi
actionlog.messagestate.PENDING=Ty\u00f6n alla
actionlog.messagestate.DONE=Tehty
actionlog.state=Tila
\ No newline at end of file
accountEvent.commit = Tallenna
accountEvent.delivered = Toimitettu
accountEvent.edit = Muokkaa
accountEvent.eventTime = Aika
accountEvent.productname = Tuote
accountEvent.quantity = Lkm
accountEvent.seller = Myyj\u00E4
accountEvent.total = Yhteens\u00E4
accountEvent.unitPrice = Yksikk\u00F6hinta
actionlog.create.header = Luo uusi ActionMessage
actionlog.create.message = Viesti
actionlog.create.role = Kohderooli
actionlog.create.submitbutton = L\u00E4het\u00E4
actionlog.create.taskradio = Teht\u00E4v\u00E4
actionlog.crew = Crew
actionlog.message = Tapahtuma
actionlog.messagelist.description = Voit seurata sek\u00E4 luoda uusia ActionMessageja t\u00E4ss\u00E4 n\u00E4kym\u00E4ss\u00E4.
actionlog.messagelist.header = ActionLog
actionlog.messagestate.DONE = Tehty
actionlog.messagestate.NEW = Uusi
actionlog.messagestate.PENDING = Ty\u00F6n alla
actionlog.state = Tila
actionlog.task = Taski
actionlog.tasklist.header = Viestilista
actionlog.time = Aika
actionlog.user = Tekij\u00E4
applicationPermission.description = kuvaus
applicationPermission.name = Oikeusryhm\u00E4
bill.addr1 = Osoite 1
bill.addr2 = Osoite 2
bill.addr3 = Osoite 3
bill.addr4 = Osoite 4
bill.addr5 = Osoite 5
bill.billNumber = Laskun numero
bill.deliveryTerms = Toimitusehdot
bill.edit = Muokkaa
bill.isPaid = Maksettu
bill.markPaid = Maksettu
bill.markedPaid = Lasku merkitty maksetuksi.
bill.notes = Huomioita
bill.noticetime = Huomautusaika
bill.ourReference = Myyj\u00E4n viite
bill.paidDate = Maksup\u00E4iv\u00E4
bill.payer = Maksaja
bill.paymentTime = Maksuehdot
bill.printBill = Tulosta lasku
bill.referenceNumberBase = Viitenumeropohja
bill.referencenumber = Viitenumero
bill.sentDate = P\u00E4iv\u00E4ys
bill.theirReference = Asiakkaan viite
bill.totalPrice = Laskun summa
billine.name = Tuote
billine.quantity = Lukum\u00E4\u00E4r\u00E4
billine.referencedProduct = Tuoteviittaus
billine.save = Tallenna
billine.unitName = Yksikk\u00F6
billine.unitPrice = Yksikk\u00F6hinta
billine.vat = ALV
bills.noBills = Ei laskuja
cardTemplate.name = Korttipohja
cardTemplate.power = Teho
cardTemplate.roles = Yhdistetyt roolit
discount.active = Aktiivinen
discount.amountMax = Enimm\u00E4ism\u00E4\u00E4r\u00E4
discount.amountMin = V\u00E4himm\u00E4ism\u00E4\u00E4r\u00E4
discount.code = Alennuskoodi
discount.create = Luo uusi
discount.details = Tiedot
discount.edit = Muokkaa
discount.maxNum = Alennusten enimm\u00E4islkm
discount.perUser = Alennuksia per k\u00E4ytt\u00E4j\u00E4
discount.percentage = Alennusprosentti
discount.role = Roolialennus
discount.save = Tallenna
discount.shortdesc = Kuvaus
editplace.header = Muokkaa paikkaa
editplacegroup.header = Paikkaryhm\u00E4n tiedot
eventorg.createEvent = Luo tapahtuma
eventorg.events = Organisaation tapahtumat
eventorgView.eventname = Tapahtuman nimi
game.gamepoints = Insomnia Game pisteet:
global.cancel = Peruuta
global.notAuthorizedExecute = Sinulla ei ole riitt\u00E4v\u00E4sti oikeuksia suorittaa t\u00E4t\u00E4 toimenpidett\u00E4!
global.notauthorized = Sinulla ei ole riitt\u00E4vi\u00E4 oikeuksia t\u00E4lle sivulle.
global.save = Tallenna
imagefile.description = Kuvaus
imagefile.file = Kuvatiedosto
index.title = Etusivu
javax.validation.constraints.AssertFalse.message = must be false
javax.validation.constraints.AssertTrue.message = must be true
javax.validation.constraints.DecimalMax.message = must be less than or equal to {value}
javax.validation.constraints.DecimalMin.message = must be greater than or equal to {value}
javax.validation.constraints.Digits.message = numeric value out of bounds (<{integer} digits>.<{fraction} digits> expected)
javax.validation.constraints.Future.message = must be in the future
javax.validation.constraints.Max.message = must be less than or equal to {value}
javax.validation.constraints.Min.message = must be greater than or equal to {value}
javax.validation.constraints.NotNull.message = may not be null
javax.validation.constraints.Null.message = must be null
javax.validation.constraints.Past.message = must be in the past
javax.validation.constraints.Pattern.message = must match "{regexp}"
javax.validation.constraints.Size.message = size must be between {min} and {max}
login.login = Kirjaudu sis\u00E4\u00E4n
login.logout = Kirjaudu ulos
login.logoutmessage = Olet kirjautunut ulos j\u00E4rjestelm\u00E4st\u00E4.
login.password = Salasana
login.submit = Kirjaudu sis\u00E4\u00E4n
login.username = K\u00E4ytt\u00E4j\u00E4tunnus
loginerror.header = Kirjautuminen ep\u00E4onnistui
loginerror.message = K\u00E4ytt\u00E4j\u00E4tunnus tai salasana ei ollut oikein.
loginerror.resetpassword = Salasana unohtunut?
map.edit = Muokkaa
map.name = Nimi
mapManage.lockedPlaces = Lukittu kartasta {0} paikkaa.
mapManage.releasedPlaces = Vapautettu kartasta {0} paikkaa
mapView.buyPlaces = Lukitse valitut paikat
mapView.errorWhenReleasingPlace = Paikkaa vapauttassa tapahtui virhe.
mapView.errorWhenReservingPlace = Paikkaa varatessa tapahtui virhe.
mapView.errorWhileBuyingPlaces = Virhe paikkojen ostossa. Ole hyv\u00E4 ja yrit\u00E4 uudelleen. Jos virhe toistuu ota yhteytt\u00E4 j\u00E4rjest\u00E4jiin.
mapView.notEnoughCreditsToReserve = Sinulla ei ole riitt\u00E4v\u00E4sti suoritettuja konepaikkamaksuja t\u00E4m\u00E4n paikan varaamiseen.
menu.index = Etusivu
menu.place.placemap = Paikkakartta
menu.poll.index = Kyselyt
menu.shop.createBill = Kauppa
menu.user.edit = Omat tiedot
news.abstract = Lyhennelm\uFFFD
news.expire = Lopeta julkaisu
news.publish = Julkaise
news.save = Tallenna
news.title = Otsikko
newsgroup.edit = Muokkaa
newsgroup.name = Uutisryhm\uFFFDn nimi
newsgroup.priority = J\uFFFDrjestysnumero
newsgroup.readerRole = Lukijoiden roolit
newsgroup.writerRole = Kirjoittajaryhm\uFFFD
newslist.header = Uutisryhm\uFFFDt
org.hibernate.validator.constraints.Email.message = not a well-formed email address
org.hibernate.validator.constraints.Length.message = length must be between {min} and {max}
org.hibernate.validator.constraints.NotEmpty.message = may not be empty
org.hibernate.validator.constraints.Range.message = must be between {min} and {max}
page.account.list.header = Tilitapahtumat
page.auth.loginerror.header = kirjautuminen ep\u00E4onnistui
page.auth.logout.header = Uloskirjautuminen
page.auth.logoutsuccess.header = Logout
page.auth.resetPassword.header = Nollaa salasana
page.bill.billSummary.header = Laskujen yhteenveto
page.bill.edit.header = Laskun tiedot
page.bill.list.header = Laskut
page.place.insertToken.header = Sy\u00F6t\u00E4 paikkakoodi
page.place.mygroups.header = Paikkaryhm\u00E4t
page.place.placemap.header = Paikkakartta
page.product.createBill.header = Osta tuotteita
page.user.create.header = Luo uusi k\u00E4ytt\u00E4j\u00E4
pagination.firstpage = Ensimm\u00E4inen
pagination.lastpage = Viimeinen
pagination.nextpage = Seuraava
pagination.pages = Sivuja
pagination.previouspage = Edellinen
pagination.results = Tuloksia
passwordChanged.body = Voit nyt kirjautua k\u00E4ytt\u00E4j\u00E4tunnuksella ja uudella salasanalla sis\u00E4\u00E4n j\u00E4rjestelm\u00E4\u00E4n.
passwordChanged.header = Salasana vaihdettu onnistuneesti
passwordReset.errorChanging = Odotamaton virhe. Ota yhteytt\u00E4 yll\u00E4pitoon.
passwordReset.hashNotFound = Salasanan vaihto on vanhentunut. Jos haluat vaihtaa salasanan l\u00E4het\u00E4 vaihtopyynt\u00F6 uudelleen.
passwordreset.mailBody = Voit vaihtaa salasanasi osoitteessa {0}\n\nJos et ole pyyt\u00E4nyt unohtuneen salasanan vaihtamista, ei t\u00E4h\u00E4n viestiin tarvitse reagoida.\n\nTerveisin,\nInsomnia lippupalvelu\nwww.insomnia.fi
passwordreset.mailSubject = [INSOMNIA] Salasanan vaihtaminen
passwordreset.usernotfound = Annettua k\u00E4ytt\u00E4j\u00E4tunnusta ei l\u00F6ydy. Huomioi ett\u00E4 isot ja pienet kirjaimet ovat merkitsevi\u00E4.
permissiondenied.alreadyLoggedIn = Sinulla ei ole riitt\u00E4v\u00E4sti oikeuksia!
permissiondenied.header = P\u00E4\u00E4sy kielletty
permissiondenied.notLoggedIn = Sinulla ei ole riitt\u00E4v\u00E4sti oikeuksia t\u00E4lle sivulle.
place.code = Paikkakoodi
place.commit = Tallenna
place.description = Kuvaus
place.details = Tiedot
place.edit = Muokkaa
place.groupremove = Poista paikka paikkaryhm\uFFFDst\uFFFD
place.height = Korkeus
place.mapX = X
place.mapY = Y
place.membership = Yhdistetty k\u00E4ytt\u00E4j\u00E4
place.name = Nimi
place.noReserver = Ei liitetty k\uFFFDytt\uFFFDj\uFFFD\uFFFDn
place.product = Tuote
place.releasetime = Vapautusaika
place.width = Leveys
placeSelect.legend.blue = Oma valittu paikka
placeSelect.legend.green = Oma ostettu paikka
placeSelect.legend.grey = Vapautetaan tarvittaessa
placeSelect.legend.red = Varattu paikka
placeSelect.legend.white = Vapaa paikka
placeSelect.placeName = Paikka
placeSelect.placePrice = Paikan hinta
placeSelect.placeProductName = Paikan tyyppi
placeSelect.placesleft = Paikkoja j\u00E4ljell\u00E4
placeSelect.reservationPrice = Tilauksen hinta
placeSelect.reservedPlaces = Valitut paikat
placeSelect.totalPlaces = Paikkoja yhteens\u00E4
placegroup.created = Luotu
placegroup.creator = Varaaja
placegroup.details = Tiedot
placegroup.edit = N\u00E4yt\u00E4
placegroup.edited = Muokattu
placegroup.name = Nimi
placegroup.places = Paikat
placegroup.printPdf = Tulosta paikkakoodit
placegroupview.groupCreator = Varaaja
placegroupview.header = Omat paikat
placegroupview.noMemberships = Ei omia paikkoja
placegroupview.placeReleaseFailed = Paikan vapauttaminen ep\u00E4onnistui!
placegroupview.placeReleased = Paikka {0} vapautettu
placegroupview.releasePlace = Vapauta
placegroupview.reservationName = Paikka
placegroupview.token = Paikkakoodi / k\u00E4ytt\u00E4j\u00E4
placetoken.commit = Liit\u00E4
placetoken.pageHeader = Lis\u00E4\u00E4 konepaikkakoodi
placetoken.placelist = Omat paikat
placetoken.token = Paikkakoodi
placetoken.tokenNotFound = Paikkakoodia ei l\u00F6ytynyt! Tarkista koodi.
placetoken.topText = Voit yhdist\u00E4\u00E4 paikan omaan k\u00E4ytt\u00E4j\u00E4tunnukseesi sy\u00F6tt\u00E4m\u00E4ll\u00E4 paikkakoodin allaolevaan kentt\u00E4\u00E4n.
poll.answer = Vastaa kyselyyn
poll.begin = Avaa kysely
poll.description = Kuvaus
poll.end = Sulje kysely
poll.name = Kyselyn nimi
poll.save = L\u00E4het\u00E4 vastauksesi
product.barcode = Viivakoodi
product.billed = Laskutettu
product.boughtTotal = Tuotteita laskutettu
product.cart.count = Ostoskoriin
product.cashed = Ostettu k\u00E4teisell\u00E4
product.color = V\u00E4ri k\u00E4ytt\u00F6liittym\u00E4ss\u00E4
product.create = Luo tuote
product.createDiscount = Lis\u00E4\u00E4 m\u00E4\u00E4r\u00E4alennus
product.edit = Muokkaa
product.name = Tuotteen nimi
product.paid = Maksettu
product.prepaid = Prepaid
product.prepaidInstant = Luodaan kun prepaid maksetaan
product.price = Tuotteen hinta
product.save = Tallenna
product.shopInstant = Luo k\u00E4teismaksu tuotteille
product.sort = J\u00E4rjestys luku
product.unitName = Tuoteyksikk\u00F6
product.vat = ALV
products.save = Tallenna
productshop.billCreated = Lasku luotu
productshop.commit = Osta
productshop.noItemsInCart = Ostoskorissa ei ole tuotteita
reader.assocToCard = Yhdist\u00E4 korttiin
reader.name = Lukijan nimi
reader.tag = Tag
reader.user = K\u00E4ytt\u00E4j\u00E4
readerevent.associateToUser = Yhdist\u00E4 k\u00E4ytt\u00E4j\u00E4\u00E4n
readerevent.seenSince = N\u00E4hty viimeksi
readerevent.shopToUser = Osta k\u00E4ytt\u00E4j\u00E4lle
readerview.cards = Kortit ( tulostuslkm )
resetMail.body = Voit vaihtaa unohtuneen salasanan sy\u00F6tt\u00E4m\u00E4ll\u00E4 k\u00E4ytt\u00E4j\u00E4tunnuksesi allaolevaan kentt\u00E4\u00E4n. Tunnukseen liitettyyn s\u00E4hk\u00F6postiosoitteeseen l\u00E4hetet\u00E4\u00E4n kertak\u00E4ytt\u00F6inen osoite jossa voit vaihtaa sy\u00F6tt\u00E4m\u00E4si k\u00E4ytt\u00E4j\u00E4tunnuksen salasanan.
resetMail.header = Unohtuneen salasanan vaihto
resetMail.send = L\u00E4het\u00E4 s\u00E4hk\u00F6posti
resetMail.username = K\u00E4ytt\u00E4j\u00E4tunnus
resetmailSent.body = Antamasi k\u00E4ytt\u00E4j\u00E4tunnuksen s\u00E4hk\u00F6postiosoitteeseen on l\u00E4hetetty osoite jossa voit vaihtaa tunnuksen salasanan.
resetmailSent.header = S\u00E4hk\u00F6posti l\u00E4hetetty
role.cardtemplate = Korttipohja
role.create = Luo rooli
role.description = Kuvaus
role.edit = Muokkaa
role.edit.save = Tallenna
role.name = Nimi
role.parents = Periytyy
role.savePermissions = Tallenna oikeudet
sendPicture.header = L\uFFFDhet\uFFFD kuva
shop.accountBalance = Tilin saldo
shop.user = Myyd\u00E4\u00E4n
sidebar.bill.list = Omat laskut
sidebar.bill.listAll = Kaikki laskut
sidebar.bill.summary = Laskujen yhteenveto
sidebar.bills = Laskut
sidebar.cardTemplate.create = Uusi korttipohja
sidebar.cardTemplate.list = N\u00E4yt\u00E4 korttipohjat
sidebar.createuser = Rekister\u00F6idy uudeksi k\u00E4ytt\u00E4j\u00E4ksi
sidebar.eventorg.list = Omat organisaatiot
sidebar.map.list = Kartat
sidebar.map.placemap = Paikkakartta
sidebar.maps = Kartat
sidebar.other = Muuta
sidebar.product.create = Uusi tuote
sidebar.product.createBill = Luo lasku
sidebar.product.list = Tuotteet
sidebar.products = Tuotteet
sidebar.role.create = Uusi rooli
sidebar.role.list = Roolit
sidebar.roles = Roolit
sidebar.shop.readerEvents = Lukijan tapahtumat
sidebar.shop.readerlist = N\u00E4yt\u00E4 lukijat
sidebar.user.create = Uusi k\u00E4ytt\u00E4j\u00E4
sidebar.user.list = K\u00E4ytt\u00E4j\u00E4t
sidebar.users = K\u00E4ytt\u00E4j\u00E4t
sidebar.utils.flushCache = Flush Cache
sidebar.utils.testdata = Testdata
submenu.auth.sendResetMail = Salasanan palautus
submenu.bill.billSummary = Laskujen yhteenveto
submenu.bill.list = N\u00E4yt\u00E4 omat laskut
submenu.bill.listAll = Kaikki laskut
submenu.index = Etusivu
submenu.map.create = Uusi kartta
submenu.map.list = N\u00E4yt\u00E4 kartat
submenu.place.insertToken = Sy\u00F6t\u00E4 paikkakoodi
submenu.place.myGroups = Omat paikkavaraukset
submenu.product.create = Uusi tuote
submenu.product.list = Listaa tuotteet
submenu.role.create = Luo rooli
submenu.role.list = Roolit
submenu.shop.createBill = Luo lasku
submenu.user.accountEvents = Tilitapahtumat
submenu.user.changePassword = Vaihda salasana
submenu.user.create = Luo k\u00E4ytt\u00E4j\u00E4
submenu.user.createCardTemplate = Luo korttiryhm\u00E4
submenu.user.edit = K\u00E4ytt\u00E4j\u00E4n tiedot
submenu.user.list = Kaikki k\u00E4ytt\u00E4j\u00E4t
submenu.user.listCardTemplates = Korttiryhm\u00E4t
submenu.user.manageuserlinks = Hallitse k\u00E4ytt\u00E4ji\u00E4
submenu.user.rolelinks = Hallitse rooleja
submenu.user.sendPicture = L\u00E4het\u00E4 kuva
submenu.user.userlinks = Muokkaa tietoja
supernavi.admin = Yll\u00E4piton\u00E4kym\u00E4
supernavi.user = K\u00E4ytt\u00E4j\u00E4n\u00E4kym\u00E4
topnavi.billing = Laskutus
topnavi.frontpage = Etusivu
topnavi.maps = Kartat
topnavi.placemap = Paikkakartta
topnavi.poll = Kyselyt
topnavi.products = Tuotteet
topnavi.shop = Kauppa
topnavi.user = Omat tiedot
user.accountBalance = Tilin saldo
user.accountEventHeader = Tilitapahtumat
user.accountevents = Tilitapahtumat
user.address = Osoite
user.bank = Pankki
user.bankaccount = Pankkitili
user.changePassword = Vaihda salasana
user.changepassword.forUser = K\u00E4ytt\u00E4j\u00E4lle
user.changepassword.title = Vaihda salasana
user.create = Luo k\u00E4ytt\u00E4j\u00E4
user.createdmessage = K\u00E4ytt\u00E4j\u00E4tunnus on luotu onnistuneesti. Voit nyt kirjautua sis\u00E4\u00E4n.
user.defaultImage = Oletukuva
user.edit = Muokkaa
user.edit.title = K\u00E4ytt\u00E4j\u00E4n tiedot
user.email = S\u00E4hk\u00F6posti
user.firstNames = Etunimi
user.hasImage = Kuva
user.imageUploaded = Kuva l\uFFFDhetetty.
user.imagelist = Tallennetut kuvat
user.imagesubmit = L\u00E4het\u00E4 kuva
user.lastName = Sukunimi
user.login = K\u00E4ytt\u00E4j\u00E4tunnus
user.nick = Nick
user.noAccountevents = Ei tilitapahtumia
user.noCurrentImage = Ei kuvaa
user.noImage = EI kuvaa
user.password = Salasana
user.passwordcheck = Salasana ( uudelleen )
user.passwordlengthMessage = Salasana liian lyhyt
user.phone = Puhelin
user.placegroups = Omat paikkaryhm\u00E4t
user.realname = Nimi
user.roles = Roolit
user.rolesave = Tallenna roolit
user.save = Tallenna
user.sendPicture = Kuvan l\uFFFDhetys
user.sex = Sukupuoli
user.sex.FEMALE = Nainen
user.sex.MALE = Mies
user.sex.UNDEFINED = M\u00E4\u00E4rittelem\u00E4tt\u00E4
user.shop = Osta
user.successfullySaved = Tiedot tallennettu onnistuneesti
user.superadmin = Superadmin
user.thisIsCurrentImage = Nykyinen kuva
user.town = Kaupunki
user.uploadimage = L\u00E4het\u00E4 kuva
user.username = K\u00E4ytt\u00E4j\u00E4tunnus
user.validate.notUniqueUsername = K\u00E4ytt\u00E4j\u00E4tunnus on jo olemassa. Ole hyv\u00E4 ja valitse toinen tunnus
user.wholeName = Nimi
user.zipCode = Postinumero
userimage.webcam = Ota kuva webkameralla
userlist.header = Etsi k\u00E4ytt\u00E4ji\u00E4
userlist.search = Etsi
usertitle.managingUser = Hallitaan k\u00E4ytt\u00E4j\u00E4\u00E4
userview.loginstringFaulty = K\u00E4ytt\u00E4j\u00E4tunnus virheellinen. Pit\u00E4\u00E4 olla v\u00E4hint\u00E4\u00E4n kaksi merkki\u00E4 pitk\u00E4.
userview.passwordTooShort = Salasana liian lyhyt. Pit\u00E4\u00E4 olla v\u00E4hint\u00E4\u00E4n {0} merkki\u00E4 pitk\u00E4.
userview.passwordsChanged = Salasana vaihdettu
userview.passwordsDontMatch = Salasanat eiv\u00E4t ole samat! Ole hyv\u00E4 ja sy\u00F6t\u00E4 salasanat uudelleen.
userview.userExists = K\u00E4ytt\u00E4j\u00E4tunnus on jo olemassa. Ole hyv\u00E4 ja valitse toinen tunnus.
viewexpired.body = Ole hyv\u00E4 ja kirjaudu sis\u00E4\u00E4n uudelleen.
viewexpired.title = N\u00E4kym\u00E4 on vanhentunut
#Generated by ResourceBundle Editor (http://eclipse-rbe.sourceforge.net)
#Bill number
# Validationmessages
global.infomail=info@insomnia.fi
global.webpage=http\u003A//www.insomnia.fi
bill.billMarkedPaidMail.message = Laskusi numero {0} on merkitty maksetuksi. Voit nyt siirty\u00E4 lippukauppaan varamaamaan haluamasi paikat. \nTervetuloa tapahtumaan!\n\nTerveisin,\nInsomnia lippupalvelu\nwww.insomnia.fi
bill.billMarkedPaidMail.subject = [INSOMNIA] Lasku merkitty maksetuksi
bill.billMarkedPaidMail.message=Laskusi numero {0} on merkitty maksetuksi. Voit nyt siirty\u2030 lippukauppaan varamaamaan haluamasi paikat. \nTervetuloa tapahtumaan!\n\nTerveisin,\nInsomnia lippupalvelu\nwww.insomnia.fi
bill.billMarkedPaidMail.subject=[INSOMNIA] Lasku merkitty maksetuksi
global.infomail = info@insomnia.fi
global.webpage = http://www.insomnia.fi
#Generated by ResourceBundle Editor (http://eclipse-rbe.sourceforge.net)
#Bill number
# Validationmessages
global.eventname=Insomnia XII
global.eventname = Insomnia XII
#Generated by ResourceBundle Editor (http://eclipse-rbe.sourceforge.net)
#Bill number
# Validationmessages
global.eventname=Insomnia XIII
global.eventname = Insomnia XIII
......@@ -15,6 +15,8 @@ import java.util.Date;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.EJBAccessException;
import javax.ejb.EJBException;
import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
......@@ -25,9 +27,10 @@ import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.beans.LoggingBeanLocal;
import fi.insomnia.bortal.beans.PermissionBeanLocal;
import fi.insomnia.bortal.beans.PermissionDeniedException;
import fi.insomnia.bortal.beans.PlaceMapBeanLocal;
import fi.insomnia.bortal.beans.SecurityLogType;
import fi.insomnia.bortal.enums.apps.MapPermission;
import fi.insomnia.bortal.model.EventMap;
import fi.insomnia.bortal.model.Place;
......@@ -49,6 +52,9 @@ public class PlaceMap extends HttpServlet {
@EJB
private transient PermissionBeanLocal permbean;
@EJB
private LoggingBeanLocal loggerbean;
private static final String PARAMETER_EVENT_MAP_ID = "mapid";
/**
......@@ -102,7 +108,7 @@ public class PlaceMap extends HttpServlet {
* out.println("<h1>Servlet PlaceMap at " + request.getContextPath
* () + "</h1>"); out.println("</body>"); out.println("</html>");
*/
} catch (PermissionDeniedException e) {
} catch (EJBException e) {
logger.debug("Permission denied. Returning SC_FORBIDDEN!");
response.setContentType("text/html;charset=UTF-8");
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
......@@ -116,12 +122,15 @@ public class PlaceMap extends HttpServlet {
}
private void printPlaceMapToStream(OutputStream outputStream,
String filetype, EventMap map) throws IOException,
PermissionDeniedException {
permbean.fatalPermission(MapPermission.VIEW,
"User tried to print the placemap to Stream");
String filetype, EventMap map) throws IOException
{
if (!permbean.hasPermission(MapPermission.VIEW))
{
loggerbean.logMessage(SecurityLogType.permissionDenied, permbean.getCurrentUser(),
"User tried to print the placemap to stream without sufficient permissions");
throw new EJBAccessException("Not enough permissions to print placemap");
}
long begin = new Date().getTime();
// List<Place> selectedPlaceList = placeBean.findPlaces(placeIds);
......@@ -251,7 +260,7 @@ public class PlaceMap extends HttpServlet {
} else if (p.isTaken()) {
color = RESERVED_COLOR;
} else if (p.getProduct().getColor() != null) {
try {
color = Color.decode(p.getProduct().getColor());
} catch (NumberFormatException x) {
......
......@@ -5,6 +5,7 @@ import java.io.IOException;
import javax.ejb.EJB;
import javax.ejb.EJBAccessException;
import javax.ejb.EJBException;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
......@@ -13,7 +14,6 @@ import javax.servlet.http.HttpServletResponse;
import fi.insomnia.bortal.beans.BillBeanLocal;
import fi.insomnia.bortal.beans.EventBeanLocal;
import fi.insomnia.bortal.beans.PermissionDeniedException;
import fi.insomnia.bortal.model.Bill;
/**
......@@ -68,7 +68,7 @@ public class PrintBill extends HttpServlet {
ostream.close();
return;
} catch (EJBAccessException e) {
} catch (PermissionDeniedException e) {
} catch (EJBException e) {
}
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
......
......@@ -4,6 +4,7 @@ import java.io.IOException;
import java.io.PrintWriter;
import javax.ejb.EJB;
import javax.ejb.EJBException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
......@@ -18,7 +19,6 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.beans.EventMapBeanLocal;
import fi.insomnia.bortal.beans.PermissionDeniedException;
import fi.insomnia.bortal.beans.UserBeanLocal;
import fi.insomnia.bortal.beans.UtilBeanLocal;
import fi.insomnia.bortal.model.UserImage;
......@@ -121,7 +121,7 @@ public class UploadServlet extends HttpServlet {
} catch (FileUploadException e) {
logger.warn("Error uploading image", e);
retmsg = "Tiedoston tallennuksessa tapahtui virhe!";
} catch (PermissionDeniedException e) {
} catch (EJBException e) {
logger.warn("Error uploading image", e);
retmsg = "Tiedoston tallennuksessa tapahtui virhe!";
......
......@@ -12,7 +12,6 @@ import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.beans.EventBeanLocal;
import fi.insomnia.bortal.beans.EventMapBeanLocal;
import fi.insomnia.bortal.beans.PermissionDeniedException;
import fi.insomnia.bortal.beans.PlaceBeanLocal;
import fi.insomnia.bortal.beans.ProductBeanLocal;
import fi.insomnia.bortal.beans.UserBeanLocal;
......@@ -110,11 +109,8 @@ public class MapManageView extends GenericCDIView {
public String createMap() {
try {
map = eventmapBean.create(getMapname());
} catch (PermissionDeniedException e) {
logger.info("Permission denied", e);
}
map = eventmapBean.create(getMapname());
return "edit";
}
......
......@@ -12,7 +12,6 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.beans.EventBeanLocal;
import fi.insomnia.bortal.beans.PermissionDeniedException;
import fi.insomnia.bortal.beans.PlaceBeanLocal;
import fi.insomnia.bortal.beans.PlaceMapBeanLocal;
import fi.insomnia.bortal.enums.apps.MapPermission;
......@@ -53,8 +52,15 @@ public class MapView extends GenericCDIView {
return user.getAccountBalance().compareTo(BigDecimal.ZERO) > 0;
}
public BigDecimal getReservationPrice() throws PermissionDeniedException {
return placeBean.totalReservationPrice(user, null);
public BigDecimal getReservationPrice() {
BigDecimal ret = null;
if (permbean.isCurrentUser(user))
ret = placeBean.getTotalReservationPrice(null);
else {
ret = placeBean.getTotalReservationPrice(user, null);
}
return ret;
}
public Long getPlacesLeftToSelect() {
......
......@@ -14,7 +14,6 @@ import javax.inject.Named;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.beans.PermissionDeniedException;
import fi.insomnia.bortal.beans.PlaceBeanLocal;
import fi.insomnia.bortal.beans.UserBeanLocal;
import fi.insomnia.bortal.enums.apps.MapPermission;
......@@ -57,7 +56,7 @@ public class PlaceView extends GenericCDIView {
return permbean.hasPermission(MapPermission.MANAGE_MAPS);
}
public String buySelectedPlaces() throws PermissionDeniedException {
public String buySelectedPlaces() {
try {
placebean.buySelectedPlaces(user);
return "/place/myGroups";
......@@ -67,8 +66,7 @@ public class PlaceView extends GenericCDIView {
return null;
}
public void placeSelectActionListener(ActionEvent e) throws PermissionDeniedException {
public void placeSelectActionListener(ActionEvent e) {
super.beginConversation();
FacesContext context = FacesContext.getCurrentInstance();
......@@ -95,7 +93,13 @@ public class PlaceView extends GenericCDIView {
} else if (place.isBuyable() && !place.isTaken()) {
BigDecimal balance = permbean.getCurrentUser().getAccountBalance();
BigDecimal price = placebean.totalReservationPrice(user, place);
BigDecimal price = null;
if (permbean.isCurrentUser(user)) {
price = placebean.getTotalReservationPrice(place);
} else {
price = placebean.getTotalReservationPrice(user, place);
}
logger.debug("Balance {}, price {}", balance, price);
if (price.compareTo(balance) <= 0) {
logger.debug("Place was free. Marking for user.");
......@@ -124,7 +128,7 @@ public class PlaceView extends GenericCDIView {
}
public String reserveForUser() throws PermissionDeniedException {
public String reserveForUser() {
try {
User user = userlist.getRowData();
......
......@@ -9,7 +9,6 @@ import javax.faces.model.ListDataModel;
import javax.inject.Inject;
import javax.inject.Named;
import fi.insomnia.bortal.beans.PermissionDeniedException;
import fi.insomnia.bortal.beans.PlaceGroupBeanLocal;
import fi.insomnia.bortal.beans.UserBeanLocal;
import fi.insomnia.bortal.enums.apps.MapPermission;
......@@ -67,7 +66,7 @@ public class PlacegroupView extends GenericCDIView {
return memberlist;
}
public String releasePlace() throws PermissionDeniedException {
public String releasePlace() {
GroupMembership row = memberlist.getRowData();
if (row != null)
{
......
......@@ -5,7 +5,6 @@ import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;
import javax.inject.Named;
import fi.insomnia.bortal.beans.PermissionDeniedException;
import fi.insomnia.bortal.beans.PlaceGroupBeanLocal;
import fi.insomnia.bortal.enums.apps.MapPermission;
import fi.insomnia.bortal.model.User;
......@@ -27,7 +26,7 @@ public class TokenView extends GenericCDIView {
@EJB
private transient PlaceGroupBeanLocal placegroupbean;
public String saveToken() throws PermissionDeniedException {
public String saveToken() {
super.requirePermissions();
if (!permbean.hasPermission(MapPermission.BUY_PLACES) && !permbean.isCurrentUser(user) && permbean.hasPermission(MapPermission.MANAGE_OTHERS)) {
this.addFaceMessage("permission.denied");
......
......@@ -14,10 +14,7 @@ import javax.servlet.http.HttpServletRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.beans.EventBeanLocal;
import fi.insomnia.bortal.beans.MenubeanLocal;
import fi.insomnia.bortal.beans.PermissionBeanLocal;
import fi.insomnia.bortal.beans.SitePageBeanLocal;
import fi.insomnia.bortal.model.MenuNavigation;
import fi.insomnia.bortal.web.cdiview.GenericCDIView;
......@@ -35,14 +32,6 @@ public class MenuView extends GenericCDIView {
@EJB
private MenubeanLocal menubean;
@EJB
private PermissionBeanLocal permbean;
@EJB
private SitePageBeanLocal sitepagebean;
@EJB
private EventBeanLocal eventbean;
private LinkedList<List<JsfMenuitem>> menus;
private HashSet<MenuNavigation> navis;
......
......@@ -5,6 +5,7 @@ import java.util.List;
import javax.ejb.EJB;
import javax.enterprise.context.ConversationScoped;
import javax.faces.model.ListDataModel;
import javax.inject.Inject;
import javax.inject.Named;
......@@ -12,6 +13,7 @@ import fi.insomnia.bortal.beans.EventBeanLocal;
import fi.insomnia.bortal.beans.EventOrganiserBeanLocal;
import fi.insomnia.bortal.model.EventOrganiser;
import fi.insomnia.bortal.model.LanEvent;
import fi.insomnia.bortal.model.LanEventDomain;
import fi.insomnia.bortal.model.User;
import fi.insomnia.bortal.web.annotations.LoggedIn;
import fi.insomnia.bortal.web.cdiview.GenericCDIView;
......@@ -41,13 +43,28 @@ public class EventOrgView extends GenericCDIView {
private Integer eventid;
private LanEvent event;
private String newdomain;
private ListDataModel<LanEventDomain> eventdomains;
public void initCreate()
{
if (super.requirePermissions(user.isSuperadmin()))
{
if (super.requirePermissions(user.isSuperadmin())) {
super.beginConversation();
}
}
public String removeDomain()
{
event.getDomains().remove(eventdomains.getRowData());
setEvent(eventbean.mergeChanges(event));
return null;
}
public String addDomain() {
getEvent().getDomains().add(new LanEventDomain(getEvent(), newdomain));
setEvent(eventbean.mergeChanges(getEvent()));
return null;
}
public void initEdit() {
......@@ -165,8 +182,17 @@ public class EventOrgView extends GenericCDIView {
return event;
}
public String getNewdomain() {
return newdomain;
}
public void setNewdomain(String newdomain) {
this.newdomain = newdomain;
}
public void setEvent(LanEvent event) {
this.event = event;
eventdomains = new ListDataModel<LanEventDomain>(event.getDomains());
}
}
......@@ -5,7 +5,6 @@ import javax.enterprise.context.ConversationScoped;
import javax.inject.Named;
import fi.insomnia.bortal.beans.BillBeanLocal;
import fi.insomnia.bortal.beans.PermissionDeniedException;
import fi.insomnia.bortal.model.Bill;
import fi.insomnia.bortal.web.cdiview.GenericCDIView;
......@@ -25,7 +24,7 @@ public class BillEditView extends GenericCDIView {
@EJB
private transient BillBeanLocal billbean;
public void initView() throws PermissionDeniedException {
public void initView() {
if (this.requirePermissions(permbean.isLoggedIn())) {
if (billid <= 0 && bill != null) {
this.addFaceMessage("billedit.billnotfound");
......
......@@ -14,7 +14,6 @@ import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.beans.BillBeanLocal;
import fi.insomnia.bortal.beans.EventBeanLocal;
import fi.insomnia.bortal.beans.PermissionDeniedException;
import fi.insomnia.bortal.beans.ProductBeanLocal;
import fi.insomnia.bortal.enums.apps.ShopPermission;
import fi.insomnia.bortal.model.Bill;
......@@ -76,25 +75,20 @@ public class ProductShopView extends GenericCDIView {
Iterator<ProductShopItem> cartIter = shoppingcart.iterator();
try {
Bill bill = new Bill(eventbean.getCurrentEvent(), user);
bill.setOurReference(eventbean.getCurrentEvent().getName());
Bill bill = new Bill(eventbean.getCurrentEvent(), user);
bill.setOurReference(eventbean.getCurrentEvent().getName());
while (cartIter.hasNext()) {
ProductShopItem shopitem = cartIter.next();
if (shopitem.getCount().compareTo(BigDecimal.ZERO) > 0) {
while (cartIter.hasNext()) {
ProductShopItem shopitem = cartIter.next();
if (shopitem.getCount().compareTo(BigDecimal.ZERO) > 0) {
bill.addProduct(shopitem.getProduct(), shopitem.getCount());
bill.addProduct(shopitem.getProduct(), shopitem.getCount());
}
}
billbean.createBill(bill);
addFaceMessage("productshop.billCreated");
} catch (PermissionDeniedException e) {
logger.info("Error committing bill cart", e);
addFaceMessage("productshop.errorCreatingBill");
return "failure";
}
billbean.createBill(bill);
addFaceMessage("productshop.billCreated");
return "/bill/list";
}
......
......@@ -5,7 +5,6 @@ import javax.enterprise.context.ConversationScoped;
import javax.inject.Inject;
import javax.inject.Named;
import fi.insomnia.bortal.beans.PermissionDeniedException;
import fi.insomnia.bortal.beans.UserBeanLocal;
import fi.insomnia.bortal.enums.apps.UserPermission;
import fi.insomnia.bortal.model.User;
......@@ -35,11 +34,7 @@ public class PasswordView extends GenericCDIView {
if (permbean.isCurrentUser(user) || permbean.hasPermission(UserPermission.MODIFY)) {
if (password != null && password.equals(passwordcheck)) {
user.resetPassword(password);
try {
user = userbean.mergeChanges(user);
} catch (PermissionDeniedException e) {
return "permissionDenied";
}
user = userbean.mergeChanges(user);
} else {
super.addFaceMessage("userview.passwordsDontMatch");
return null;
......
......@@ -15,7 +15,6 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.beans.CardTemplateBeanLocal;
import fi.insomnia.bortal.beans.PermissionDeniedException;
import fi.insomnia.bortal.beans.UserBeanLocal;
import fi.insomnia.bortal.enums.apps.UserPermission;
import fi.insomnia.bortal.model.PrintedCard;
......@@ -98,14 +97,10 @@ public class UserView extends GenericCDIView {
public String makeCard()
{
try {
PrintedCard card = cardBean.checkPrintedCard(user);
if (card != null)
{
user = card.getUser();
}
} catch (PermissionDeniedException e) {
logger.info("Error printing card {}", e);
PrintedCard card = cardBean.checkPrintedCard(user);
if (card != null)
{
user = card.getUser();
}
return null;
......@@ -113,12 +108,8 @@ public class UserView extends GenericCDIView {
public String sendImage() {
try {
UserImage userimage = userbean.uploadImage(user, getImage().getContentType(), getImage().getContents(), getImage().getFileName(), "");
user = userimage.getUser();
} catch (PermissionDeniedException e) {
super.addFaceMessage("user.imageUploadFailed");
}
UserImage userimage = userbean.uploadImage(user, getImage().getContentType(), getImage().getContents(), getImage().getFileName(), "");
user = userimage.getUser();
super.addFaceMessage("user.imageUploaded");
return null;
......@@ -156,12 +147,7 @@ public class UserView extends GenericCDIView {
public String saveUser() {
if (permbean.getCurrentUser().equals(user) || permbean.hasPermission(UserPermission.MODIFY)) {
this.addFaceMessage("user.successfullySaved");
try {
user = userbean.mergeChanges(user);
} catch (PermissionDeniedException e) {
logger.warn("Permission denied", e);
this.requirePermissions(false);
}
user = userbean.mergeChanges(user);
} else {
this.addFaceMessage("user.saveFailed");
......
......@@ -10,7 +10,6 @@ import javax.inject.Named;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.beans.PermissionDeniedException;
import fi.insomnia.bortal.beans.UserBeanLocal;
import fi.insomnia.bortal.model.UserImage;
......@@ -34,12 +33,8 @@ public class UserImageConverter implements Converter {
}
int id = Integer.parseInt(value);
UserImage ret;
try {
ret = userbean.findUserImage(id);
} catch (PermissionDeniedException e) {
logger.debug("Permission denied!", e);
ret = null;
}
ret = userbean.findUserImage(id);
return ret;
}
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!