Commit aa1d190a by Juho Salli

Merge branch 'randomfixes' into 'master'

Randomfixes

Few minor random fixes.

* invitestuff
* Primefaces 5.0-RC2
* etc
2 parents 72df7970 fd5b3512
......@@ -41,7 +41,7 @@ public class BootstrapBean implements BootstrapBeanLocal {
"ALTER TABLE org_roles ADD ldap_weight integer NOT NULL default 100"
});
// barcodefuckup
dbUpdates.add(new String[] {
dbUpdates.add(new String[] {
"DROP TABLE card_barcode",
"ALTER TABLE printed_cards DROP COLUMN barcode;",
"ALTER TABLE printed_cards DROP COLUMN rfid_uid;",
......@@ -53,6 +53,11 @@ public class BootstrapBean implements BootstrapBeanLocal {
"ALTER TABLE reader_events ALTER COLUMN type DROP DEFAULT;",
});
dbUpdates.add(new String[] {
"delete from menu_navigation where item_id in (select id from menuitem where url in ( '/actionlog/messagelist'))",
"delete from menuitem where url in ('/actionlog/messagelist')",
});
}
@EJB
......@@ -78,7 +83,8 @@ public class BootstrapBean implements BootstrapBeanLocal {
throw new RuntimeException("Sanity check failed! DB is newer than the codebase!");
}
} else {
// DB is up to date by default! We need to mark the current version down though.
// DB is up to date by default! We need to mark the current version
// down though.
dBm = new DBModel();
dBm.setRevision(upIdx);
dbModelFacade.create(dBm);
......
......@@ -493,7 +493,9 @@ public class UserBean implements UserBeanLocal {
MailMessage msg = new MailMessage();
msg.setSubject(eventBean.getPropertyString(LanEventPropertyKey.INVITEMAIL_SUBJECT));
msg.setMessage(MessageFormat.format(eventBean.getPropertyString(LanEventPropertyKey.INVITEMAIL_CONTENT), MessageFormat.format(url, token), creator.getUser().getWholeName()));
String formatUrl = MessageFormat.format(url, token);
logger.info("Sending invite url {}", formatUrl);
msg.setMessage(MessageFormat.format(eventBean.getPropertyString(LanEventPropertyKey.INVITEMAIL_CONTENT), formatUrl, creator.getUser().getWholeName()));
msg.setToAddress(invitemail);
utilbean.sendMail(msg);
return true;
......@@ -507,13 +509,35 @@ public class UserBean implements UserBeanLocal {
@Override
@PermitAll
public void createFromToken(EventUser user, String token) {
public EventUser acceptInviteForExistingUser(String username, String password, String token) {
GroupMembership gm = findToken(token);
if (gm == null || gm.getUser() != null || gm.getInviteAccepted() != null) {
return null;
}
User u = userFacade.findByLogin(username);
EventUser eu = this.getEventUser(u, true);
gm.setUser(eu);
gm.setInviteAccepted(Calendar.getInstance());
return eu;
}
@Override
@PermitAll
public boolean createFromInviteToken(EventUser user, String token) {
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());
gm.setUser(user);
gm.setInviteAccepted(Calendar.getInstance());
eventUserFacade.create(user);
return true;
}
// private void jaiCrop()
......@@ -885,4 +909,5 @@ public class UserBean implements UserBeanLocal {
return eventUserFacade.getOtherOrganisationsEventuser(user, event);
}
}
\ No newline at end of file
......@@ -57,7 +57,9 @@ public interface UserBeanLocal {
GroupMembership findToken(String token);
void createFromToken(EventUser user, String token);
boolean createFromInviteToken(EventUser user, String token);
EventUser acceptInviteForExistingUser(String username, String password, String token);
UserImage findUserimageFORCE(Integer id);
......
......@@ -32,6 +32,12 @@
<id>iudex</id>
<url>http://iudex.fi/maven/</url>
</repository>
<repository>
<id>prime-repo</id>
<name>PrimeFaces Maven Repository</name>
<url>http://repository.primefaces.org</url>
<layout>default</layout>
</repository>
</repositories>
<dependencies>
<dependency>
......@@ -47,7 +53,7 @@
<dependency>
<groupId>org.primefaces</groupId>
<artifactId>primefaces</artifactId>
<version>4.0</version>
<version>5.0-RC2</version>
</dependency>
......
......@@ -3,15 +3,6 @@
<wb-resource deploy-path="/" source-path="/target/m2e-wtp/web-resources"/>
<wb-resource deploy-path="/" source-path="/WebContent" tag="defaultRootSource"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src"/>
<dependent-module archiveName="moya-beans-client-0.2.0.jar" deploy-path="/WEB-INF/lib" handle="module:/resource/MoyaBeansClient/MoyaBeansClient">
<dependency-type>uses</dependency-type>
</dependent-module>
<dependent-module archiveName="moya-database-0.2.0.jar" deploy-path="/WEB-INF/lib" handle="module:/resource/MoyaDatabase/MoyaDatabase">
<dependency-type>uses</dependency-type>
</dependent-module>
<dependent-module archiveName="moya-utils-0.2.0.jar" deploy-path="/WEB-INF/lib" handle="module:/resource/MoyaUtilities/MoyaUtilities">
<dependency-type>uses</dependency-type>
</dependent-module>
<property name="java-output-path" value="/MoyaTerminalWeb/build/classes"/>
<property name="context-root" value="moya-terminal-web"/>
</wb-module>
......
<root>
<facet id="jst.jsf">
<node name="libprov">
<attribute name="provider-id" value="jsf-no-op-library-provider"/>
<attribute name="provider-id" value="GlassFish-4-SystemLibrary-JSF"/>
</node>
</facet>
<facet id="jst.jaxrs">
......
......@@ -2,11 +2,9 @@
<faceted-project>
<runtime name="GlassFish 4.0"/>
<fixed facet="wst.jsdt.web"/>
<fixed facet="jst.web"/>
<fixed facet="java"/>
<installed facet="jst.web" version="3.0"/>
<installed facet="wst.jsdt.web" version="1.0"/>
<installed facet="java" version="1.7"/>
<installed facet="jst.jsf" version="2.0"/>
<installed facet="jst.jsf" version="2.2"/>
<installed facet="jst.web" version="3.1"/>
<installed facet="jst.jaxrs" version="2.0"/>
</faceted-project>
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>MoyaTerminalWeb</display-name>
<context-param>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:web="http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<display-name>MoyaTerminalWeb</display-name>
<context-param>
<param-name>javax.faces.FACELETS_SKIP_COMMENTS</param-name>
<param-value>true</param-value>
</context-param>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.jsf</welcome-file>
</welcome-file-list>
<session-config>
<session-timeout>30</session-timeout>
</session-config>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
<context-param>
<param-name>javax.faces.FACELETS_SKIP_COMMENTS</param-name>
<param-value>true</param-value>
</context-param>
<!--
<filter>
<display-name>PrimefacesFileupload</display-name>
<filter-name>PrimefacesFileupload</filter-name>
<filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>PrimefacesFileupload</filter-name>
<servlet-name>Faces Servlet</servlet-name>
</filter-mapping>
-->
<login-config>
<auth-method>CLIENT-CERT</auth-method>
<realm-name>certificate</realm-name>
</login-config>
<security-constraint>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.jsf</welcome-file>
</welcome-file-list>
<session-config>
<session-timeout>30</session-timeout>
</session-config>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
<context-param>
<param-name>javax.faces.FACELETS_SKIP_COMMENTS</param-name>
<param-value>true</param-value>
</context-param>
<login-config>
<auth-method>CLIENT-CERT</auth-method>
<realm-name>certificate</realm-name>
</login-config>
<security-constraint>
<display-name>Forbidden resource</display-name>
<web-resource-collection>
<web-resource-name>Forbidden</web-resource-name>
......@@ -68,39 +51,20 @@
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
<security-constraint>
<display-name>Resource that needs cert auth</display-name>
<web-resource-collection>
<web-resource-name>Forbidden</web-resource-name>
<url-pattern>/info/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>TERMINAL/INFO</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
<!--
<security-constraint>
<display-name>Resource that needs cert auth</display-name>
<web-resource-collection>
<web-resource-name>BortalTerminalWebResource</web-resource-name>
<url-pattern>/faces/*</url-pattern>
<url-pattern>*.jsf</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>TERMINAL</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint> -->
<persistence-unit-ref>
<persistence-unit-ref-name>BortalEMF</persistence-unit-ref-name>
</persistence-unit-ref>
<security-constraint>
<display-name>Resource that needs cert auth</display-name>
<web-resource-collection>
<web-resource-name>Forbidden</web-resource-name>
<url-pattern>/info/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>TERMINAL/INFO</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
<persistence-unit-ref>
<persistence-unit-ref-name>BortalEMF</persistence-unit-ref-name>
</persistence-unit-ref>
</web-app>
\ No newline at end of file
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>fi.codecrew.moya</groupId>
<artifactId>moya-terminal-web</artifactId>
<version>0.2.0</version>
<packaging>war</packaging>
<build>
<sourceDirectory>src</sourceDirectory>
<resources>
<resource>
<directory>src</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</resource>
</resources>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.3</version>
<configuration>
<warSourceDirectory>WebContent</warSourceDirectory>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>fi.codecrew.moya</groupId>
<artifactId>moya-beans-client</artifactId>
<version>0.2.0</version>
</dependency>
<dependency>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>fi.codecrew.moya</groupId>
<artifactId>moya-terminal-web</artifactId>
<version>0.2.0</version>
<packaging>war</packaging>
<build>
<sourceDirectory>src</sourceDirectory>
<resources>
<resource>
<directory>src</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</resource>
</resources>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
<configuration>
<warSourceDirectory>WebContent</warSourceDirectory>
<failOnMissingWebXml>false</failOnMissingWebXml>
<packagingIncludes>WEB-INF/lib/javamelody-core*,WEB-INF/lib/primefaces*,**/*.xml,**/*.xhtml,**/*.properties,**/*.class,**/*.png,**/*.css,**/*.js,resources/*</packagingIncludes>
</configuration>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>iudex</id>
<url>http://iudex.fi/maven/</url>
</repository>
<repository>
<id>prime-repo</id>
<name>PrimeFaces Maven Repository</name>
<url>http://repository.primefaces.org</url>
<layout>default</layout>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>fi.codecrew.moya</groupId>
<artifactId>moya-beans-client</artifactId>
<version>0.2.0</version>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3</version>
......@@ -47,7 +61,12 @@
<dependency>
<groupId>org.primefaces</groupId>
<artifactId>primefaces</artifactId>
<version>4.0</version>
<version>5.0-RC2</version>
</dependency>
<dependency>
<groupId>net.bull.javamelody</groupId>
<artifactId>javamelody-core</artifactId>
<version>1.46.0</version>
</dependency>
</dependencies>
</dependencies>
</project>
\ No newline at end of file
......@@ -17,7 +17,7 @@
</composite:interface>
<composite:implementation>
<reader:bacendReader />
<reader:backendReader />
</composite:implementation>
......
......@@ -21,7 +21,7 @@
<link rel="stylesheet" type="text/css" href="#{request.contextPath}/resources/templates/template1/css/style.css" />
<link rel="stylesheet" type="text/css" href="#{request.contextPath}/resources/templates/template1/css/general.css" />
<script src="#{request.contextPath}/resources/templates/template1/js/modernizr-2.6.2.min.js"></script>
<h:outputStylesheet>
.bgColor1 {
......@@ -36,7 +36,7 @@
<h:body>
<!-- Javascript-lokalisaatiolippupuljausta -->
<!-- Javascript-lokalisaatiolippupuljausta -->
<script type="text/javascript">
$(document)
.ready(
......@@ -62,7 +62,7 @@
<header class="bgColor1 box">
<div id="header_left">
<h:link outcome="/index">
<c:choose>
<c:when test="#{sessionHandler.isInDevelopmentMode()}">
<img src="#{request.contextPath}/resources/templates/insomnia2/img/devel_logo.png" />
......@@ -79,15 +79,15 @@
</h:link>
</div>
<div id="header_center" class="flex1">
<ui:fragment rendered="#{layoutView.canManageContent}">
<div>
<h:form>
<h:outputLabel for="manageBtn" value="#{i18n['content.showContentEditLinks']}" />
<h:selectBooleanCheckbox value="#{sessionStore.manageContentLinks}" onclick="this.form.submit()" />
</h:form>
</div>
</ui:fragment>
<div>
<h:form>
<h:outputLabel for="manageBtn" value="#{i18n['content.showContentEditLinks']}" />
<h:selectBooleanCheckbox value="#{sessionStore.manageContentLinks}" onclick="this.form.submit()" />
</h:form>
</div>
</ui:fragment>
</div>
<div id="header_right">
......@@ -103,7 +103,7 @@
<nav>
<div id="menu">
<p:panelMenu model="#{primeMenuView.menuModel}" />
<p:panelMenu model="#{primeMenuView.menuModel}" />
<h:link style="font-size: 10px;" rendered="#{readerView.shopToOthers}" outcome="/shop/showReaderEvents" value="Readers" />
</div>
</nav>
......@@ -115,9 +115,9 @@
<p:ajax update="@all" event="change" />
</p:selectOneButton>
</h:form>
<h:link rendered="#{layoutView.manageContent}" styleClass="editorlink" value="#{i18n['layout.editTop']}" outcome="/pages/manage">
<f:param name="pagename" value="#{layoutView.pagepath}:top" />
</h:link>
......@@ -143,16 +143,24 @@
<aside class="flex1">
<div id="aside">
<div class="ui-widget-header">Login</div>
<div class="ui-widget-content" style="text-align: center">
<div class="ui-widget-content" style="text-align: center;">
<ui:fragment rendered="#{sessionHandler.loggedIn}">
<h:outputText value="#{i18n['template.loggedInAs']}" />
<br />
<b><h:outputText value="#{sessionHandler.currentUser.nick}" /></b>
</ui:fragment>
<div>
<tools:loginLogout />
</div>
<ui:fragment rendered="#{!sessionHandler.loggedIn}">
<div style="text-align: left; padding: 0.7em;">
<h:form>
<p:inputText styleClass="form" id="linelogin" value="#{authView.login}" />
<br />
<p:password styleClass="form" id="linepwd" value="#{authView.password}" />
<br />
<p:commandButton styleClass="button" id="onelinesubmit" action="#{authView.executeLoginAction}" ajax="false" value="#{i18n['login.submit']}" />
</h:form>
</div>
</ui:fragment>
</div>
<br />
......
......@@ -2,7 +2,7 @@
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"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" xmlns:h="http://java.sun.com/jsf/html" xmlns:users="http://java.sun.com/jsf/composite/cditools/user"
xmlns:f="http://java.sun.com/jsf/core" xmlns:c="http://java.sun.com/jsp/jstl/core">
xmlns:f="http://java.sun.com/jsf/core" xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:p="http://primefaces.org/ui">
<h:body>
<ui:composition template="#{sessionHandler.template}">
<f:metadata>
......@@ -10,10 +10,31 @@
<f:viewParam name="token" value="#{inviteAcceptView.token}" />
</f:metadata>
<ui:define name="title">
<h1><h:outputText value="#{i18n['user.invite.header']}" /></h1>
<h1>
<h:outputText value="#{i18n['user.invite.header']}" />
</h1>
</ui:define>
<ui:define name="content">
<ui:fragment rendered="#{!inviteAcceptView.done}">
<h2>
<h:outputText value="#{i18n['invite.existingUserHeader']}" />
</h2>
<h:form>
<h:panelGrid columns="2">
<h:outputLabel for="login" />
<p:inputText label="#{i18n['login.username']}" id="login" value="#{inviteAcceptView.username}" />
<h:outputLabel for="pwd" />
<p:password label="#{i18n['login.password']}" id="pwd" value="#{inviteAcceptView.password}" />
</h:panelGrid>
<p:commandButton id="submit" action="#{inviteAcceptView.loginWithExisting()}" ajax="false" value="#{i18n['login.submit']}" />
</h:form>
<h2>
<h:outputText value="#{i18n['invite.createNewUserHeader']}" />
</h2>
<users:create creating="true" commitaction="#{inviteAcceptView.createUser()}" commitvalue="#{i18n['user.create']}" />
</ui:fragment>
</ui:define>
......
......@@ -5,7 +5,9 @@
xmlns:f="http://java.sun.com/jsf/core" xmlns:c="http://java.sun.com/jsp/jstl/core">
<h:body>
<ui:composition template="#{sessionHandler.template}">
<f:metadata>
<f:event type="preRenderView" listener="#{inviteView.initView}" />
</f:metadata>
<ui:define name="title">
<h1>#{i18n['user.page.invite']}</h1>
</ui:define>
......
......@@ -36,11 +36,16 @@
</plugins>
</build>
<repositories>
<repository>
<id>iudex</id>
<url>http://iudex.fi/maven/</url>
</repository>
<repository>
<id>prime-repo</id>
<name>PrimeFaces Maven Repository</name>
<url>http://repository.primefaces.org</url>
<layout>default</layout>
</repository>
</repositories>
<dependencies>
<dependency>
......@@ -76,7 +81,7 @@
<dependency>
<groupId>org.primefaces</groupId>
<artifactId>primefaces</artifactId>
<version>4.0</version>
<version>5.0-RC2</version>
</dependency>
</dependencies>
</project>
\ No newline at end of file
......@@ -66,6 +66,10 @@ public class HostnameFilter implements Filter {
// Nothing...
}
private enum AuthType {
UNKNOWN, ANON, REST, USER
}
/**
* @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
*/
......@@ -74,7 +78,7 @@ public class HostnameFilter implements Filter {
FilterChain chain) throws IOException, ServletException {
// logger.info("HostnameFilter called!");
HttpServletRequest httpRequest = null;
AuthType authtype = AuthType.UNKNOWN;
if (request != null && request instanceof HttpServletRequest) {
httpRequest = ((HttpServletRequest) request);
parseHostname(httpRequest);
......@@ -82,6 +86,7 @@ public class HostnameFilter implements Filter {
if (httpRequest.getUserPrincipal() == null) {
// Check if we are logging in with rest
if (RestApplicationEntrypoint.REST_PATH.equals(httpRequest.getServletPath())) {
authtype = AuthType.REST;
if (!restAuth(httpRequest, response)) {
response.getWriter().write("REST authentication failed!");
if (response instanceof HttpServletResponse) {
......@@ -92,6 +97,7 @@ public class HostnameFilter implements Filter {
}
} else {
try {
authtype = AuthType.ANON;
httpRequest.login(User.ANONYMOUS_LOGINNAME, null);
} catch (Throwable t) {
logger.warn("Error logging in as anonymous... ignoring.. ", t);
......@@ -100,6 +106,7 @@ public class HostnameFilter implements Filter {
}
else if (!httpRequest.getUserPrincipal().getName().equals(User.ANONYMOUS_LOGINNAME))
{
authtype = AuthType.USER;
sessionmgmt.updateSessionUser(httpRequest.getSession().getId(), httpRequest.getUserPrincipal().getName());
}
......@@ -107,6 +114,11 @@ public class HostnameFilter implements Filter {
// pass the request along the filter chain
try {
chain.doFilter(request, response);
} catch (Throwable t) {
if (AuthType.REST == authtype) {
logger.warn("Caught exception at rest:", t);
}
throw t;
} finally {
BortalLocalContextHolder.cleanupThread();
}
......@@ -124,6 +136,7 @@ public class HostnameFilter implements Filter {
// }
private boolean restAuth(HttpServletRequest httpRequest, ServletResponse response) {
// logger.info("Trying to authenticate for REST query. url {}, params '{}' method: {}, content type {}, and length {}", httpRequest.getRequestURL(), httpRequest.getQueryString(), httpRequest.getMethod(), httpRequest.getContentType(), httpRequest.getContentLength());
StringBuilder hashBuilder = new StringBuilder();
hashBuilder.append("rest:");
......@@ -161,14 +174,14 @@ public class HostnameFilter implements Filter {
protected void parseHostname(HttpServletRequest httpRequest)
{
// logger.info("Path info {}", httpRequest.getPathInfo());
// logger.info("querystring {}", httpRequest.getQueryString());
// logger.info("ctxpath {}", httpRequest.getContextPath());
// logger.info("pathTranslated {}", httpRequest.getPathTranslated());
// logger.info("requestUri {}", httpRequest.getRequestURI());
// logger.info("URL {}", httpRequest.getRequestURL().toString());
// logger.info("servletpath {}", httpRequest.getServletPath());
// logger.info("servletCtx {}", httpRequest.getServletContext());
// logger.info("Path info {}", httpRequest.getPathInfo()); // null
// logger.info("querystring {}", httpRequest.getQueryString()); // ln=primefaces&amp;v=4.0
// logger.info("ctxpath {}", httpRequest.getContextPath()); // /MoyaWeb
// logger.info("pathTranslated {}", httpRequest.getPathTranslated()); // null
// logger.info("requestUri {}", httpRequest.getRequestURI()); // /MoyaWeb/javax.faces.resource/jquery/jquery.js.jsf
// logger.info("URL {}", httpRequest.getRequestURL().toString()); // http://localhost:8080/MoyaWeb/javax.faces.resource/jquery/jquery.js.jsf
// logger.info("servletpath {}", httpRequest.getServletPath()); // /javax.faces.resource/jquery/jquery.js.jsf
// logger.info("servletCtx {}", httpRequest.getServletContext()); // org.apache.catalina.core.ApplicationContextFacade@6dd89c3d
StringBuffer url = httpRequest.getRequestURL();
// logger.info("Original hostname {}", url);
// Subject subj = Subject.getSubject(AccessController.getContext());
......
......@@ -241,7 +241,7 @@ submenu.info.index = Infon\u00E4kym\u00E4
subnavi.cards = \u0009\u0009
subnavi.info = Info
topnavi.license = Lisenssikoodit
topnavi.license = Lisenssikoodit
user.cropImage = Crop
user.imageUpload.imageNotFound = Select image to upload
......
......@@ -429,7 +429,9 @@ inventory.product.quantity = Quantatity
inventory.product.submitButton = Add
inventory.product.title = Add items to storage
invite.createNewUserHeader = Create new user
invite.emailexists = User with that email address already exists in the system.
invite.existingUserHeader = Login with existing username
invite.notFound = Invite invalid or already used
invite.successfull = Invite sent successfully
invite.userCreateSuccessfull = User successfully created. You can now login.
......
......@@ -440,7 +440,9 @@ inventory.product.quantity = M\u00E4\u00E4r\u00E4
inventory.product.submitButton = Lis\u00E4\u00E4
inventory.product.title = Lis\u00E4\u00E4 tuottetta varastoon
invite.createNewUserHeader = Luo uusi k\u00E4ytt\u00E4j\u00E4tunnus
invite.emailexists = J\u00E4rjestelm\u00E4ss\u00E4 on jo k\u00E4ytt\u00E4j\u00E4tunnus samalla s\u00E4hk\u00F6postiosoitteella.
invite.existingUserHeader = Kirjaudu sis\u00E4\u00E4n olemassaolevalla tunnuksella
invite.notFound = Kutsu virheellinen tai jo k\u00E4ytetty.
invite.successfull = Kutsu l\u00E4hetetty
invite.userCreateSuccessfull = K\u00E4ytt\u00E4j\u00E4tunnus luotu onnistuneesti. Voit nyt kirjautua sis\u00E4\u00E4n j\u00E4rjeselm\u00E4\u00E4n.
......
......@@ -14,6 +14,8 @@ import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.ResponseBuilder;
import javax.ws.rs.core.Response.Status;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
......@@ -92,6 +94,15 @@ public class MapAdminView {
return Response.ok().build();
}
@GET
@Path("/place/")
public Response getPlaceError() {
ResponseBuilder ret = Response.ok();
ret = ret.status(Status.METHOD_NOT_ALLOWED);
ret.entity("Method not allowed!\nGET is not supported for /place/. See api for correct use!");
return ret.build();
}
@POST
@Path("/place/")
public Response createPlace(PlaceInputPojo create) {
......
......@@ -4,7 +4,6 @@ import java.io.PrintWriter;
import java.io.Serializable;
import java.io.StringWriter;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Map;
import java.util.zip.CRC32;
......@@ -55,9 +54,8 @@ public class ErrorPageView implements Serializable {
public String getStackTraceHash() {
FacesContext context = FacesContext.getCurrentInstance();
Map requestMap = context.getExternalContext().getRequestMap();
Throwable ex =
(Throwable) requestMap.get("javax.servlet.error.exception");
Map<?, ?> requestMap = context.getExternalContext().getRequestMap();
Throwable ex = (Throwable) requestMap.get("javax.servlet.error.exception");
CRC32 stackHash = new CRC32();
stackHash.update(Arrays.toString(ex.getStackTrace()).getBytes());
......@@ -66,7 +64,7 @@ public class ErrorPageView implements Serializable {
}
public String getTime() {
String stamp = "0x" + Long.toHexString(Calendar.getInstance().getTimeInMillis());
String stamp = "0x" + Long.toHexString(System.currentTimeMillis());
logger.error("Error occured at {} trail {}", stamp, getTrail());
return stamp;
}
......
......@@ -2,8 +2,15 @@ package fi.codecrew.moya.web.cdiview.shop;
import javax.ejb.EJB;
import javax.enterprise.context.ConversationScoped;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import javax.inject.Named;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.codecrew.moya.beans.UserBeanLocal;
import fi.codecrew.moya.model.EventUser;
......@@ -19,6 +26,8 @@ public class InviteAcceptView extends GenericCDIView {
private static final long serialVersionUID = 1972813452261491814L;
private String token;
private String username;
private String password;
@Inject
private UserView userview;
......@@ -31,6 +40,8 @@ public class InviteAcceptView extends GenericCDIView {
private GroupMembership membership;
private static final Logger logger = LoggerFactory.getLogger(InviteAcceptView.class);
public void initView() {
if (membership == null) {
......@@ -48,10 +59,57 @@ public class InviteAcceptView extends GenericCDIView {
}
private HttpServletRequest getRequest() {
FacesContext facesContext = FacesContext.getCurrentInstance();
ExternalContext externalContext = facesContext.getExternalContext();
Object request = externalContext.getRequest();
return request instanceof HttpServletRequest ? (HttpServletRequest) request : null;
}
public String loginWithExisting() {
EventUser eu = userbean.acceptInviteForExistingUser(username, password, token);
if (eu != null) {
login(username, password);
}
this.username = null;
this.password = null;
super.addFaceMessage("invite.userCreateSuccessfull");
return null;
}
private void login(String usr, String pwd) {
HttpServletRequest req = getRequest();
String existingUsername = null;
if (req.getUserPrincipal() != null) {
if (User.ANONYMOUS_LOGINNAME.equals(req.getUserPrincipal().getName())) {
try {
req.logout();
} catch (ServletException e) {
logger.warn("Logging out anonymous failed!", e);
}
} else {
existingUsername = req.getUserPrincipal().getName();
}
}
if (existingUsername == null) {
try {
req.login(usr, pwd);
} catch (ServletException e) {
logger.warn("Login failed for invite user " + usr, e);
}
}
}
public String createUser() {
user.getUser().resetPassword(userview.getPassword());
userbean.createFromToken(user, token);
if (userbean.createFromInviteToken(user, token)) {
login(user.getUser().getLogin(), userview.getPassword());
}
super.addFaceMessage("invite.userCreateSuccessfull");
done = true;
user = null;
......@@ -81,4 +139,21 @@ public class InviteAcceptView extends GenericCDIView {
public void setDone(boolean done) {
this.done = done;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
......@@ -6,7 +6,11 @@ import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.inject.Named;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.codecrew.moya.beans.UserBeanLocal;
import fi.codecrew.moya.enums.apps.UserPermission;
import fi.codecrew.moya.web.cdiview.GenericCDIView;
@Named
......@@ -20,6 +24,12 @@ public class InviteView extends GenericCDIView {
@EJB
private transient UserBeanLocal userbean;
private static final Logger logger = LoggerFactory.getLogger(InviteView.class);
public void initView() {
super.requirePermissions(UserPermission.INVITE_USERS);
}
public String invite() {
ExternalContext extcontext = FacesContext.getCurrentInstance().getExternalContext();
......@@ -40,7 +50,6 @@ 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());
if (ret) {
this.addFaceMessage("invite.successfull");
......
......@@ -102,8 +102,7 @@ public class UserSearchView extends PaginationView<UserWrapper> {
private static final long serialVersionUID = 1L;
@Override
public List<EventUser> load(int first, int pageSize, String sortField,
SortOrder sortOrder, Map<String, String> filters) {
public List<EventUser> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String, Object> filters) {
UserSearchQuery sq = getSearchQuery();
sq.setPagesize(pageSize);
if (pageSize > 0) {
......@@ -140,8 +139,7 @@ public class UserSearchView extends PaginationView<UserWrapper> {
private static final long serialVersionUID = 1L;
@Override
public List<UserWrapper> load(int first, int pageSize, String sortField,
SortOrder sortOrder, Map<String, String> filters) {
public List<UserWrapper> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String, Object> filters) {
UserSearchQuery sq = getSearchQuery();
sq.setPagesize(pageSize);
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!