Commit 55c99921 by Juho Juopperi

default event settings and event creation

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