Commit 643097ef by Tuomas Riihimäki

Streamien legacypassutuki

1 parent 8300be38
......@@ -104,13 +104,13 @@ public class BortalLoginModule extends AppservPasswordLoginModule {
throw new LoginException(
(new StringBuilder())
.append("An InvalidOperationException was thrown "
+ " while calling getGroupNames() on the SampleRealm ")
).append(" while calling getGroupNames() on the SampleRealm ")
.append(invalidoperationexception).toString());
} catch (NoSuchUserException nosuchuserexception) {
throw new LoginException(
(new StringBuilder())
.append("A NoSuchUserException was thrown "
+ " while calling getGroupNames() on the SampleRealm ")
).append(" while calling getGroupNames() on the SampleRealm ")
.append(nosuchuserexception).toString());
}
ArrayList<String> authenticatedGroups = new ArrayList<String>();
......
......@@ -25,9 +25,7 @@ import fi.insomnia.bortal.util.MailMessage;
*
*/
@MessageDriven(
activationConfig = { @ActivationConfigProperty(
propertyName = "destinationType", propertyValue = "javax.jms.Queue"
) },
activationConfig = { @ActivationConfigProperty( propertyName = "destinationType", propertyValue = "javax.jms.Queue" ) },
mappedName = "jms/mailque")
public class MailMessageBean implements MessageListener {
@Resource(name = "mail/lanbortal")
......
......@@ -23,7 +23,6 @@ import fi.insomnia.bortal.enums.Permission;
import fi.insomnia.bortal.enums.RolePermission;
import fi.insomnia.bortal.exceptions.PermissionDeniedException;
import fi.insomnia.bortal.facade.GroupMembershipFacade;
import fi.insomnia.bortal.facade.PlaceGroupFacade;
import fi.insomnia.bortal.facade.UserFacade;
import fi.insomnia.bortal.facade.UserImageFacade;
import fi.insomnia.bortal.model.GroupMembership;
......@@ -33,7 +32,6 @@ import fi.insomnia.bortal.model.RoleRight;
import fi.insomnia.bortal.model.User;
import fi.insomnia.bortal.model.UserImage;
import fi.insomnia.bortal.util.MailMessage;
import fi.insomnia.bortal.utilities.BeanContextHolder;
import fi.insomnia.bortal.utilities.BortalLocalContextHolder;
import fi.insomnia.bortal.utilities.I18n;
......
package fi.insomnia.bortal.model;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
......@@ -26,6 +25,7 @@ public class GenericEntity implements ModelInterface {
@Column(name = "id", nullable = false)
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Version
@Column(nullable = false)
private int jpaVersionField = 0;
......
package fi.insomnia.bortal.utilities;
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Random;
......@@ -11,6 +12,8 @@ import fi.insomnia.bortal.utilities.apachecodec.binary.Base64;
public class PasswordFunctions {
private static final String SSHA_PREFIX = "{SSHA}";
private static final Logger logger = LoggerFactory
.getLogger(PasswordFunctions.class);
......@@ -22,7 +25,7 @@ public class PasswordFunctions {
random.nextBytes(salt);
String base64Str = shaWithSaltToBase64(password, salt);
String ssha = "{SSHA}" + base64Str;
String ssha = SSHA_PREFIX + base64Str;
return ssha;
}
......@@ -30,18 +33,21 @@ public class PasswordFunctions {
MessageDigest algo = null;
try {
algo = MessageDigest.getInstance("SHA");
byte[] prehash = concatBytearrays(password.getBytes(), salt);
byte[] hashed = algo.digest(prehash);
byte[] both = concatBytearrays(hashed, salt);
String base64Str = new String(Base64.encodeBase64(both), "UTF-8");
logger.debug("Encoded {} to {}", both, base64Str);
return base64Str;
} catch (NoSuchAlgorithmException e) {
logger.error("WTF!! digest function not found!!", e);
return null;
} catch (UnsupportedEncodingException e) {
logger.error("WTF! charset UTF-8 Not found!", e);
}
byte[] prehash = concatBytearrays(password.getBytes(), salt);
byte[] hashed = algo.digest(prehash);
byte[] both = concatBytearrays(hashed, salt);
String base64Str = new String(Base64.encodeBase64(both));
logger.debug("Encoded {} to {}", both, base64Str);
return base64Str;
return null;
}
public static byte[] concatBytearrays(byte[]... arrays) {
......@@ -60,8 +66,17 @@ public class PasswordFunctions {
public static boolean checkPlainPassword(String plainPassword,
String saltedPassword) {
if (saltedPassword == null || plainPassword == null) {
logger.info("Got null password at passwordCheck");
return false;
}
String oldBase64 = saltedPassword.substring("{SSHA}".length());
// TODO: Stream passwordhack Remove when not used anymore!
if (!saltedPassword.startsWith(SSHA_PREFIX)) {
return StreampartyLegacyPwdcheck.streampartyOldAlgoMatch(plainPassword, saltedPassword);
}
String oldBase64 = saltedPassword.substring(SSHA_PREFIX.length());
byte[] decodedHashedAndSalt = Base64.decodeBase64(oldBase64);
logger.debug("Decoded Str {} to {}", oldBase64, decodedHashedAndSalt);
......@@ -75,6 +90,7 @@ public class PasswordFunctions {
logger.debug("Hash : {} salt: {}", decodedHashedAndSalt, salt);
String newBase64 = shaWithSaltToBase64(plainPassword, salt);
logger.debug("comparing old {} to new {}", oldBase64, newBase64);
boolean theSame = oldBase64.equals(newBase64);
......
package fi.insomnia.bortal.utilities;
import java.io.UnsupportedEncodingException;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.utilities.apachecodec.binary.Base64;
public class StreampartyLegacyPwdcheck {
private static final Logger logger = LoggerFactory.getLogger(StreampartyLegacyPwdcheck.class);
private static final String streampartyStringToSha(String password) {
String paluu = "";
try {
MessageDigest algo = MessageDigest.getInstance("SHA");
algo.update(password.getBytes(), 0, password.length());
paluu = new BigInteger(1, algo.digest()).toString(16);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return paluu;
}
public static boolean streampartyOldAlgoMatch(String plaintext, String encrypted) {
String salt = encrypted.substring(0, 4);
logger.debug("Got hash: " + salt);
return encrypted.equals(salt + streampartyStringToSha(salt + plaintext.trim()));
}
public static String oldEncode(String password) {
try {
MessageDigest md = MessageDigest.getInstance("SHA");
return new String(Base64.encodeBase64(md.digest(password.getBytes())), "UTF-8");
// return Base64.encode(md.digest(password.getBytes()));
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return new String(password);
}
public static boolean oldIsMatch(String password, String encrypted) {
return (encrypted.equals(oldEncode(password)));
}
}
......@@ -9,5 +9,6 @@
<attribute name="owner.project.facets" value="java"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="com.sun.portlet.plugin.library.portlet20"/>
<classpathentry kind="output" path="build/classes"/>
</classpath>
......@@ -5,4 +5,5 @@
<installed facet="jst.java" version="6.0"/>
<installed facet="jst.web" version="2.5"/>
<installed facet="sun.facet" version="9"/>
<installed facet="generic.portlet" version="2.0"/>
</faceted-project>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core"
xmlns:tools="http://java.sun.com/jsf/composite/tools" xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:c="http://java.sun.com/jsp/jstl/core">
<html
xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:tools="http://java.sun.com/jsf/composite/tools"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:c="http://java.sun.com/jsp/jstl/core"
>
<f:view locale="#{sessionHandler.locale}">
<ui:insert name="metadata" />
<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta
http-equiv="Content-Type"
content="text/html; charset=UTF-8"
/>
<title><h:outputText value="#{i18n['global.eventname']}" /> - <h:outputText
value="#{i18n[util.concat(thispage,'.header') ] }" /></title>
<link rel="stylesheet" type="text/css" href="#{request.contextPath}/resources/style/insomnia1/style.css" />
value="#{i18n[util.concat(thispage,'.header') ] }"
/></title>
<link
rel="stylesheet"
type="text/css"
href="#{request.contextPath}/resources/style/insomnia1/style.css"
/>
</h:head>
<h:body>
......@@ -18,8 +31,11 @@
<div id="navigation">
<div id="topheadercontainer"><img id="head"
src="#{request.contextPath}/resources/style/insomnia1/img/header.gif" alt="headerimage" />
<div id="topheadercontainer"><img
id="head"
src="#{request.contextPath}/resources/style/insomnia1/img/header.gif"
alt="headerimage"
/>
<div style="float: left">
<div id="headerbox"><tools:isLoggedIn>#{sessionHandler.loginname}</tools:isLoggedIn><tools:loginLogout /></div>
......@@ -29,32 +45,46 @@
</div>
</div>
<div id="mainmenu">
<div class="link#{i18n[util.concat(thispage,'.pagegroup')] == 'frontpage'?'a':''}"><h:link outcome="/index"
value="#{i18n['topmenu.frontpage']}" /></div>
<div class="link#{i18n[util.concat(thispage,'.pagegroup')] == 'frontpage'?'a':''}"><h:link
outcome="/index"
value="#{i18n['topmenu.frontpage']}"
/></div>
<tools:isLoggedIn>
<div class="link#{i18n[util.concat(thispage,'.pagegroup')] == 'user'?'a':''}"><h:link outcome="/user/editself"
value="#{i18n['topmenu.usersPreferences']}" /></div>
<div class="link#{i18n[util.concat(thispage,'.pagegroup')] == 'user'?'a':''}"><h:link
outcome="/user/editself"
value="#{i18n['topmenu.usersPreferences']}"
/></div>
<!-- <div class="link#{i18n[util.concat(thispage,'.pagegroup')] == 'shop'?'a': ''}"><h:link
outcome="/product/createBill" value="#{i18n['topmenu.shoppings']}" /></div>
-->
</tools:isLoggedIn> <tools:canExecute target="POLL">
<div class="link#{i18n[util.concat(thispage,'.pagegroup')] == 'poll'?'a': ''}"><h:link
outcome="/poll/start" value="#{i18n['topmenu.poll']}" /></div>
outcome="/poll/start"
value="#{i18n['topmenu.poll']}"
/></div>
</tools:canExecute>
<div class="link#{i18n[util.concat(thispage,'.pagegroup')] == 'placemap'?'a':''}"><h:link
outcome="/place/placemap" value="#{i18n['topmenu.placemap']}" /></div>
outcome="/place/placemap"
value="#{i18n['topmenu.placemap']}"
/></div>
<tools:canRead target="USER_MANAGEMENT">
<div class="link#{i18n[util.concat(thispage,'.pagegroup')] == 'admin'?'a':''}"><h:link outcome="/product/list"
value="#{i18n['topmenu.adminfront']}" /></div>
<div class="link#{i18n[util.concat(thispage,'.pagegroup')] == 'admin'?'a':''}"><h:link
outcome="/product/list"
value="#{i18n['topmenu.adminfront']}"
/></div>
<div class="link#{i18n[util.concat(thispage,'.pagegroup')] == 'rfidshop'?'a':''}"><h:link
outcome="/shop/showReaderEvents" value="#{i18n['topmenu.rfidshop']}" /></div>
outcome="/shop/showReaderEvents"
value="#{i18n['topmenu.rfidshop']}"
/></div>
</tools:canRead> <tools:canRead target="GAME">
<div class="link#{i18n[util.concat(thispage,'.pagegroup')] == 'game'?'a':''}"><h:link outcome="/game/start"
value="#{i18n['topmenu.game']}" /></div>
<div class="link#{i18n[util.concat(thispage,'.pagegroup')] == 'game'?'a':''}"><h:link
outcome="/game/start"
value="#{i18n['topmenu.game']}"
/></div>
</tools:canRead></div>
</div>
......
......@@ -8,7 +8,6 @@
</h:head>
<h:body>
<ui:component>
<c:if test="#{rendered}">
<div id="sidebar"><ui:insert name="sidebarcontent" /></div>
</c:if>
......
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html
xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:tools="http://java.sun.com/jsf/composite/tools"
xmlns:ui="http://java.sun.com/jsf/facelets"
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core"
xmlns:tools="http://java.sun.com/jsf/composite/tools" xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:c="http://java.sun.com/jsp/jstl/core"
>
<f:view locale="#{sessionHandler.locale}">
<ui:insert name="metadata" />
<h:head>
<meta
http-equiv="Content-Type"
content="text/html; charset=UTF-8"
/>
<title>STREAM INTRA</title>
<link href="#{request.contextPath}/resources/style/stream10/intra_style.css" rel="stylesheet" type="text/css" />
<meta http-equiv="CACHE-CONTROL" content="NO-CACHE" />
<meta http-equiv="PRAGMA" content="NO-CACHE" />
<meta http-equiv="expires" content="0" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title><h:outputText value="#{i18n['global.eventname']}" /> - <h:outputText
value="#{i18n[util.concat(thispage,'.header') ] }"
/></title>
<link
rel="stylesheet"
type="text/css"
href="#{request.contextPath}/resources/style/insomnia1/style.css"
/>
value="#{i18n[util.concat(thispage,'.header') ] }"
/>
</title>
</h:head>
<h:body>
<div id="wrapper">
<div id="navigation">
<div id="topheadercontainer"><img
id="head"
src="#{request.contextPath}/resources/style/insomnia1/img/header.gif"
alt="headerimage"
/>
<div style="float: left">
<div id="headerbox"><tools:isLoggedIn>#{sessionHandler.loginname}</tools:isLoggedIn><tools:loginLogout /></div>
</div>
</div>
<div id="mainmenu">
<div class="link#{i18n[util.concat(thispage,'.pagegroup')] == 'frontpage'?'a':''}"><h:link
outcome="/index"
value="#{i18n['topmenu.frontpage']}"
/></div>
<tools:isLoggedIn>
<div class="link#{i18n[util.concat(thispage,'.pagegroup')] == 'user'?'a':''}"><h:link
outcome="/user/editself"
value="#{i18n['topmenu.usersPreferences']}"
/></div>
<!-- <div class="link#{i18n[util.concat(thispage,'.pagegroup')] == 'shop'?'a': ''}"><h:link
outcome="/product/createBill" value="#{i18n['topmenu.shoppings']}" /></div>
-->
</tools:isLoggedIn> <tools:canExecute target="POLL">
<div class="link#{i18n[util.concat(thispage,'.pagegroup')] == 'poll'?'a': ''}"><h:link
outcome="/poll/start"
value="#{i18n['topmenu.poll']}"
/></div>
</tools:canExecute>
<div class="link#{i18n[util.concat(thispage,'.pagegroup')] == 'placemap'?'a':''}"><h:link
outcome="/place/placemap"
value="#{i18n['topmenu.placemap']}"
/></div>
<tools:canRead target="USER_MANAGEMENT">
<div class="link#{i18n[util.concat(thispage,'.pagegroup')] == 'admin'?'a':''}"><h:link
outcome="/product/list"
value="#{i18n['topmenu.adminfront']}"
/></div>
<div class="link#{i18n[util.concat(thispage,'.pagegroup')] == 'rfidshop'?'a':''}"><h:link
outcome="/shop/showReaderEvents"
value="#{i18n['topmenu.rfidshop']}"
/></div>
</tools:canRead> <tools:canRead target="GAME">
<div class="link#{i18n[util.concat(thispage,'.pagegroup')] == 'game'?'a':''}"><h:link
outcome="/game/start"
value="#{i18n['topmenu.game']}"
/></div>
</tools:canRead></div>
</div>
<div id="content">
<div id="cwrap"><ui:include src="/layout/insomnia1/sidebar-#{i18n[util.concat(thispage,'.pagegroup')]}.xhtml" />
<h:messages globalOnly="true" /> <ui:insert name="content" /></div>
<div id="topheader">
<img src="#{request.contextPath}/resources/style/stream10/header.png" />
</div>
<div id="footer">#{i18n['global.copyright']}</div>
<div id="container">
<div id="page">
<div id="leftnav">
<tools:isLoggedIn>#{sessionHandler.loginname}</tools:isLoggedIn>
<tools:loginLogout />
<ui:include src="/layout/insomnia1/sidebar-#{i18n[util.concat(thispage,'.pagegroup')]}.xhtml" />
</div>
<div id="content">
<h:messages globalOnly="true" />
<ui:insert name="content" />
</div>
<div id="copyright">&copy; 2009 Stream Ry</div>
</div>
</div>
</h:body>
</f:view>
......
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.auth.login.header=Login
page.auth.login.header=Login error
page.auth.login.title=Login error
page.index.pagegroup=frontpage
page.index.header=Etusivu
page.auth.login.pagegroup=login
page.auth.loginerror.pagegroup=frontpage
page.auth.logout.pagegroup=login
page.auth.notauthorized.pagegroup=frontpage
page.bill.list.pagegroup=shop
......@@ -26,84 +31,130 @@ 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
page.role.create.pagegroup=admin
page.role.edit.pagegroup=admin
page.role.list.pagegroup=admin
page.place.placemap.pagegroup=placemap
page.place.placemap.header=Varaa paikka
page.place.mygroups.pagegroup=user
page.place.mygroups.header=Omat paikat
page.place.insertToken.pagegroup=user
page.place.insertToken.header=Syt konepaikkakoodi
page.place.insertToken.header=Sy\u02C6t\u2030 konepaikkakoodi
page.place.edit.pagegroup=admin
page.place.edit.header=Edit place
page.account.edit.pagegroup=admin
page.account.edit.header=Muokkaa tilitapahtumia
page.user.create.pagegroup=user
page.user.create.header=Uusi kyttj
page.user.create.header=Uusi k\u2030ytt\u2030j\u2030
page.user.edit.pagegroup=user
page.user.edit.header=Kyttjn muokkaus
page.user.edit.header=K\u2030ytt\u2030j\u2030n muokkaus
page.user.list.pagegroup=user
page.user.list.header=Kyttjt
page.user.list.header=K\u2030ytt\u2030j\u2030t
page.user.editself.pagegroup=user
page.user.editself.header=Omat tiedot
page.user.mygroups.pagegroup=user
page.user.mygroups.header=Omat paikat
page.admin.sendimage.pagegroup=admin
page.admin.sendimage.header=Lhet kuva
page.admin.sendimage.header=L\u2030het\u2030 kuva
page.auth.login.loginerror.pagegroup=frontpage
page.auth.login.loginerror.header=Kirjautumisvirhe
page.auth.login.logout.pagegroup=frontpage
page.auth.login.logout.header=Uloskirjautuminen
page.viewexpired.pagegroup=frontpage
page.permissionDenied.pagegroup=frontpage
page.permissionDenied.header=Psy kielletty
page.permissionDenied.header=P\u2030\u2030sy kielletty
page.bill.placemap.pagegroup=placemap
page.bill.placemap.header=Paikkakartta
page.bill.listAll.pagegroup=admin
page.bill.listAll.header=Laskut
page.bill.edit.pagegroup=admin
page.bill.edit.header=Edit bill
page.bill.billSummary.pagegroup=admin
page.bill.billSummary.header=Laskujen yhteenveto
page.account.list.pagegroup=user
page.account.list.header=Tilitapahtumat
page.auth.resetPassword.pagegroup=user
page.auth.resetPassword.header=Salasanan resetointi
page.auth.resetPassword.header=Salasanan resetointi
page.shop.readerevents.pagegroup=rfidshop
page.shop.readerevents.header=RFID kauppa
page.game.start.pagegroup=game
page.game.start.header=Insomnia Game
page.game.list.pagegroup=game
page.game.list.header=Insomnia Game
page.game.list.header=Insomnia Game
page.poll.start.pagegroup=poll
page.poll.start.header=Kysely
page.poll.answer.pagegroup=poll
page.poll.answer.header=Kysely
page.poll.answered.pagegroup=poll
page.poll.answered.header=Kiitos vastauksestasi
#Bill number
# Validationmessages
# Java Resource Bundle
# Modified by Zaval JRC Editor (C) Zaval CE Group
# http://www.zaval.org/products/jrc-editor/
#
global.cancel=Cancel
global.copyright=Insomnia Ry, Stream Ry
global.infomail=
global.notauthorized=You don't have enought rights to view this information.
global.productname=Omnia
global.save=Save
global.webpage=
login.login=Login
login.logout=Logout
login.logoutmessage=You have logged out of the system.
login.password=Password
login.submit=Login
login.username=Username
nasty.user=Hax attempt! Go away!
page.auth.login.header=Login error
page.auth.login.loginerror=frontpage
page.auth.login.logout=frontpage
page.auth.login.pagegroup=frontpage
page.auth.login.title=Login error
page.index.pagegroup=frontpage
page.auth.login.pagegroup=frontpage
page.auth.loginerror.pagegroup=frontpage
page.auth.logout.pagegroup=frontpage
page.auth.notauthorized.pagegroup=frontpage
page.index.pagegroup=frontpage
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.tests.placemap.pagegroup=shop
page.user.create.pagegroup=user
page.user.edit.pagegroup=user
page.user.editself.pagegroup=user
page.user.list.pagegroup=user
page.user.editself.pagegroup=user
global.cancel=Cancel
global.notauthorized=You don't have enought rights to view this information.
global.save=Save
login.login=Login
login.logout=Logout
login.logoutmessage=You have logged out of the system.
login.password=Password
login.submit=Login
login.username=Username
nasty.user=Hax attempt! Go away!
page.auth.login.loginerror=frontpage
page.auth.login.logout=frontpage
page.tests.placemap.pagegroup=shop
page.viewexpired=frontpage
placeSelect.placesleft=Places left
product.barcode=Barcode
product.create=Create product
product.edit=Edit
product.name=Name
product.prepaid=Prepaid
product.price=Product price
product.save=Save
product.sort=Sort
product.unitName=Product unit
product.vat=VAT
product.cart.count=Count
role.create=Create role
role.edit=Edit
role.name=Name
role.parents=Parents
topmenu.adminfront=Adminstuff
topmenu.frontpage=Frontpage
topmenu.shoppings=Shop
topmenu.usersPreferences=Preferences
user.bank=Bank
user.bankaccount=Bank account
user.edit=Edit
user.email=Email address
user.nick=Nickname
user.password=Password
user.phone=Phone
user.login=Login name
user.firstNames=First names
user.lastName=Last name
user.address=Address
user.zipCode=Zip code
user.town=Town
user.sex=Sex
user.save=Save
user.sex.FEMALE=Female
user.sex.MALE=Male
user.sex.UNDEFINED=Undefined
user.username=Username
user.validate.notUniqueUsername=Username already exists. Please select another.
bill.printBill=Print
bill.billnumber=Bill number
bill.referencenumber=Referencenumber
bill.paidDate=Paid
bill.sentDate=Sent
bill.totalPrice=Total price
bill.totalPrice=Total price
sidebar.user.editself=My preferences
sidebar.user.list=List users
sidebar.user.create=Create new user
sidebar.product.create=New product
sidebar.product.list=List products
sidebar.product.createBill=Create bill
sidebar.role.create=Create role
sidebar.role.list=List roles
sidebar.map.placemap=Select places
permissiondenied.header=Permission denied!
permissiondenied.notLoggedIn=You are not authorized to view this page. Logging in may help.
permissiondenied.alreadyLoggedIn=You are not authorized to view this page. If you think this is an error please contact the admins.
viewexpired.title=This view has expired
viewexpired.body=Please login again.
\ No newline at end of file
viewexpired.body=Please login again.
#Bill number
# Validationmessages
# Java Resource Bundle
# Modified by Zaval JRC Editor (C) Zaval CE Group
# http://www.zaval.org/products/jrc-editor/
#
global.infomail=info@streamparty.org
global.webpage=http://www.streamparty.org
global.webpage=http\u003A//www.streamparty.org
#Bill number
# Validationmessages
global.eventname=Stream seven
#Bill number
# Validationmessages
# Java Resource Bundle
# Modified by Zaval JRC Editor (C) Zaval CE Group
# http://www.zaval.org/products/jrc-editor/
#
global.cancel=Peruuta
global.notauthorized=Sinulla ei ole riitt\u00e4vi\u00e4 oikeuksia t\u00e4lle sivulle.
global.notauthorized=Sinulla ei ole riitt\u00E4vi\u00E4 oikeuksia t\u00E4lle sivulle.
global.save=Tallenna
login.login=Kirjaudu sis\u00e4\u00e4n
login.login=Kirjaudu sis\u00E4\u00E4n
login.logout=Kirjaudu ulos
login.logoutmessage=Olet kirjautunut ulos j\u00e4rjestelm\u00e4st\u00e4.
login.logoutmessage=Olet kirjautunut ulos j\u00E4rjestelm\u00E4st\u00E4.
login.password=Salasana
login.submit=Kirjaudu sis\u00e4\u00e4n
login.username=K\u00e4ytt\u00e4j\u00e4tunnus
login.submit=Kirjaudu sis\u00E4\u00E4n
login.username=K\u00E4ytt\u00E4j\u00E4tunnus
nasty.user=Wait, wot! Mene pois!
placeSelect.placesleft=Paikkoja j\u00e4ljell\u00e4
placeSelect.reservationPrice=Tilauksen hinta
placeSelect.reservedPlaces=Valitut paikat
placeSelect.placePrice=Paikan hinta
placeSelect.placeName=Paikka
placeSelect.placeProductName=Paikan tyyppi
placeSelect.placesleft=Paikkoja j\u00E4ljell\u00E4
product.barcode=Viivakoodi
product.create=Luo tuote
product.edit=Muokkaa
product.name=Tuotteen nimi
product.prepaid=Prepaid
product.price=Tuotteen hinta
product.save=Tallenna
product.sort=J\u00e4rjestys luku
product.unitName=Tuoteyksikk\u00f6
product.sort=J\u00E4rjestys luku
product.unitName=Tuoteyksikk\u00F6
product.vat=ALV
product.cart.count=Ostoskoriin
role.create=Luo rooli
role.edit=Muokkaa
role.name=Nimi
role.parents=Periytyy
topmenu.adminfront=Admintavaraa
topmenu.frontpage=Etusivu
topmenu.shoppings=Kauppa
topmenu.usersPreferences=Omat tiedot
user.bank=Pankki
user.bankaccount=Pankkitili
user.edit=Muokkaa
user.email=S\u00E4hk\u00F6posti
user.nick=Nick
user.password=Salasana
user.phone=Puhelin
user.login=K\u2030ytt\u2030j\u2030tunnus
user.firstNames=Etunimi
user.lastName=Sukunimi
user.address=Osoite
user.zipCode=Postinumero
user.town=Kaupunki
user.sex=Sukupuoli
user.save=Tallenna
user.sex.FEMALE=Nainen
user.sex.MALE=Mies
user.sex.UNDEFINED=M\u00E4\u00E4rittelem\u00E4tt\u00E4
user.username=K\u00E4ytt\u00E4j\u00E4tunnus
user.validate.notUniqueUsername=K\u00E4ytt\u00E4j\u00E4tunnus on jo olemassa. Ole hyv\u00E4 ja valitse toinen tunnus
bill.printBill=Tulosta lasku
bill.referencenumber=Viitenumero
bill.paidDate=Maksup\u2030iv\u2030
bill.sentDate=P\u2030iv\u2030ys
bill.totalPrice=Laskun summa
sidebar.user.list=K\u2030ytt\u2030j\u2030t
sidebar.user.create=Uusi k\u2030ytt\u2030j\u2030
sidebar.product.create=Uusi tuote
sidebar.product.list=Tuotteet
sidebar.product.createBill=Luo lasku
sidebar.role.create=Uusi rooli
sidebar.role.list=Roolit
sidebar.map.placemap=Paikkakartta
permissiondenied.header=P\u2030\u2030sy kielletty
permissiondenied.notLoggedIn=Sinulla ei ole riitt\u2030v\u2030sti oikeuksia t\u2030lle sivulle.
permissiondenied.alreadyLoggedIn=Sinulla ei ole riitt\u2030v\u2030sti oikeuksia!
viewexpired.title=N\u2030kym\u2030 on vanhentunut
viewexpired.body=Ole hyv\u2030 ja kirjaudu sis\u2030\u2030n uudelleen.
placeSelect.reservationPrice=Tilauksen hinta
placeSelect.reservedPlaces=Valitut paikat
placeSelect.placePrice=Paikan hinta
placeSelect.placeName=Paikka
placeSelect.placeProductName=Paikan tyyppi
products.save=Tallenna
productshop.commit=Osta
product.boughtTotal=Tuotteita laskutettu
product.paid=Maksettu
product.prepaidInstant=Luodaan kun prepaid maksetaan
shop.accountBalance=Tilin saldo
placegroup.printPdf=Tulosta paikkakoodit
placegroup.name=Nimi
placegroup.edited=Muokattu
placegroup.created=Luotu
placegroup.details=Tiedot
placegroup.places=Paikat
placegroup.creator=Varaaja
placegroup.edit=Nyt
placegroup.edit=N\u2030yt\u2030
placegroupview.releasePlace=Vapauta
placegroupview.placeReleased=Paikka {0} vapautettu
placegroupview.placeReleaseFailed=Paikan vapauttaminen eponnistui!
placegroupview.reservationName=Paikka
placegroupview.token=Paikkakoodi / kyttj
placegroupview.groupCreator=Varaaja
placegroupview.placeReleaseFailed=Paikan vapauttaminen ep\u2030onnistui!
placegroupview.reservationName=Paikka
placegroupview.toptext=
placegroupview.token=Paikkakoodi / k\u2030ytt\u2030j\u2030
placegroupview.groupCreator=Varaaja
placegroupview.header=Omat paikat
placegroupview.noMemberships=Ei omia paikkoja
role.create=Luo rooli
role.edit=Muokkaa
role.name=Nimi
role.parents=Periytyy
role.read=(R)
role.write=(W)
role.execute=(X)
role.description=Kuvaus
role.edit.save=Tallenna
role.edit.save=Tallenna
topmenu.game=Insomnia Game
topmenu.poll=Kyselyt
game.gamepoints=Insomnia Game pisteet:
topmenu.poll=Kyselyt
game.gamepoints=Insomnia Game pisteet\u003A
topmenu.adminfront=Admintavaraa
topmenu.frontpage=Etusivu
topmenu.shoppings=Kauppa
topmenu.usersPreferences=Omat tiedot
user.bank=Pankki
user.bankaccount=Pankkitili
user.edit=Muokkaa
user.email=S\u00e4hk\u00f6posti
user.nick=Nick
user.password=Salasana
user.phone=Puhelin
user.realname=Nimi
user.save=Tallenna
user.login=Kyttjtunnus
user.firstNames=Etunimi
user.lastName=Sukunimi
user.address=Osoite
user.zipCode=Postinumero
user.town=Kaupunki
user.sex=Sukupuoli
user.superadmin=Superadmin
user.rolesave=Tallenna roolit
user.defaultImage=Oletukuva
user.thisIsCurrentImage=Nykyinen kuva
user.passwordcheck=Salasana ( uudelleen )
user.createdmessage=Kyttjtunnus on luotu onnistuneesti. Voit nyt kirjautua sisn.
user.create=Luo kyttj
user.sendPicture=Kuvan lhetys
user.createdmessage=K\u2030ytt\u2030j\u2030tunnus on luotu onnistuneesti. Voit nyt kirjautua sis\u2030\u2030n.
user.create=Luo k\u2030ytt\u2030j\u2030
user.sendPicture=Kuvan l\u2030hetys
user.changePassword=Vaihda salasana
user.accountBalance=Tilin saldo
userview.passwordsDontMatch=Salasanat eivt ole samat! Ole hyv ja syt salasanat uudelleen.
userview.passwordsDontMatch=Salasanat eiv\u2030t ole samat! Ole hyv\u2030 ja sy\u02C6t\u2030 salasanat uudelleen.
user.myGroups=Omat paikkavaraukset
user.insertToken=Syt paikkakoodi
user.insertToken=Sy\u02C6t\u2030 paikkakoodi
user.wholeName=Nimi
user.hasImage=Kuva
user.noImage=EI kuvaa
user.noCurrentImage=Ei kuvaa
userimage.webcam=Ota kuva webkameralla
sidebar.utils.testdata=Testdata
sidebar.utils.flushCache=Flush Cache
sidebar.shop.readerEvents=Lukijan tapahtumat
sidebar.shop.readerlist=Nyt lukijat
sidebar.shop.readerlist=N\u2030yt\u2030 lukijat
placetoken.token=Paikkakoodi
placetoken.commit=Liit
placetoken.pageHeader=Lis konepaikkakoodi
placetoken.topText=Voit yhdist ryhmnjohtajasi ostaman paikan omaan kyttjtunnukseesi syttmll paikkakoodin allaolevaan kenttn.
placetoken.tokenNotFound=Paikkakoodia ei lytynyt! Tarkista koodi.
placetoken.commit=Liit\u2030
placetoken.pageHeader=Lis\u2030\u2030 konepaikkakoodi
placetoken.topText=Voit yhdist\u2030\u2030 ryhm\u2030njohtajasi ostaman paikan omaan k\u2030ytt\u2030j\u2030tunnukseesi sy\u02C6tt\u2030m\u2030ll\u2030 paikkakoodin allaolevaan kentt\u2030\u2030n.
placetoken.tokenNotFound=Paikkakoodia ei l\u02C6ytynyt! Tarkista koodi.
#Bill number
bill.billNumber=Laskun numero
bill.sentDate=Pivys
bill.totalPrice=Laskun summa
bill.printBill=Tulosta lasku
bills.noBills=Ei laskuja
bill.edit=Muokkaa
bill.payer=Maksaja
bill.referenceNumberBase=Viitenumeropohja
bill.referencenumber=Viitenumero
bill.markPaid=Maksettu
bill.isPaid=Maksettu
bill.paidDate=Maksupiv
bill.addr1=Osoite 1
bill.addr2=Osoite 2
bill.addr3=Osoite 3
bill.addr4=Osoite 4
bill.addr5=Osoite 5
bill.paymentTime=Maksuehdot
bill.noticetime=Huomautusaika
bill.theirReference=Asiakkaan viite
bill.ourReference=Myyjn viite
bill.ourReference=Myyj\u2030n viite
bill.deliveryTerms=Toimitusehdot
bill.notes=Huomioita
billine.unitPrice=Yksikkhinta
billine.unitPrice=Yksikk\u02C6hinta
billine.name=Tuote
billine.quantity=Lukumr
billine.unitName=Yksikk
billine.quantity=Lukum\u2030\u2030r\u2030
billine.unitName=Yksikk\u02C6
billine.vat=ALV
billine.referencedProduct=Tuoteviittaus
billine.save=Tallenna
user.noAccountevents=Ei tilitapahtumia
user.accountEventHeader=Tilitapahtumat
loginerror.header=Kirjautuminen eponnistui
loginerror.message=Kyttjtunnus tai salasana ei ollut oikein.
permissiondenied.alreadyLoggedIn=Sinulla ei ole riittvsti oikeuksia!
user.sex.FEMALE=Nainen
user.sex.MALE=Mies
user.sex.UNDEFINED=M\u00e4\u00e4rittelem\u00e4tt\u00e4
user.username=K\u00e4ytt\u00e4j\u00e4tunnus
user.validate.notUniqueUsername=K\u00e4ytt\u00e4j\u00e4tunnus on jo olemassa. Ole hyv\u00e4 ja valitse toinen tunnus
loginerror.header=Kirjautuminen ep\u2030onnistui
loginerror.message=K\u2030ytt\u2030j\u2030tunnus tai salasana ei ollut oikein.
user.successfullySaved=Tiedot tallennettu onnistuneesti
user.roles=Roolit
user.uploadimage=Lhet kuva
user.uploadimage=L\u2030het\u2030 kuva
user.imagelist=Tallennetut kuvat
user.shop=Osta
imagefile.file=Kuvatiedosto
imagefile.description=Kuvaus
user.imagesubmit=Lhet kuva
permissiondenied.header=Psy kielletty
permissiondenied.notLoggedIn=Sinulla ei ole riittvsti oikeuksia tlle sivulle.
viewexpired.title=Nkym on vanhentunut
viewexpired.body=Ole hyv ja kirjaudu sisn uudelleen.
user.imagesubmit=L\u2030het\u2030 kuva
eventorg.events=Organisaation tapahtumat
eventorgView.eventname=Tapahtuman nimi
eventorg.createEvent=Luo tapahtuma
place.details=Tiedot
place.description=Kuvaus
place.name=Nimi
place.mapX=X
place.mapY=Y
place.width=Leveys
place.height=Korkeus
place.releasetime=Vapautusaika
place.code=Paikkakoodi
place.product=Tuote
place.commit=Tallenna
editplace.header=Muokkaa paikkaa
place.edit=Muokkaa
discount.percentage=Alennusprosentti
discount.code=Alennuskoodi
discount.details=Tiedot
discount.shortdesc=Kuvaus
discount.amountMin=Vhimmismr
discount.amountMax=Enimmismr
discount.maxNum=Alennusten enimmislkm
discount.perUser=Alennuksia per kyttj
discount.amountMin=V\u2030himm\u2030ism\u2030\u2030r\u2030
discount.amountMax=Enimm\u2030ism\u2030\u2030r\u2030
discount.maxNum=Alennusten enimm\u2030islkm
discount.perUser=Alennuksia per k\u2030ytt\u2030j\u2030
discount.edit=Muokkaa
discount.create=Luo uusi
discount.active=Aktiivinen
discount.role=Roolialennus
discount.save=Tallenna
.user.editself=Omat tiedot
sidebar.user.list=Kyttjt
sidebar.user.create=Uusi kyttj
sidebar.createuser=Rekisteridy uudeksi kyttjksi
sidebar.createuser=Rekister\u02C6idy uudeksi k\u2030ytt\u2030j\u2030ksi
sidebar.bill.list=Omat laskut
sidebar.bill.listAll=Kaikki laskut
sidebar.product.create=Uusi tuote
sidebar.product.list=Tuotteet
sidebar.product.createBill=Luo lasku
sidebar.map.placemap=Paikkakartta
sidebar.bill.summary=Laskujen yhteenveto
sidebar.role.create=Uusi rooli
sidebar.role.list=Roolit
sidebar.eventorg.list=Omat organisaatiot
sidebar.roles=Roolit
sidebar.bills=Laskut
sidebar.products=Tuotteet
sidebar.other=Muuta
sidebar.users=Kyttjt
sidebar.users=K\u2030ytt\u2030j\u2030t
user.passwordlengthMessage=Salasana liian lyhyt
sidebar.maps=Kartat
sidebar.map.list=Kartat
sidebar.cardTemplate.create=Uusi korttipohja
sidebar.cardTemplate.list=Nyt korttipohjat
sidebar.cardTemplate.list=N\u2030yt\u2030 korttipohjat
cardTemplate.name=Korttipohja
cardTemplate.power=Teho
cardTemplate.roles=Yhdistetyt roolit
topmenu.rfidshop=Staffshop
readerview.cards=Kortit ( tulostuslkm )
reader.assocToCard=Yhdist korttiin
reader.assocToCard=Yhdist\u2030 korttiin
reader.name=Lukijan nimi
readerevent.associateToUser=Yhdist kyttjn
readerevent.shopToUser=Osta kyttjlle
readerevent.associateToUser=Yhdist\u2030 k\u2030ytt\u2030j\u2030\u2030n
readerevent.shopToUser=Osta k\u2030ytt\u2030j\u2030lle
topmenu.placemap=Paikkakartta
userview.passwordsChanged=Salasana vaihdettu
userview.passwordTooShort=Salasana liian lyhyt. Pit olla vhintn 5 merkki pitk.
userview.loginstringFaulty=Kyttjtunnus virheellinen. Pit olla vhintn kaksi merkki pitk.
product.shopInstant=Luo kteismaksu tuotteille
userview.passwordTooShort=Salasana liian lyhyt. Pit\u2030\u2030 olla v\u2030hint\u2030\u2030n 5 merkki\u2030 pitk\u2030.
userview.loginstringFaulty=K\u2030ytt\u2030j\u2030tunnus virheellinen. Pit\u2030\u2030 olla v\u2030hint\u2030\u2030n kaksi merkki\u2030 pitk\u2030.
product.shopInstant=Luo k\u2030teismaksu tuotteille
productshop.noItemsInCart=Ostoskorissa ei ole tuotteita
shop.accountBalance=Tilin saldo
shop.user=Myydn
accountevent.quantity=Lukumr
accountevent.productname=Tuote
accountevent.unitPrice=Yksikkhinta
accountevent.total=Yhteens
accountevent.eventTime=Tilattu
accountevent.delivered=Toimitettu
accountevent.seller=Myyj
shop.user=Myyd\u2030\u2030n
accountevent.unitPrice=Yksikk\u02C6hinta
accountevent.seller=Myyj\u2030
accountevent.commit=Tallenna
mapView.errorWhenReservingPlace=Paikkaa varatessa tapahtui virhe.
mapView.errorWhenReleasingPlace=Paikkaa vapauttassa tapahtui virhe.
mapView.notEnoughCreditsToReserve=Sinulla ei ole riittvsti suoritettuja konepaikkamaksuja tmn paikan varaamiseen.
mapView.errorWhileBuyingPlaces=Virhe paikkojen ostossa. Ole hyv ja yrit uudelleen. Jos virhe toistuu ota yhteytt jrjestjiin.
mapView.notEnoughCreditsToReserve=Sinulla ei ole riitt\u2030v\u2030sti suoritettuja konepaikkamaksuja t\u2030m\u2030n paikan varaamiseen.
mapView.errorWhileBuyingPlaces=Virhe paikkojen ostossa. Ole hyv\u2030 ja yrit\u2030 uudelleen. Jos virhe toistuu ota yhteytt\u2030 j\u2030rjest\u2030jiin.
mapView.buyPlaces=Lukitse valitut paikat
userview.userExists=Kyttjtunnus on jo olemassa. Ole hyv ja valitse toinen tunnus.
page.auth.loginerror.header=kirjautuminen eponnistui
userview.userExists=K\u2030ytt\u2030j\u2030tunnus on jo olemassa. Ole hyv\u2030 ja valitse toinen tunnus.
page.auth.loginerror.header=kirjautuminen ep\u2030onnistui
accountEvent.unitPrice=Yks. hinta
accountEvent.quantity=Lkm
accountEvent.total=Yhteens
accountEvent.total=Yhteens\u2030
accountEvent.eventTime=Aika
accountEvent.delivered=Toimitettu
accountEvent.edit=Muokkaa
accountEvent.productname=Tuote
user.accountEvents=Tilitapahtumat
bill.billMarkedPaidMail.subject=[INSOMNIA] Lasku merkitty maksetuksi
bill.billMarkedPaidMail.message=Laskusi numero {0} on merkitty maksetuksi. Voit nyt siirty lippukauppaan varamaamaan haluamasi paikat. \nTervetuloa tapahtumaan!\n\nTerveisin,\nInsomnia lippupalvelu\nwww.insomnia.fi
passwordreset.usernotfound=Annettua kyttjtunnusta ei lydy. Huomioi ett isot ja pienet kirjaimet ovat merkitsevi.
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
passwordreset.usernotfound=Annettua k\u2030ytt\u2030j\u2030tunnusta ei l\u02C6ydy. Huomioi ett\u2030 isot ja pienet kirjaimet ovat merkitsevi\u2030.
passwordreset.mailSubject=[INSOMNIA] Salasanan vaihtaminen
passwordreset.mailBody=Voit vaihtaa salasanasi osoitteessa {0}\n\nJos et ole pyytnyt unohtuneen salasanan vaihtamista, ei thn viestiin tarvitse reagoida.\n\nTerveisin,\nInsomnia lippupalvelu\nwww.insomnia.fi
passwordReset.hashNotFound=Salasanan vaihto on vanhentunut. Jos haluat vaihtaa salasanan lhet vaihtopyynt uudelleen.
passwordreset.mailBody=Voit vaihtaa salasanasi osoitteessa {0}\n\nJos et ole pyyt\u2030nyt unohtuneen salasanan vaihtamista, ei t\u2030h\u2030n viestiin tarvitse reagoida.\n\nTerveisin,\nInsomnia lippupalvelu\nwww.insomnia.fi
passwordReset.hashNotFound=Salasanan vaihto on vanhentunut. Jos haluat vaihtaa salasanan l\u2030het\u2030 vaihtopyynt\u02C6 uudelleen.
resetMail.header=Unohtuneen salasanan vaihto
resetMail.body=Voit vaihtaa unohtuneen salasanan syttmll kyttjtunnuksesi allaolevaan kenttn. Tunnukseen liitettyyn shkpostiosoitteeseen lhetetn kertakyttinen osoite jossa voit vaihtaa syttmsi kyttjtunnuksen salasanan.
resetmailSent.header=Shkposti lhetetty
resetmailSent.body=Antamasi kyttjtunnuksen shkpostiosoitteeseen on lhetetty osoite jossa voit vaihtaa tunnuksen salasanan.
resetMail.username=Kyttjtunnus
resetMail.send=Lhet shkposti
resetMail.body=Voit vaihtaa unohtuneen salasanan sy\u02C6tt\u2030m\u2030ll\u2030 k\u2030ytt\u2030j\u2030tunnuksesi allaolevaan kentt\u2030\u2030n. Tunnukseen liitettyyn s\u2030hk\u02C6postiosoitteeseen l\u2030hetet\u2030\u2030n kertak\u2030ytt\u02C6inen osoite jossa voit vaihtaa sy\u02C6tt\u2030m\u2030si k\u2030ytt\u2030j\u2030tunnuksen salasanan.
resetmailSent.header=S\u2030hk\u02C6posti l\u2030hetetty
resetmailSent.body=Antamasi k\u2030ytt\u2030j\u2030tunnuksen s\u2030hk\u02C6postiosoitteeseen on l\u2030hetetty osoite jossa voit vaihtaa tunnuksen salasanan.
resetMail.username=K\u2030ytt\u2030j\u2030tunnus
resetMail.send=L\u2030het\u2030 s\u2030hk\u02C6posti
passwordChanged.header=Salasana vaihdettu onnistuneesti
passwordChanged.body=Voit nyt kirjautua kyttjtunnuksella ja uudella salasanalla sisn jrjestelmn.
passwordChanged.body=Voit nyt kirjautua k\u2030ytt\u2030j\u2030tunnuksella ja uudella salasanalla sis\u2030\u2030n j\u2030rjestelm\u2030\u2030n.
loginerror.resetpassword=Salasana unohtunut?
mapManage.lockedPlaces=Lukittu kartasta {0} paikkaa.
mapManage.releasedPlaces=Vapautettu kartasta {0} paikkaa
placeSelect.legend.red=Varattu paikka
placeSelect.legend.green=Oma ostettu paikka
placeSelect.legend.blue=Oma valittu paikka
placeSelect.legend.white=Vapaa paikka
placeSelect.legend.grey=Vapautetaan tarvittaessa
placeSelect.totalPlaces=Paikkoja yhteens
readerevent.seenSince=Nhty viimeksi
placeSelect.totalPlaces=Paikkoja yhteens\u2030
readerevent.seenSince=N\u2030hty viimeksi
reader.tag=Tag
reader.user=Kyttj
reader.user=K\u2030ytt\u2030j\u2030
# Validationmessages
poll.save=Lhet vastauksesi
poll.save=L\u2030het\u2030 vastauksesi
poll.answer=Vastaa kyselyyn
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}
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}
# Java Resource Bundle
# Modified by Zaval JRC Editor (C) Zaval CE Group
# http://www.zaval.org/products/jrc-editor/
#
global.infomail=info@insomnia.fi
global.webpage=http://www.insomnia.fi
global.webpage=http\u003A//www.insomnia.fi
#Bill number
# Validationmessages
global.eventname=Insomnia XII
\ No newline at end of file
global.eventname=Insomnia XII
#Bill number
# Validationmessages
......@@ -20,6 +20,12 @@ bortalRealm {
fi.insomnia.bortal.BortalLoginModule required;
};
bortalRealm {
me.riihimaki.simplestcms.auth.LoginModule required;
};
# ./asadmin create-auth-realm --classname me.riihimaki.simplestcms.auth.SimplestLdapRealm --property jaas-context=simplestCmsRealm simplestCmsRealm
Huom! Lue komennot lpi ja muokkaa muuttujat sopiviksi!
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!