Commit 55c99921 by Juho Juopperi

default event settings and event creation

1 parent 586709f7
...@@ -2,19 +2,32 @@ package fi.insomnia.bortal.beans; ...@@ -2,19 +2,32 @@ package fi.insomnia.bortal.beans;
import javax.ejb.EJB; import javax.ejb.EJB;
import javax.ejb.Stateless; import javax.ejb.Stateless;
import javax.persistence.TypedQuery;
import fi.insomnia.bortal.facade.EventFacade; import fi.insomnia.bortal.facade.EventFacade;
import fi.insomnia.bortal.facade.EventSettingsFacade;
import fi.insomnia.bortal.facade.UserFacade;
import fi.insomnia.bortal.model.Event; import fi.insomnia.bortal.model.Event;
import fi.insomnia.bortal.model.EventSettings;
import fi.insomnia.bortal.model.User;
/** /**
* Session Bean implementation class EventBean * Session Bean implementation class EventBean
*/ */
@Stateless @Stateless
public class EventBean implements EventBeanLocal { public class EventBean implements EventBeanLocal {
private static final String DEFAULT_EVENT_NAME = "Default event";
private static final String DEFAULT_ORGANISATION_NAME = "Default organisation";
@EJB @EJB
private EventFacade eventFacade; private EventFacade eventFacade;
@EJB
private EventSettingsFacade eventSettingsFacade;
@EJB
private UserFacade userFacade;
@Override @Override
public Event getEventByHostname(String hostname) { public Event getEventByHostname(String hostname) {
...@@ -26,15 +39,30 @@ public class EventBean implements EventBeanLocal { ...@@ -26,15 +39,30 @@ public class EventBean implements EventBeanLocal {
} }
public Event findOrCreateDefaultEvent() { public Event findOrCreateDefaultEvent() {
Event ret = eventFacade.findByHostname(""); Event ret = eventFacade.findByName(DEFAULT_EVENT_NAME);
if (ret == null) { if (ret == null) {
ret = new Event(); ret = new Event();
ret.setReferer(""); ret.setReferer("");
ret.setName("DEFAULT EVENT"); ret.setName(DEFAULT_EVENT_NAME);
ret.setSettings(findOrCreateDefaultEventSettings());
eventFacade.create(ret); eventFacade.create(ret);
} }
return ret; return ret;
} }
public EventSettings findOrCreateDefaultEventSettings() {
EventSettings settings = eventSettingsFacade.findByOrganisation(DEFAULT_ORGANISATION_NAME);
if (settings == null) {
settings = new EventSettings();
settings.setOrganisation(DEFAULT_ORGANISATION_NAME);
User defaultUser = userFacade.getOrCreateDefaultUser();
settings.setAdmin(defaultUser);
eventSettingsFacade.create(settings);
}
return settings;
}
} }
...@@ -20,6 +20,7 @@ import fi.insomnia.bortal.facade.AccessRightFacade; ...@@ -20,6 +20,7 @@ import fi.insomnia.bortal.facade.AccessRightFacade;
import fi.insomnia.bortal.facade.RoleFacade; import fi.insomnia.bortal.facade.RoleFacade;
import fi.insomnia.bortal.facade.UserFacade; import fi.insomnia.bortal.facade.UserFacade;
import fi.insomnia.bortal.model.AccessRight; import fi.insomnia.bortal.model.AccessRight;
import fi.insomnia.bortal.model.Event;
import fi.insomnia.bortal.model.Role; import fi.insomnia.bortal.model.Role;
import fi.insomnia.bortal.model.RoleRight; import fi.insomnia.bortal.model.RoleRight;
import fi.insomnia.bortal.model.User; import fi.insomnia.bortal.model.User;
...@@ -123,8 +124,8 @@ public class SessionHandlerBean implements SessionHandlerBeanLocal, SessionHandl ...@@ -123,8 +124,8 @@ public class SessionHandlerBean implements SessionHandlerBeanLocal, SessionHandl
* Makes sure default user and public role exist and the user is member of * Makes sure default user and public role exist and the user is member of
* the role. * the role.
*/ */
public User getDefaultUser() { public User getDefaultUser(Event event) {
Role publicRole = roleFacade.getOrCreatePublicRole(); Role publicRole = roleFacade.getOrCreatePublicRole(event);
User defaultUser = userfacade.getOrCreateDefaultUser(); User defaultUser = userfacade.getOrCreateDefaultUser();
if (!defaultUser.getRoles().contains(publicRole)) { if (!defaultUser.getRoles().contains(publicRole)) {
ArrayList<Role> userRoles = new ArrayList<Role>(); ArrayList<Role> userRoles = new ArrayList<Role>();
...@@ -147,12 +148,11 @@ public class SessionHandlerBean implements SessionHandlerBeanLocal, SessionHandl ...@@ -147,12 +148,11 @@ public class SessionHandlerBean implements SessionHandlerBeanLocal, SessionHandl
} }
@Override @Override
public User getCurrentUser() { public User getCurrentUser(Event event) {
Principal principal = context.getCallerPrincipal(); Principal principal = context.getCallerPrincipal();
User ret = userbean.getUser(principal.getName()); User ret = userbean.getUser(principal.getName());
if (ret == null) if (ret == null) {
{ ret = getDefaultUser(event);
ret = getDefaultUser();
} }
return ret; return ret;
} }
......
...@@ -27,9 +27,12 @@ public class EventFacade extends GenericFacade<Integer, Event> { ...@@ -27,9 +27,12 @@ public class EventFacade extends GenericFacade<Integer, Event> {
TypedQuery<Event> q = em.createNamedQuery("Event.findByReferer", Event.class); TypedQuery<Event> q = em.createNamedQuery("Event.findByReferer", Event.class);
q.setParameter("referer", hostname); q.setParameter("referer", hostname);
return this.getSingleNullableResult(q); return this.getSingleNullableResult(q);
}
}
public Event findByName(String name) {
TypedQuery<Event> q = em.createNamedQuery("Event.findByName", Event.class);
q.setParameter("name", name);
return this.getSingleNullableResult(q);
}
} }
...@@ -4,6 +4,8 @@ import javax.ejb.LocalBean; ...@@ -4,6 +4,8 @@ import javax.ejb.LocalBean;
import javax.ejb.Stateless; import javax.ejb.Stateless;
import javax.persistence.EntityManager; import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext; import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery;
import fi.insomnia.bortal.model.EventSettings; import fi.insomnia.bortal.model.EventSettings;
@Stateless @Stateless
...@@ -21,4 +23,10 @@ public class EventSettingsFacade extends GenericFacade<Integer, EventSettings> { ...@@ -21,4 +23,10 @@ public class EventSettingsFacade extends GenericFacade<Integer, EventSettings> {
return em; return em;
} }
public EventSettings findByOrganisation(String organisation) {
TypedQuery<EventSettings> q = em.createNamedQuery("EventSettings.findByOrganisation", EventSettings.class);
q.setParameter("organisation", organisation);
return getSingleNullableResult(q);
}
} }
...@@ -6,6 +6,7 @@ import javax.persistence.EntityManager; ...@@ -6,6 +6,7 @@ import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext; import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery; import javax.persistence.TypedQuery;
import fi.insomnia.bortal.model.Event;
import fi.insomnia.bortal.model.Role; import fi.insomnia.bortal.model.Role;
@Stateless @Stateless
...@@ -30,18 +31,18 @@ public class RoleFacade extends EventChildGenericFacade<Role> { ...@@ -30,18 +31,18 @@ public class RoleFacade extends EventChildGenericFacade<Role> {
return this.getSingleNullableResult(q); return this.getSingleNullableResult(q);
} }
public Role getOrCreatePublicRole() { public Role getOrCreatePublicRole(Event event) {
Role publicRole = findByName(PUBLIC_ROLE_NAME); Role publicRole = findByName(PUBLIC_ROLE_NAME);
if (publicRole == null) { if (publicRole == null) {
publicRole = createPublicRole(); publicRole = createPublicRole(event);
} }
return publicRole; return publicRole;
} }
private Role createPublicRole() { private Role createPublicRole(Event event) {
Role publicRole = new Role(); Role publicRole = new Role(event);
publicRole.setName(PUBLIC_ROLE_NAME); publicRole.setName(PUBLIC_ROLE_NAME);
em.persist(publicRole); em.persist(publicRole);
return publicRole; return publicRole;
......
package fi.insomnia.bortal.beans; package fi.insomnia.bortal.beans;
import javax.ejb.Local; import javax.ejb.Local;
import fi.insomnia.bortal.model.Event;
import fi.insomnia.bortal.model.User; import fi.insomnia.bortal.model.User;
@Local @Local
public interface SessionHandlerBeanLocal { public interface SessionHandlerBeanLocal {
boolean hasPermission(String target, User user, RolePermission permission); boolean hasPermission(String target, User user, RolePermission permission);
User getDefaultUser(); User getDefaultUser(Event event);
User getCurrentUser(); User getCurrentUser(Event event);
} }
...@@ -8,7 +8,6 @@ import java.util.List; ...@@ -8,7 +8,6 @@ import java.util.List;
import javax.persistence.CascadeType; import javax.persistence.CascadeType;
import javax.persistence.Column; import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity; import javax.persistence.Entity;
import javax.persistence.GeneratedValue; import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType; import javax.persistence.GenerationType;
...@@ -28,6 +27,7 @@ import javax.persistence.Version; ...@@ -28,6 +27,7 @@ import javax.persistence.Version;
@Table(name = "event_settings") @Table(name = "event_settings")
@NamedQueries( { @NamedQueries( {
@NamedQuery(name = "EventSettings.findAll", query = "SELECT e FROM EventSettings e"), @NamedQuery(name = "EventSettings.findAll", query = "SELECT e FROM EventSettings e"),
@NamedQuery(name = "EventSettings.findByOrganisation", query = "SELECT e FROM EventSettings e WHERE e.organisation = :organisation"),
@NamedQuery(name = "EventSettings.findByBundleCountry", query = "SELECT e FROM EventSettings e WHERE e.bundleCountry = :bundleCountry") }) @NamedQuery(name = "EventSettings.findByBundleCountry", query = "SELECT e FROM EventSettings e WHERE e.bundleCountry = :bundleCountry") })
public class EventSettings implements ModelInterface<Integer> { public class EventSettings implements ModelInterface<Integer> {
......
...@@ -15,14 +15,7 @@ ...@@ -15,14 +15,7 @@
<h:form> <h:form>
<h:dataTable border="1" id="productListTable" <h:dataTable border="1" id="productListTable"
value="#{productView.userShoppableProducts}" value="#{productView.userShoppableProducts}" var="product">
var="product">
<h:column>
<f:facet name="header">
<h:outputText value="#" />
</f:facet>
<h:outputText value="#{product.id}" />
</h:column>
<h:column> <h:column>
<f:facet name="header"> <f:facet name="header">
<h:outputText value="#{i18n['product.name']}" /> <h:outputText value="#{i18n['product.name']}" />
......
...@@ -7,23 +7,22 @@ import javax.faces.context.FacesContext; ...@@ -7,23 +7,22 @@ import javax.faces.context.FacesContext;
/*** /***
* Access i18n localisations from Java code. Feel free to make up a better way. * Access i18n localisations from Java code. Feel free to make up a better way.
*
* @author jkj * @author jkj
* *
*/ */
public class I18n { public class I18n {
public static ResourceBundle GetResourceBundle() public static ResourceBundle GetResourceBundle() {
{
FacesContext facesContext = FacesContext.getCurrentInstance(); FacesContext facesContext = FacesContext.getCurrentInstance();
Application app = facesContext.getApplication(); Application app = facesContext.getApplication();
ResourceBundle bundle = app.getResourceBundle(facesContext, "i18n"); ResourceBundle bundle = app.getResourceBundle(facesContext, "i18n");
return bundle; return bundle;
} }
public static String Get(String key) public static String Get(String key) {
{
String value = GetResourceBundle().getString(key); String value = GetResourceBundle().getString(key);
if(key==null) { if (key == null) {
return "########"; return "########";
} }
return value; return value;
......
...@@ -9,7 +9,6 @@ import javax.ejb.EJB; ...@@ -9,7 +9,6 @@ import javax.ejb.EJB;
import javax.faces.bean.ManagedBean; import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped; import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext; import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSession;
import fi.insomnia.bortal.HostnameFilter; import fi.insomnia.bortal.HostnameFilter;
...@@ -34,7 +33,7 @@ public class SessionHandler { ...@@ -34,7 +33,7 @@ public class SessionHandler {
@EJB @EJB
private SecurityBeanLocal secubean; private SecurityBeanLocal secubean;
@EJB @EJB
private EventBeanLocal eventbean; private EventBeanLocal eventbean;
...@@ -74,7 +73,7 @@ public class SessionHandler { ...@@ -74,7 +73,7 @@ public class SessionHandler {
String hostname = getHostname(); String hostname = getHostname();
return eventbean.getEventByHostname(hostname); return eventbean.getEventByHostname(hostname);
} }
public boolean hasPermission(String target, RolePermission permission) { public boolean hasPermission(String target, RolePermission permission) {
return handlerbean.hasPermission(target, getUser(), permission); return handlerbean.hasPermission(target, getUser(), permission);
...@@ -97,17 +96,17 @@ public class SessionHandler { ...@@ -97,17 +96,17 @@ public class SessionHandler {
this.user = getUser(); this.user = getUser();
} else if (canExecute("user")) { } else if (canExecute("user")) {
secubean.logMessage(handlerbean.getCurrentUser(), "Successfully impersonating user id: " + user.getId() + " and login: " + user.getLogin()); secubean.logMessage(handlerbean.getCurrentUser(getCurrentEvent()), "Successfully impersonating user id: " + user.getId() + " and login: " + user.getLogin());
this.user = user; this.user = user;
} else { } else {
secubean.logMessage(handlerbean.getCurrentUser(), "User tried to impersonate as id: "+user.getId()+" login: "+user.getLogin()+" but did not have enough rights"); secubean.logMessage(handlerbean.getCurrentUser(getCurrentEvent()), "User tried to impersonate as id: " + user.getId() + " login: " + user.getLogin() + " but did not have enough rights");
} }
} }
public User getUser() { public User getUser() {
if (user == null) { if (user == null) {
user = handlerbean.getCurrentUser(); user = handlerbean.getCurrentUser(getCurrentEvent());
} }
return user; return user;
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!