Commit bb24b05a by Tuukka Kivilahti

Merge branch 'asm-placeloss'

2 parents fb8b8c2e 11ff4124
...@@ -141,6 +141,12 @@ public class PlaceGroupBean implements PlaceGroupBeanLocal { ...@@ -141,6 +141,12 @@ public class PlaceGroupBean implements PlaceGroupBeanLocal {
boolean ret = false; boolean ret = false;
if (mem != null && mem.getUser() == null) { if (mem != null && mem.getUser() == null) {
loggerbean.sendMessage(MoyaEventType.INVITE_ACCEPTED, user, "Moya place accepted by user. ", mem);
// change token, just in case
mem.setInviteToken(gmemfacade.createInviteToken());
mem.setUser(user); mem.setUser(user);
// gmemfacade.merge(mem); // gmemfacade.merge(mem);
ret = true; ret = true;
......
...@@ -48,6 +48,7 @@ import javax.imageio.ImageIO; ...@@ -48,6 +48,7 @@ import javax.imageio.ImageIO;
import javax.persistence.EntityManager; import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext; import javax.persistence.PersistenceContext;
import fi.codecrew.moya.enums.apps.MapPermission;
import org.apache.commons.codec.binary.Hex; import org.apache.commons.codec.binary.Hex;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
...@@ -546,7 +547,6 @@ public class UserBean implements UserBeanLocal { ...@@ -546,7 +547,6 @@ public class UserBean implements UserBeanLocal {
// } // }
@Override @Override
@RolesAllowed(UserPermission.S_INVITE_USERS)
public boolean invite(String invitemail, String url, GroupMembership inviteGm) { public boolean invite(String invitemail, String url, GroupMembership inviteGm) {
invitemail = invitemail.trim(); invitemail = invitemail.trim();
...@@ -560,19 +560,29 @@ public class UserBean implements UserBeanLocal { ...@@ -560,19 +560,29 @@ public class UserBean implements UserBeanLocal {
LanEvent ev = eventBean.getCurrentEvent(); LanEvent ev = eventBean.getCurrentEvent();
String token; String token = gmfacade.createInviteToken();
do {
token = PasswordFunctions.generateRandomString(30, PasswordFunctions.ALL_CHARS);
} while (gmfacade.findByToken(token) != null); // newer trust random
PlaceGroup pg; PlaceGroup pg;
if(inviteGm != null) { if(inviteGm != null) {
if(!permbean.hasPermission(MapPermission.MANAGE_OTHERS)) {
if (inviteGm.getUser() != null && !permbean.isCurrentUser(inviteGm.getUser())) {
throw new EJBAccessException("No permission to reinvite to that place");
}
if (inviteGm.getUser() == null && !permbean.isCurrentUser(inviteGm.getPlaceGroup().getCreator())) {
throw new EJBAccessException("No permission to invite to that place");
}
}
inviteGm.setInviteToken(token); inviteGm.setInviteToken(token);
inviteGm.setInviteEmail(invitemail); inviteGm.setInviteEmail(invitemail);
gmfacade.merge(inviteGm); gmfacade.merge(inviteGm);
pg = inviteGm.getPlaceGroup(); pg = inviteGm.getPlaceGroup();
} else { } else {
if(!permbean.hasPermission(UserPermission.INVITE_USERS)) {
throw new EJBAccessException("No permission to invite other people");
}
pg = new PlaceGroup(ev, Calendar.getInstance(), Calendar.getInstance(), false); pg = new PlaceGroup(ev, Calendar.getInstance(), Calendar.getInstance(), false);
pg.setCreator(creator); pg.setCreator(creator);
pg.setName("Invite to " + invitemail); pg.setName("Invite to " + invitemail);
...@@ -613,15 +623,26 @@ public class UserBean implements UserBeanLocal { ...@@ -613,15 +623,26 @@ public class UserBean implements UserBeanLocal {
@PermitAll @PermitAll
public EventUser acceptInviteForExistingUser(String username, String password, String token) { public EventUser acceptInviteForExistingUser(String username, String password, String token) {
GroupMembership gm = findToken(token); GroupMembership gm = findToken(token);
if (gm == null || gm.getUser() != null || gm.getInviteAccepted() != null) { if (gm == null || ((gm.getUser() != null || gm.getInviteAccepted() != null) && gm.getPlaceReservation() == null)) {
return null; return null;
} }
User u = userFacade.findByLogin(username);
EventUser eu = this.getEventUser(u, true); // it's nice to check password also
EventUser eu = validateUser(username, password, true);
if(eu == null)
return null;
loggerbean.sendMessage(MoyaEventType.INVITE_ACCEPTED, eu, "Ivite accepted by current user", gm, gm.getUser());
gm.setUser(eu); gm.setUser(eu);
gm.setInviteAccepted(Calendar.getInstance()); gm.setInviteAccepted(Calendar.getInstance());
gm.setInviteEmail(null);
// change token, just in case
gm.setInviteToken(gmfacade.createInviteToken());
return eu; return eu;
} }
...@@ -634,7 +655,7 @@ public class UserBean implements UserBeanLocal { ...@@ -634,7 +655,7 @@ public class UserBean implements UserBeanLocal {
GroupMembership gm = findToken(token); GroupMembership gm = findToken(token);
// Check that invite has not already been accepted! // Check that invite has not already been accepted!
if (gm == null || gm.getUser() != null || gm.getInviteAccepted() != null) { if (gm == null || ((gm.getUser() != null || gm.getInviteAccepted() != null) && gm.getPlaceReservation() == null)) {
return false; return false;
} }
user.setEvent(eventBean.getCurrentEvent()); user.setEvent(eventBean.getCurrentEvent());
...@@ -646,6 +667,9 @@ public class UserBean implements UserBeanLocal { ...@@ -646,6 +667,9 @@ public class UserBean implements UserBeanLocal {
gm.setUser(user); gm.setUser(user);
gm.setInviteAccepted(Calendar.getInstance()); gm.setInviteAccepted(Calendar.getInstance());
// change token, just in case
gm.setInviteToken(gmfacade.createInviteToken());
eventUserFacade.create(user); eventUserFacade.create(user);
return true; return true;
} }
...@@ -814,17 +838,20 @@ public class UserBean implements UserBeanLocal { ...@@ -814,17 +838,20 @@ public class UserBean implements UserBeanLocal {
return ret; return ret;
} }
@Override private EventUser validateUser(String username, String password, boolean createEventUser) {
public EventUser validateUser(String username, String password)
{
User user = userFacade.findByLogin(username); User user = userFacade.findByLogin(username);
EventUser ret = null; EventUser ret = null;
if (user != null && user.checkPassword(password)) if (user != null && user.checkPassword(password))
{ {
ret = this.getEventUser(user, false); ret = this.getEventUser(user, createEventUser);
} }
return ret; return ret;
}
@Override
public EventUser validateUser(String username, String password)
{
return validateUser(username, password,false);
} }
@Override @Override
......
...@@ -65,13 +65,16 @@ public class GroupMembershipFacade extends IntegerPkGenericFacade<GroupMembershi ...@@ -65,13 +65,16 @@ public class GroupMembershipFacade extends IntegerPkGenericFacade<GroupMembershi
logger.info("Generated token {} found from GoupMembership: {} Generating new!", token, gm); logger.info("Generated token {} found from GoupMembership: {} Generating new!", token, gm);
} }
token = eventbean.getCurrentEvent().getId().toString(); token = eventbean.getCurrentEvent().getId().toString();
token += PasswordFunctions.generateRandomString(15); token += PasswordFunctions.generateRandomString(30);
gm = findByToken(token); gm = findByToken(token);
} while (gm != null); } while (gm != null);
return token; return token;
} }
public GroupMembership findByToken(String token) { public GroupMembership findByToken(String token) {
if(token == null || token.trim().isEmpty())
return null;
CriteriaBuilder cb = getEm().getCriteriaBuilder(); CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<GroupMembership> cq = cb.createQuery(GroupMembership.class); CriteriaQuery<GroupMembership> cq = cb.createQuery(GroupMembership.class);
Root<GroupMembership> root = cq.from(GroupMembership.class); Root<GroupMembership> root = cq.from(GroupMembership.class);
......
...@@ -11,6 +11,7 @@ public enum MoyaEventType { ...@@ -11,6 +11,7 @@ public enum MoyaEventType {
BANKING_MESSAGE(MoyaEventSource.SHOP), BANKING_MESSAGE(MoyaEventSource.SHOP),
PLACE_ERROR(MoyaEventSource.PLACEMAP), PLACE_ERROR(MoyaEventSource.PLACEMAP),
ACCOUNTEVENT_INFO(MoyaEventSource.USER), ACCOUNTEVENT_INFO(MoyaEventSource.USER),
INVITE_ACCEPTED(MoyaEventSource.USER),
USER_PERMISSION_VIOLATION(MoyaEventSource.USER), USER_PERMISSION_VIOLATION(MoyaEventSource.USER),
LOGIN_SUCCESSFULL(MoyaEventSource.USER), LOGIN_SUCCESSFULL(MoyaEventSource.USER),
......
<!DOCTYPE html <!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" <html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets"
......
...@@ -136,7 +136,7 @@ ...@@ -136,7 +136,7 @@
</tr> </tr>
<tr> <tr>
<td colspan="2"><b><h:outputLabel value="#{i18n['user.email']}" for="email" /></b> <br /> <p:inplace emptyLabel="#{i18n['user.insert']}"> <td colspan="2"><b><h:outputLabel value="#{i18n['user.email']}" for="email" /></b> <br /> <p:inplace emptyLabel="#{i18n['user.insert']}">
<p:inputText validator="#{userValidator.validateEmail}" size="45" id="email" disabled="#{!cc.attrs.creating and !userView.canSave}" value="#{userView.selectedUser.email}" /> <p:inputText validator="#{userValidator.validateEmailEdit}" size="45" id="email" disabled="#{!cc.attrs.creating and !userView.canSave}" value="#{userView.selectedUser.email}" />
</p:inplace></td> </p:inplace></td>
</tr> </tr>
<tr> <tr>
......
...@@ -37,7 +37,8 @@ ...@@ -37,7 +37,8 @@
<h:outputText value="#{i18n['placegroupview.token']}" /> <h:outputText value="#{i18n['placegroupview.token']}" />
</f:facet> </f:facet>
<h:outputText rendered="#{empty member.user}" value="#{member.inviteToken}" /> <h:outputText rendered="#{empty member.user}" value="#{member.inviteToken}" />
<h:outputText rendered="#{!empty member.user}" value="#{member.user.firstnames} #{member.user.lastname} (#{member.user.nick})" /> <h:outputText rendered="#{(!empty member.user) and placeGroupView.canModifyCurrent}" value="#{member.user.firstnames} #{member.user.lastname} (#{member.user.nick})" />
<h:outputText rendered="#{(!empty member.user) and !placeGroupView.canModifyCurrent}" value="#{i18n['placegroupview.placetransferred']}" />
</p:column> </p:column>
<p:column> <p:column>
<f:facet name="header"> <f:facet name="header">
...@@ -48,11 +49,11 @@ ...@@ -48,11 +49,11 @@
</p:column> </p:column>
<p:column> <p:column>
<h:commandButton rendered="#{placeGroupView.canModifyCurrent and placeGroupView.currentMemberUserNotNull and placeGroupView.currentReleaseAllowed}" action="#{placeGroupView.releasePlace()}" value="#{i18n['placegroupview.releasePlace']}" /> <h:commandButton rendered="#{placeGroupView.currentReleaseAllowed}" action="#{placeGroupView.releasePlace()}" value="#{i18n['placegroupview.releasePlace']}" />
<p:inputText id="inviteEmail" immediate="true" rendered="#{placeGroupView.canSendInviteCurrent}" value="#{placeGroupView.inviteMail}" />
<p:inputText immediate="true" rendered="#{placeGroupView.canSendInviteCurrent}" value="#{placeGroupView.inviteMail}" />
<p:commandButton rendered="#{placeGroupView.canSendInviteCurrent}" value="#{i18n['user.invite']}" actionListener="#{placeGroupView.sendInvite}" update=":messages placestable" /> <p:commandButton rendered="#{placeGroupView.canSendInviteCurrent}" value="#{i18n['user.invite']}" actionListener="#{placeGroupView.sendInvite}" update=":messages placestable" />
<p:watermark for="inviteEmail" rendered="#{placeGroupView.canSendInviteCurrent}" value="#{i18n['user.email']}" id="inviteEmailWatermark" />
<h:outputText rendered="#{placeGroupView.showCancelInviteCurrent}" value="#{member.inviteEmail}" />&nbsp;&nbsp; <h:outputText rendered="#{placeGroupView.showCancelInviteCurrent}" value="#{member.inviteEmail}" />&nbsp;&nbsp;
<p:commandButton rendered="#{placeGroupView.showCancelInviteCurrent}" value="#{i18n['user.cancelInvite']}" actionListener="#{placeGroupView.cancelInvite}" update=":messages placestable" /> <p:commandButton rendered="#{placeGroupView.showCancelInviteCurrent}" value="#{i18n['user.cancelInvite']}" actionListener="#{placeGroupView.cancelInvite}" update=":messages placestable" />
......
...@@ -124,7 +124,7 @@ ...@@ -124,7 +124,7 @@
<p:message for="town" /> <p:message for="town" />
<p:outputLabel value="#{i18n['user.email']}" for="email" /> <p:outputLabel value="#{i18n['user.email']}" for="email" />
<p:inputText validator="#{userValidator.validateEmail}" size="25" id="email" disabled="#{!cc.attrs.creating and !userView.canSave}" value="#{userView.selectedUser.email}" /> <p:inputText validator="#{userValidator.validateEmailEdit}" size="25" id="email" disabled="#{!cc.attrs.creating and !userView.canSave}" value="#{userView.selectedUser.email}" />
<p:message for="email" /> <p:message for="email" />
<p:outputLabel value="#{i18n['user.phone']}" for="phone" /> <p:outputLabel value="#{i18n['user.phone']}" for="phone" />
......
...@@ -128,7 +128,7 @@ ...@@ -128,7 +128,7 @@
<tr> <tr>
<td colspan="2"><h:outputLabel value="#{i18n['user.email']}" for="email" /> <br /> <td colspan="2"><h:outputLabel value="#{i18n['user.email']}" for="email" /> <br />
<p:inplace emptyLabel="#{i18n['user.insert']}"> <p:inplace emptyLabel="#{i18n['user.insert']}">
<p:inputText validator="#{userValidator.validateEmail}" size="45" id="email" disabled="#{!cc.attrs.creating and !userView.canSave}" value="#{userView.selectedUser.email}" /> <p:inputText validator="#{userValidator.validateEmailEdit}" size="45" id="email" disabled="#{!cc.attrs.creating and !userView.canSave}" value="#{userView.selectedUser.email}" />
</p:inplace></td> </p:inplace></td>
</tr> </tr>
......
...@@ -49,6 +49,7 @@ import javax.servlet.http.HttpServlet; ...@@ -49,6 +49,7 @@ import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import fi.codecrew.moya.clientutils.BortalLocalContextHolder;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
...@@ -92,10 +93,14 @@ public class IrcServlet extends HttpServlet { ...@@ -92,10 +93,14 @@ public class IrcServlet extends HttpServlet {
* @see Servlet#init(ServletConfig) * @see Servlet#init(ServletConfig)
*/ */
public void init(ServletConfig config) throws ServletException { public void init(ServletConfig config) throws ServletException {
IrcBot bot = new IrcBot("irc.cc.tut.fi", "#moya-debug", "moya-bot");
botbean.add(bot); // tuotannossa rakastan tätä, devauspuolella en.
bots.add(bot); if(!BortalLocalContextHolder.isInDevelopmentMode()) {
bot.start(); IrcBot bot = new IrcBot("irc.cc.tut.fi", "#moya-debug", "moya-bot");
botbean.add(bot);
bots.add(bot);
bot.start();
}
} }
......
...@@ -82,18 +82,24 @@ public class PlacegroupView extends GenericCDIView { ...@@ -82,18 +82,24 @@ public class PlacegroupView extends GenericCDIView {
return "/place/editGroup"; return "/place/editGroup";
} }
public boolean canModify(GroupMembership row) {
boolean ret = false;
if (row != null
&& (permbean.isCurrentUser(row.getPlaceGroup().getCreator()) || permbean
.hasPermission(MapPermission.MANAGE_OTHERS))) {
ret = true;
}
return ret;
}
public boolean isCanModifyCurrent() { public boolean isCanModifyCurrent() {
return canModify(memberlist.getRowData()); GroupMembership row = memberlist.getRowData();
if (row == null)
return false;
// if you are sitting on place, or can modify other users, then you can possibly modify this place
if(permbean.isCurrentUser(row.getUser()) || permbean.hasPermission(MapPermission.MANAGE_OTHERS) )
return true;
// or you are the creator, and no-one is sitting on the place
if(row.getUser() == null && permbean.isCurrentUser(row.getPlaceGroup().getCreator()))
return true;
return false;
} }
public boolean isShowCancelInviteCurrent() { public boolean isShowCancelInviteCurrent() {
...@@ -104,7 +110,7 @@ public class PlacegroupView extends GenericCDIView { ...@@ -104,7 +110,7 @@ public class PlacegroupView extends GenericCDIView {
if(!isCanModifyCurrent()) if(!isCanModifyCurrent())
return false; return false;
if(row.getUser() == null && (row.getInviteEmail() != null && !row.getInviteEmail().trim().isEmpty())) if((row.getInviteEmail() != null && !row.getInviteEmail().trim().isEmpty()))
return true; return true;
return false; return false;
...@@ -118,7 +124,10 @@ public class PlacegroupView extends GenericCDIView { ...@@ -118,7 +124,10 @@ public class PlacegroupView extends GenericCDIView {
if(!isCanModifyCurrent()) if(!isCanModifyCurrent())
return false; return false;
if(row.getUser() == null && (row.getInviteEmail() == null || row.getInviteEmail().trim().isEmpty())) if(isCurrentReleaseAllowed())
return false;
if(row.getInviteEmail() == null || row.getInviteEmail().trim().isEmpty())
return true; return true;
return false; return false;
...@@ -133,17 +142,35 @@ public class PlacegroupView extends GenericCDIView { ...@@ -133,17 +142,35 @@ public class PlacegroupView extends GenericCDIView {
} }
public boolean isCurrentReleaseAllowed() { public boolean isCurrentReleaseAllowed() {
//placeGroupView.canModifyCurrent and placeGroupView.currentMemberUserNotNull and
GroupMembership row = memberlist.getRowData(); GroupMembership row = memberlist.getRowData();
if(row == null || row.getUser() == null)
return false;
if(!isCanModifyCurrent())
return false;
if(row.getEnteredEvent() != null && !permbean.hasPermission(MapPermission.MANAGE_OTHERS)) if(row.getEnteredEvent() != null && !permbean.hasPermission(MapPermission.MANAGE_OTHERS))
return false; return false;
return true;
// if it's your own place, and you are sitting on it, you can free it
if(permbean.isCurrentUser(row.getPlaceGroup().getCreator()) && permbean.isCurrentUser(row.getUser()))
return true;
// And ofcourse you can free it, if you are superadmin
if(permbean.hasPermission(MapPermission.MANAGE_OTHERS))
return true;
return false;
} }
public ListDataModel<GroupMembership> getGroupMemberships() { public ListDataModel<GroupMembership> getGroupMemberships() {
memberlist = new ListDataModel<GroupMembership>( memberlist = new ListDataModel<GroupMembership>(placegroupBean.getMembershipsAndCreations(user));
placegroupBean.getMembershipsAndCreations(user));
return memberlist; return memberlist;
} }
...@@ -217,20 +244,22 @@ public class PlacegroupView extends GenericCDIView { ...@@ -217,20 +244,22 @@ public class PlacegroupView extends GenericCDIView {
public void sendInvite() { public void sendInvite() {
GroupMembership row = memberlist.getRowData(); GroupMembership row = memberlist.getRowData();
if (row != null) {
if (permbean.isCurrentUser(row.getPlaceGroup().getCreator()) || permbean.hasPermission(MapPermission.MANAGE_OTHERS)) { if(!isCanModifyCurrent()) {
String inviteMail = inviteMails.get(row.getId()); this.addFaceMessage("invite.permissionDenied");
inviteView.setInviteGm(row);
inviteView.setInvitemail(inviteMail);
inviteView.invite();
}
} }
String inviteMail = inviteMails.get(row.getId());
inviteView.setInviteGm(row);
inviteView.setInvitemail(inviteMail);
inviteView.invite();
} }
public void cancelInvite() { public void cancelInvite() {
GroupMembership row = memberlist.getRowData(); GroupMembership row = memberlist.getRowData();
if (row != null) { if (row != null) {
if (permbean.isCurrentUser(row.getPlaceGroup().getCreator()) || permbean.hasPermission(MapPermission.MANAGE_OTHERS)) { if (isCanModifyCurrent()) {
userBean.cancelInvite(row); userBean.cancelInvite(row);
} }
} }
......
...@@ -139,7 +139,6 @@ public class MenuView { ...@@ -139,7 +139,6 @@ public class MenuView {
} }
if (out != null) { if (out != null) {
logger.info("Adding topmenu {}", out);
viewchangeTopmenu.add(new JsfMenuitem(topmenu.getKey(), out)); viewchangeTopmenu.add(new JsfMenuitem(topmenu.getKey(), out));
} }
} }
......
...@@ -72,10 +72,23 @@ public class InviteAcceptView extends GenericCDIView { ...@@ -72,10 +72,23 @@ public class InviteAcceptView extends GenericCDIView {
membership = userbean.findToken(token); membership = userbean.findToken(token);
} }
if (membership == null || membership.getInviteAccepted() != null) { if (membership == null) {
this.addFaceMessage("invite.notFound");
done = true;
return;
}
// if there is place for this invitation, we can assume that this is resend
// (token is also regenerated afther every inviteaccept)
if(membership.getInviteAccepted() != null && membership.getPlaceReservation() == null) {
this.addFaceMessage("invite.notFound"); this.addFaceMessage("invite.notFound");
done = true; done = true;
} else if (user == null) { return;
}
if (user == null) {
user = new EventUser(new User(), null, permbean.getCurrentUser()); user = new EventUser(new User(), null, permbean.getCurrentUser());
userview.setUser(user); userview.setUser(user);
...@@ -98,62 +111,78 @@ public class InviteAcceptView extends GenericCDIView { ...@@ -98,62 +111,78 @@ public class InviteAcceptView extends GenericCDIView {
EventUser eu = userbean.acceptInviteForExistingUser(username, password, token); EventUser eu = userbean.acceptInviteForExistingUser(username, password, token);
if (eu != null) { if (eu != null) {
login(username, password);
authView.setLogin(username);
authView.setPassword(password);
if(isPlaceGroupMembership())
navihandler.saveNavigation("/place/myGroups");
else
navihandler.saveNavigation("/index");
authView.executeLogin();
// code afther this should newer be run
this.username = null; this.username = null;
this.password = null; this.password = null;
super.addFaceMessage("invite.userCreateSuccessfull"); super.addFaceMessage("invite.userLoginSuccessfull");
if(isPlaceGroupMembership()) if(isPlaceGroupMembership())
return "/place/myGroups"; return "/place/myGroups.jsf";
else else
return "/index"; return "/index.jsf";
} }
this.username = null; this.username = null;
this.password = null; this.password = null;
super.addFaceMessage("invite.userCreateSuccessfull"); super.addFaceMessage("invite.userLoginUnSuccessfull");
return null; return null;
} }
private void login(String usr, String pwd) { public String createUser() {
HttpServletRequest req = getRequest();
if (req.getUserPrincipal() != null) {
try {
req.logout();
} catch (ServletException e) {
logger.warn("Logging out previous user failed!", e);
}
}
try {
req.login(usr.trim().toLowerCase(), pwd);
} catch (ServletException e) {
logger.warn("Login failed for invite user " + usr, e);
}
} userbean.createNewUser(user, userview.getPassword());
public String createUser() { password = userview.getPassword();
username = user.getLogin();
user.getUser().resetPassword(userview.getPassword()); // still there, ewerything must be ok, let's just login with our new user
return loginWithExisting();
/*
// user.getUser().resetPassword(userview.getPassword());
if (userbean.createFromInviteToken(user, token)) { if (userbean.createFromInviteToken(user, token)) {
login(user.getUser().getLogin(), userview.getPassword());
authView.setLogin(username);
authView.setPassword(password);
if(isPlaceGroupMembership())
navihandler.saveNavigation("/place/myGroups");
else
navihandler.saveNavigation("/index");
authView.executeLogin();
// And rest should newer be run, if all works, I will maybe remove them
super.addFaceMessage("invite.userCreateSuccessfull"); super.addFaceMessage("invite.userCreateSuccessfull");
done = true; done = true;
user = null; user = null;
if(isPlaceGroupMembership()) if(isPlaceGroupMembership())
return "/place/myGroups"; return "/place/myGroups.jsf";
else else
return "/index"; return "/index.jsf";
} }
super.addFaceMessage("invite.userCreateSuccessfull"); super.addFaceMessage("invite.userCreateSuccessfull");
done = true; done = true;
user = null; user = null;
return null; return null;*/
} }
public void setToken(String token) { public void setToken(String token) {
......
...@@ -56,6 +56,24 @@ public class UserValidator implements Serializable { ...@@ -56,6 +56,24 @@ public class UserValidator implements Serializable {
private static final Logger logger = LoggerFactory.getLogger(UserValidator.class); private static final Logger logger = LoggerFactory.getLogger(UserValidator.class);
//validateEmailEdit
public void validateEmailEdit(FacesContext context, UIComponent ui, Object value) {
String email = (String) value;
// I think that a@a.fi is shortest form of possible email?
if(email.trim().length() < EMAIL_MIN_LENGTH ) {
message(context, ui, "user.emailtooshortmessage", EMAIL_MIN_LENGTH);
}
if (!permbean.hasPermission(UserPermission.MODIFY) && (email == null || email.indexOf('@') == -1)) {
message(context, ui, "userview.invalidEmail");
}
}
public void validateEmail(FacesContext context, UIComponent ui, Object value) { public void validateEmail(FacesContext context, UIComponent ui, Object value) {
String email = (String) value; String email = (String) value;
......
...@@ -429,3 +429,20 @@ usercart.showoverview = Vie tarkastusn\u00E4kym\u00E4\u00E4n ...@@ -429,3 +429,20 @@ usercart.showoverview = Vie tarkastusn\u00E4kym\u00E4\u00E4n
viewlectures.title = Kurssit ja luennot viewlectures.title = Kurssit ja luennot
yes = Kyll\u00E4 yes = Kyll\u00E4
user.emailAndUsername=Email (toimii k\u00E4ytt\u00E4j\u00E4tunnuksena)
user.emailtooshortmessage=
user.emailsunmatch=
user.emailAgain=S\u00E4hk\u00F6posti (uudelleen)
user.email=S\u00E4hk\u00F6postiosoite
required=Arvo vaaditaan
user.createdmessage=K\u00E4ytt\u00E4j\u00E4tunnus on luotu onnistuneesti.
product.vat=ALV-%
productFlag.CREATE_NEW_PLACE_WHEN_BOUGHT=Luo uusi paikka ostettaessa
submenu.neomap.view=Paikkakartta
user.cancelInvite=Peruuta kutsu
user.invite.placeInvite.header=Liit\u00E4 paikka itsellesi
userview.userExistsByEmail=
invite.permissionDenied=Sinulla ei ole oikeutta luovuttaa paikkaa eteenp\u00E4in.
invite.userLoginSuccessfull=Kutsu vastaanotettu onnistuneesti
invite.userLoginUnSuccessfull=Kirjautuminen ep\u00E4onnistui
placegroupview.placetransferred=Paikka annettu eteenp\u00E4in
...@@ -1628,3 +1628,19 @@ voting.create.voteEnd = Voting close ...@@ -1628,3 +1628,19 @@ voting.create.voteEnd = Voting close
voting.create.voteStart = Voting start voting.create.voteStart = Voting start
yes = Yes yes = Yes
shop.unitdiscount=Discount
shop.customPrice=new price
user.emailAndUsername=Email (works also as username)
user.emailtooshortmessage=Email must be atleast {0} characters long.
user.emailsunmatch=Email addresses does not match.
user.emailAgain=Email (again)
required=Required
usercart.showoverview=
submenu.neomap.view=Map
user.cancelInvite=Cancel invite
user.invite.placeInvite.header=Receive sendet place
userview.userExistsByEmail=Email already exists\! You may already have an account.
invite.permissionDenied=You don't have permission to regive this place.
invite.userLoginSuccessfull=Invite accepted successfully
invite.userLoginUnSuccessfull=Login unsuccessfull
placegroupview.placetransferred=Place is transferred
...@@ -1610,3 +1610,18 @@ voting.create.voteEnd = \u00C4\u00E4nestys kiinni ...@@ -1610,3 +1610,18 @@ voting.create.voteEnd = \u00C4\u00E4nestys kiinni
voting.create.voteStart = \u00C4\u00E4nestys auki voting.create.voteStart = \u00C4\u00E4nestys auki
yes = Kyll\u00E4 yes = Kyll\u00E4
shop.unitdiscount=Alennus
shop.customPrice=Uusi hinta
user.emailAndUsername=S\u00E4hk\u00F6posti (toimii my\u00F6s k\u00E4ytt\u00E4j\u00E4tunnuksena)
user.emailtooshortmessage=S\u00E4hk\u00F6postin tarvitsee olla v\u00E4hint\u00E4\u00E4n {0} merkki\u00E4 pitk\u00E4.
user.emailsunmatch=S\u00E4hk\u00F6postiosoitteet eiv\u00E4t t\u00E4sm\u00E4\u00E4.
user.emailAgain=S\u00E4hk\u00F6posti (uudelleen)
required=Vaaditaan
submenu.neomap.view=Paikkakartta
user.cancelInvite=Peruuta kutsu
user.invite.placeInvite.header=Vastaanota l\u00E4hetetty paikka
userview.userExistsByEmail=S\u00E4hk\u00F6posti on jo olemassa. Sinulla saattaa jo olla tunnus j\u00E4rjestelm\u00E4ss\u00E4.
invite.permissionDenied=Sinulla ei ole oikeutta luovuttaa paikkaa eteenp\u00E4in.
invite.userLoginSuccessfull=Kutsu vastaanotettu onnistuneesti
invite.userLoginUnSuccessfull=Kirjautuminen ep\u00E4onnistui
placegroupview.placetransferred=Paikka on annettu eteenp\u00E4in.
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!