Commit 3bf5ff53 by Tuukka Kivilahti

placegivealmosready

1 parent b55391b1
...@@ -89,7 +89,14 @@ public interface UserBeanLocal { ...@@ -89,7 +89,14 @@ public interface UserBeanLocal {
boolean userExists(String login); boolean userExists(String login);
boolean invite(String invitemail, String url); /**
*
* @param invitemail Target mail
* @param url Url to send
* @param membership target group membership, if null we generate new one
* @return
*/
boolean invite(String invitemail, String url, GroupMembership membership);
EventUser mergeEventUserChanges(EventUser shoppingUser); EventUser mergeEventUserChanges(EventUser shoppingUser);
......
...@@ -419,6 +419,7 @@ public class UserBean implements UserBeanLocal { ...@@ -419,6 +419,7 @@ public class UserBean implements UserBeanLocal {
// return userFacade.searchForName(name); // return userFacade.searchForName(name);
// } // }
@Override @Override
@RolesAllowed(UserPermission.S_CREATE_NEW) @RolesAllowed(UserPermission.S_CREATE_NEW)
public void createNewUser(EventUser user, String password) { public void createNewUser(EventUser user, String password) {
...@@ -546,21 +547,37 @@ public class UserBean implements UserBeanLocal { ...@@ -546,21 +547,37 @@ public class UserBean implements UserBeanLocal {
@Override @Override
@RolesAllowed(UserPermission.S_INVITE_USERS) @RolesAllowed(UserPermission.S_INVITE_USERS)
public boolean invite(String invitemail, String url) { public boolean invite(String invitemail, String url, GroupMembership inviteGm) {
invitemail = invitemail.trim(); invitemail = invitemail.trim();
List<User> usercheck = userFacade.findByEmail(invitemail); List<User> usercheck = userFacade.findByEmail(invitemail);
if (usercheck.size() > 0) { if (usercheck.size() > 0) {
return false; return false;
} }
EventUser creator = permbean.getCurrentUser(); EventUser creator = permbean.getCurrentUser();
LanEvent ev = eventBean.getCurrentEvent(); LanEvent ev = eventBean.getCurrentEvent();
PlaceGroup pg = new PlaceGroup(ev, Calendar.getInstance(), Calendar.getInstance(), false);
pg.setCreator(creator);
pg.setName("Invite to " + invitemail); String token;
String token = PasswordFunctions.generateRandomString(30, PasswordFunctions.ALL_CHARS); do {
pg.getMembers().add(new GroupMembership(pg, null, token)); token = PasswordFunctions.generateRandomString(30, PasswordFunctions.ALL_CHARS);
pgfacade.create(pg); } while (gmfacade.findByToken(token) != null); // newer trust random
PlaceGroup pg;
if(inviteGm != null) {
inviteGm.setInviteToken(token);
gmfacade.merge(inviteGm);
pg = inviteGm.getPlaceGroup();
} else {
pg = new PlaceGroup(ev, Calendar.getInstance(), Calendar.getInstance(), false);
pg.setCreator(creator);
pg.setName("Invite to " + invitemail);
pg.getMembers().add(new GroupMembership(pg, null, token));
pgfacade.create(pg);
}
MailMessage msg = new MailMessage(); MailMessage msg = new MailMessage();
msg.setSubject(eventBean.getPropertyString(LanEventPropertyKey.INVITEMAIL_SUBJECT)); msg.setSubject(eventBean.getPropertyString(LanEventPropertyKey.INVITEMAIL_SUBJECT));
...@@ -599,13 +616,19 @@ public class UserBean implements UserBeanLocal { ...@@ -599,13 +616,19 @@ public class UserBean implements UserBeanLocal {
public boolean createFromInviteToken(EventUser user, String token) { public boolean createFromInviteToken(EventUser user, String token) {
if (user == null || user.getLogin() == null) if (user == null || user.getLogin() == null)
return false; return false;
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) {
return false; return false;
} }
user.setEvent(eventBean.getCurrentEvent()); user.setEvent(eventBean.getCurrentEvent());
if(user.getLogin() == null || user.getLogin().trim().isEmpty()) {
user.setLogin(user.getEmail());
}
gm.setUser(user); gm.setUser(user);
gm.setInviteAccepted(Calendar.getInstance()); gm.setInviteAccepted(Calendar.getInstance());
......
...@@ -50,6 +50,11 @@ ...@@ -50,6 +50,11 @@
<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.canModifyCurrent and placeGroupView.currentMemberUserNotNull and placeGroupView.currentReleaseAllowed}" action="#{placeGroupView.releasePlace()}" value="#{i18n['placegroupview.releasePlace']}" />
<p:inputText rendered="#{!(placeGroupView.canModifyCurrent and placeGroupView.currentMemberUserNotNull and placeGroupView.currentReleaseAllowed)}" value="#{inviteView.invitemail}" />
<p:commandButton ajax="false" rendered="#{!(placeGroupView.canModifyCurrent and placeGroupView.currentMemberUserNotNull and placeGroupView.currentReleaseAllowed)}" value="#{i18n['user.invite']}" actionListener="#{placeGroupView.sendInvite}" />
</p:column> </p:column>
</p:dataTable> </p:dataTable>
......
...@@ -35,6 +35,7 @@ import fi.codecrew.moya.model.Place; ...@@ -35,6 +35,7 @@ import fi.codecrew.moya.model.Place;
import fi.codecrew.moya.model.PlaceGroup; import fi.codecrew.moya.model.PlaceGroup;
import fi.codecrew.moya.web.annotations.SelectedUser; import fi.codecrew.moya.web.annotations.SelectedUser;
import fi.codecrew.moya.web.cdiview.GenericCDIView; import fi.codecrew.moya.web.cdiview.GenericCDIView;
import fi.codecrew.moya.web.cdiview.shop.InviteView;
@Named("placeGroupView") @Named("placeGroupView")
@ConversationScoped @ConversationScoped
...@@ -51,6 +52,9 @@ public class PlacegroupView extends GenericCDIView { ...@@ -51,6 +52,9 @@ public class PlacegroupView extends GenericCDIView {
@EJB @EJB
private transient PlaceGroupBeanLocal placegroupBean; private transient PlaceGroupBeanLocal placegroupBean;
@Inject
private InviteView inviteView;
private Place place; private Place place;
private PlaceGroup group; private PlaceGroup group;
...@@ -169,4 +173,17 @@ public class PlacegroupView extends GenericCDIView { ...@@ -169,4 +173,17 @@ public class PlacegroupView extends GenericCDIView {
public void setUser(EventUser user) { public void setUser(EventUser user) {
this.user = user; this.user = user;
} }
public void sendInvite() {
GroupMembership row = memberlist.getRowData();
if (row != null) {
if (permbean.isCurrentUser(row.getPlaceGroup().getCreator()) || permbean.hasPermission(MapPermission.MANAGE_OTHERS)) {
inviteView.setInviteGm(row);
inviteView.invite();
}
}
}
} }
...@@ -24,6 +24,7 @@ import javax.faces.context.ExternalContext; ...@@ -24,6 +24,7 @@ import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext; import javax.faces.context.FacesContext;
import javax.inject.Named; import javax.inject.Named;
import fi.codecrew.moya.model.GroupMembership;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
...@@ -39,6 +40,9 @@ public class InviteView extends GenericCDIView { ...@@ -39,6 +40,9 @@ public class InviteView extends GenericCDIView {
private String invitemail; private String invitemail;
private GroupMembership inviteGm;
@EJB @EJB
private transient UserBeanLocal userbean; private transient UserBeanLocal userbean;
...@@ -68,7 +72,7 @@ public class InviteView extends GenericCDIView { ...@@ -68,7 +72,7 @@ public class InviteView extends GenericCDIView {
path.append("/") path.append("/")
.append(FacesContext.getCurrentInstance().getExternalContext().getContextName()) .append(FacesContext.getCurrentInstance().getExternalContext().getContextName())
.append("/user/acceptInvite.jsf?token={0}"); .append("/user/acceptInvite.jsf?token={0}");
boolean ret = userbean.invite(invitemail, path.toString()); boolean ret = userbean.invite(invitemail, path.toString(), inviteGm);
if (ret) { if (ret) {
this.addFaceMessage("invite.successfull"); this.addFaceMessage("invite.successfull");
invitemail = ""; invitemail = "";
...@@ -87,4 +91,13 @@ public class InviteView extends GenericCDIView { ...@@ -87,4 +91,13 @@ public class InviteView extends GenericCDIView {
return invitemail; return invitemail;
} }
public GroupMembership getInviteGm() {
return inviteGm;
}
public void setInviteGm(GroupMembership inviteGm) {
this.inviteGm = inviteGm;
}
} }
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!