Commit 3bf5ff53 by Tuukka Kivilahti

placegivealmosready

1 parent b55391b1
......@@ -89,7 +89,14 @@ public interface UserBeanLocal {
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);
......
......@@ -419,6 +419,7 @@ public class UserBean implements UserBeanLocal {
// return userFacade.searchForName(name);
// }
@Override
@RolesAllowed(UserPermission.S_CREATE_NEW)
public void createNewUser(EventUser user, String password) {
......@@ -546,21 +547,37 @@ public class UserBean implements UserBeanLocal {
@Override
@RolesAllowed(UserPermission.S_INVITE_USERS)
public boolean invite(String invitemail, String url) {
public boolean invite(String invitemail, String url, GroupMembership inviteGm) {
invitemail = invitemail.trim();
List<User> usercheck = userFacade.findByEmail(invitemail);
if (usercheck.size() > 0) {
return false;
}
EventUser creator = permbean.getCurrentUser();
LanEvent ev = eventBean.getCurrentEvent();
PlaceGroup pg = new PlaceGroup(ev, Calendar.getInstance(), Calendar.getInstance(), false);
String token;
do {
token = PasswordFunctions.generateRandomString(30, PasswordFunctions.ALL_CHARS);
} 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);
String token = PasswordFunctions.generateRandomString(30, PasswordFunctions.ALL_CHARS);
pg.getMembers().add(new GroupMembership(pg, null, token));
pgfacade.create(pg);
}
MailMessage msg = new MailMessage();
msg.setSubject(eventBean.getPropertyString(LanEventPropertyKey.INVITEMAIL_SUBJECT));
......@@ -599,13 +616,19 @@ public class UserBean implements UserBeanLocal {
public boolean createFromInviteToken(EventUser user, String token) {
if (user == null || user.getLogin() == null)
return false;
GroupMembership gm = findToken(token);
// Check that invite has not already been accepted!
if (gm == null || gm.getUser() != null || gm.getInviteAccepted() != null) {
return false;
}
user.setEvent(eventBean.getCurrentEvent());
if(user.getLogin() == null || user.getLogin().trim().isEmpty()) {
user.setLogin(user.getEmail());
}
gm.setUser(user);
gm.setInviteAccepted(Calendar.getInstance());
......
......@@ -50,6 +50,11 @@
<p:column>
<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:dataTable>
......
......@@ -35,6 +35,7 @@ import fi.codecrew.moya.model.Place;
import fi.codecrew.moya.model.PlaceGroup;
import fi.codecrew.moya.web.annotations.SelectedUser;
import fi.codecrew.moya.web.cdiview.GenericCDIView;
import fi.codecrew.moya.web.cdiview.shop.InviteView;
@Named("placeGroupView")
@ConversationScoped
......@@ -51,6 +52,9 @@ public class PlacegroupView extends GenericCDIView {
@EJB
private transient PlaceGroupBeanLocal placegroupBean;
@Inject
private InviteView inviteView;
private Place place;
private PlaceGroup group;
......@@ -169,4 +173,17 @@ public class PlacegroupView extends GenericCDIView {
public void setUser(EventUser 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;
import javax.faces.context.FacesContext;
import javax.inject.Named;
import fi.codecrew.moya.model.GroupMembership;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
......@@ -39,6 +40,9 @@ public class InviteView extends GenericCDIView {
private String invitemail;
private GroupMembership inviteGm;
@EJB
private transient UserBeanLocal userbean;
......@@ -68,7 +72,7 @@ public class InviteView extends GenericCDIView {
path.append("/")
.append(FacesContext.getCurrentInstance().getExternalContext().getContextName())
.append("/user/acceptInvite.jsf?token={0}");
boolean ret = userbean.invite(invitemail, path.toString());
boolean ret = userbean.invite(invitemail, path.toString(), inviteGm);
if (ret) {
this.addFaceMessage("invite.successfull");
invitemail = "";
......@@ -87,4 +91,13 @@ public class InviteView extends GenericCDIView {
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!