mirror of
https://bitbucket.org/wisemapping/wisemapping-open-source.git
synced 2024-11-21 21:57:56 +01:00
- First REST operation working
This commit is contained in:
parent
5fd6ba30f5
commit
826606dc53
@ -135,7 +135,7 @@
|
||||
<version>${org.springframework.version}</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.security</groupId>
|
||||
<artifactId>spring-security-config</artifactId>
|
||||
<version>${org.springframework.version}</version>
|
||||
@ -250,6 +250,17 @@
|
||||
<version>1.8.0.10</version>
|
||||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.codehaus.jackson</groupId>
|
||||
<artifactId>jackson-core-asl</artifactId>
|
||||
<version>1.9.4</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.codehaus.jackson</groupId>
|
||||
<artifactId>jackson-mapper-asl</artifactId>
|
||||
<version>1.9.4</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
@ -418,6 +429,8 @@
|
||||
<version>8.1.0.v20120127</version>
|
||||
<configuration>
|
||||
<war>${project.build.directory}/wisemapping.war</war>
|
||||
<reload>automatic</reload>
|
||||
<scanIntervalSeconds>10</scanIntervalSeconds>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
|
@ -0,0 +1,44 @@
|
||||
package com.wisemapping.rest;
|
||||
|
||||
|
||||
import com.wisemapping.model.MindMap;
|
||||
import com.wisemapping.service.MindmapService;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
@Controller
|
||||
public class MindmapController {
|
||||
private MindmapService mindmapService;
|
||||
|
||||
public void setMindmapService(MindmapService mindmapService) {
|
||||
this.mindmapService = mindmapService;
|
||||
}
|
||||
|
||||
@RequestMapping(method = RequestMethod.GET, value = "/map/{id}")
|
||||
public
|
||||
@ResponseBody
|
||||
Map<String, Object> getMindmap(@PathVariable int id) throws IOException {
|
||||
final Map<String, Object> result = new HashMap<String, Object>();
|
||||
final MindMap mindMap = mindmapService.getMindmapById(id);
|
||||
result.put("xml", mindMap.getNativeXml());
|
||||
result.put("creationTime", mindMap.getCreationTime());
|
||||
result.put("description", mindMap.getDescription());
|
||||
result.put("lastModification", mindMap.getLastModificationDate());
|
||||
result.put("owner", mindMap.getOwner().getUsername());
|
||||
return result;
|
||||
}
|
||||
|
||||
@RequestMapping(method = RequestMethod.POST, value = "/map/{id}")
|
||||
public void updateMindmap(@PathVariable int id) throws IOException {
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -1,30 +0,0 @@
|
||||
package com.wisemapping.rest;
|
||||
|
||||
|
||||
import com.wisemapping.model.User;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.springframework.oxm.jaxb.Jaxb2Marshaller;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
@Controller
|
||||
public class UserController {
|
||||
private Jaxb2Marshaller jaxb2Mashaller;
|
||||
|
||||
public void setJaxb2Mashaller(@NotNull final Jaxb2Marshaller jaxb2Mashaller) {
|
||||
this.jaxb2Mashaller = jaxb2Mashaller;
|
||||
}
|
||||
|
||||
private static final String XML_VIEW_NAME = "users";
|
||||
|
||||
@RequestMapping(method = RequestMethod.GET, value = "/employee/{id}")
|
||||
public ModelAndView getEmployee(@PathVariable String id) {
|
||||
User user = new User();
|
||||
return new ModelAndView(XML_VIEW_NAME, "object", user);
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -21,6 +21,7 @@ public class AuthenticationProvider implements org.springframework.security.auth
|
||||
public Authentication authenticate(@NotNull final Authentication auth) throws AuthenticationException {
|
||||
|
||||
// All your user authentication needs
|
||||
|
||||
final String email = auth.getName();
|
||||
final User user = userManager.getUserBy(email);
|
||||
final String credentials = (String) auth.getCredentials();
|
||||
|
@ -25,8 +25,7 @@ import org.springframework.security.authentication.encoding.PasswordEncoder;
|
||||
import org.springframework.security.authentication.encoding.ShaPasswordEncoder;
|
||||
|
||||
public class CustomPasswordEncoder
|
||||
implements PasswordEncoder
|
||||
{
|
||||
implements PasswordEncoder {
|
||||
private PasswordEncoder delegateEncoder = new ShaPasswordEncoder();
|
||||
|
||||
private static final String ENC_PREFIX = "ENC:";
|
||||
@ -34,9 +33,8 @@ public class CustomPasswordEncoder
|
||||
public String encodePassword(@NotNull String rawPass, @Nullable Object salt) throws DataAccessException {
|
||||
|
||||
String password = rawPass;
|
||||
if (!rawPass.startsWith(ENC_PREFIX))
|
||||
{
|
||||
password = ENC_PREFIX + delegateEncoder.encodePassword(rawPass,salt);
|
||||
if (!rawPass.startsWith(ENC_PREFIX)) {
|
||||
password = ENC_PREFIX + delegateEncoder.encodePassword(rawPass, salt);
|
||||
}
|
||||
|
||||
return password;
|
||||
@ -47,11 +45,10 @@ public class CustomPasswordEncoder
|
||||
String pass1 = "" + encPass;
|
||||
String pass2 = rawPass;
|
||||
|
||||
if (pass1.startsWith(ENC_PREFIX))
|
||||
{
|
||||
if (pass1.startsWith(ENC_PREFIX)) {
|
||||
|
||||
pass2 = encodePassword(rawPass, salt);
|
||||
}
|
||||
return pass1.equals(pass2);
|
||||
return pass1.equals(pass2);
|
||||
}
|
||||
}
|
||||
|
@ -21,11 +21,11 @@ package com.wisemapping.security;
|
||||
import com.wisemapping.dao.UserManager;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.springframework.dao.DataAccessException;
|
||||
import org.springframework.security.core.userdetails.UserDetailsService;
|
||||
import org.springframework.security.core.userdetails.UsernameNotFoundException;
|
||||
|
||||
public class DatabaseUserDetailService
|
||||
implements UserDetailsService {
|
||||
|
||||
public class UserDetailService
|
||||
implements org.springframework.security.core.userdetails.UserDetailsService {
|
||||
private UserManager userManager;
|
||||
|
||||
@Override
|
@ -44,10 +44,6 @@
|
||||
</init-param>
|
||||
</filter>
|
||||
|
||||
<filter-mapping>
|
||||
<filter-name>charsetFilter</filter-name>
|
||||
<url-pattern>/*</url-pattern>
|
||||
</filter-mapping>
|
||||
<filter>
|
||||
<filter-name>hibernate</filter-name>
|
||||
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
|
||||
@ -60,6 +56,7 @@
|
||||
<param-value>mindmapSessionFactory</param-value>
|
||||
</init-param>
|
||||
</filter>
|
||||
|
||||
<filter>
|
||||
<filter-name>springSecurityFilterChain</filter-name>
|
||||
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
|
||||
@ -75,6 +72,12 @@
|
||||
<url-pattern>/*</url-pattern>
|
||||
</filter-mapping>
|
||||
|
||||
<filter-mapping>
|
||||
<filter-name>charsetFilter</filter-name>
|
||||
<url-pattern>/*</url-pattern>
|
||||
</filter-mapping>
|
||||
|
||||
|
||||
<listener>
|
||||
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
|
||||
</listener>
|
||||
|
@ -157,7 +157,7 @@
|
||||
<property name="encoder" ref="encoder"/>
|
||||
</bean>
|
||||
|
||||
<bean id="userDetailsService" class="com.wisemapping.security.DatabaseUserDetailService">
|
||||
<bean id="userDetailsService" class="com.wisemapping.security.UserDetailService">
|
||||
<property name="userManager" ref="userManager"/>
|
||||
</bean>
|
||||
|
||||
|
@ -12,25 +12,13 @@
|
||||
|
||||
<!-- To enable @RequestMapping process on type level and method level -->
|
||||
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/>
|
||||
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>
|
||||
|
||||
<bean id="jaxbMarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
|
||||
<property name="classesToBeBound">
|
||||
<list>
|
||||
<value>com.wisemapping.model.User</value>
|
||||
</list>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="employees" class="org.springframework.web.servlet.view.xml.MarshallingView">
|
||||
<constructor-arg ref="jaxbMarshaller"/>
|
||||
</bean>
|
||||
|
||||
<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
|
||||
<property name="mediaTypes">
|
||||
<map>
|
||||
<entry key="xml" value="application/xml"/>
|
||||
<entry key="html" value="text/html"/>
|
||||
<entry key="json" value="application/json"/>
|
||||
</map>
|
||||
</property>
|
||||
<property name="viewResolvers">
|
||||
@ -39,16 +27,42 @@
|
||||
|
||||
<bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
|
||||
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
|
||||
<property name="prefix" value="/WEB-INF/jsp-rest"/>
|
||||
<property name="prefix" value="/WEB-INF/jsp-rest/"/>
|
||||
<property name="suffix" value=".jsp"/>
|
||||
</bean>
|
||||
</list>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<!--bean id="viewResolver" class="org.springframework.web.servlet.view.BeanNameViewResolver" /-->
|
||||
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
|
||||
<property name="messageConverters">
|
||||
<list>
|
||||
<ref bean="jsonConverter"/>
|
||||
<ref bean="marshallingConverter"/>
|
||||
</list>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="employeeController" class="com.wisemapping.rest.UserController">
|
||||
<property name="jaxb2Mashaller" ref="jaxbMarshaller"/>
|
||||
<bean id="jsonConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
|
||||
<property name="supportedMediaTypes" value="application/json"/>
|
||||
</bean>
|
||||
|
||||
|
||||
<bean id="marshallingConverter" class="org.springframework.http.converter.xml.MarshallingHttpMessageConverter">
|
||||
<constructor-arg ref="jaxbMarshaller"/>
|
||||
<property name="supportedMediaTypes" value="application/xml"/>
|
||||
</bean>
|
||||
|
||||
<bean id="jaxbMarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
|
||||
<property name="classesToBeBound">
|
||||
<list>
|
||||
<value>java.util.HashMap</value>
|
||||
</list>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
|
||||
<bean id="mindmapRestController" class="com.wisemapping.rest.MindmapController">
|
||||
<property name="mindmapService" ref="mindmapService"/>
|
||||
</bean>
|
||||
</beans>
|
@ -11,11 +11,11 @@
|
||||
<bean id="encoder"
|
||||
class="com.wisemapping.security.CustomPasswordEncoder"/>
|
||||
|
||||
<sec:http pattern="/css/*" security="none"/>
|
||||
<sec:http pattern="/js/*" security="none"/>
|
||||
<sec:http pattern="/images/*" security="none"/>
|
||||
<sec:http pattern="/css/**" security="none"/>
|
||||
<sec:http pattern="/js/**" security="none"/>
|
||||
<sec:http pattern="/images/**" security="none"/>
|
||||
<sec:http pattern="/favicon.ico" security="none"/>
|
||||
<sec:http pattern="/c/login*" security="none"/>
|
||||
<sec:http pattern="/c/login.htm" security="none"/>
|
||||
<sec:http pattern="/c/userregistration.htm" security="none"/>
|
||||
<sec:http pattern="/c/activation.htm" security="none"/>
|
||||
<sec:http pattern="/c/forgotpassword.htm" security="none"/>
|
||||
@ -23,28 +23,30 @@
|
||||
<sec:http pattern="/c/try.htm" security="none"/>
|
||||
<sec:http pattern="/c/search.htm" security="none"/>
|
||||
<sec:http pattern="/c/keyboard.htm" security="none"/>
|
||||
<sec:http pattern="/c/embeddedview*" security="none"/>
|
||||
<sec:http pattern="/c/embeddedview.htm" security="none"/>
|
||||
<sec:http pattern="/c/export.htm" security="none"/>
|
||||
<sec:http pattern="/c/publicview.htm" security="none"/>
|
||||
<sec:http pattern="/dwr/engine.js" security="none"/>
|
||||
|
||||
<sec:http pattern="/dwr/interface/loggerservice.js" security="none"/>
|
||||
<sec:http pattern="/dwr/call/plaincall/loggerservice.logerror.dwr" security="none"/>
|
||||
|
||||
<sec:http use-expressions="true" >
|
||||
<sec:http use-expressions="true" create-session="stateless" entry-point-ref="digestEntryPoint"
|
||||
pattern="/service/**">
|
||||
<sec:intercept-url pattern="/service/**" access="isAuthenticated()"/>
|
||||
<sec:http-basic/>
|
||||
<sec:custom-filter ref="digestFilter" after="BASIC_AUTH_FILTER"/>
|
||||
</sec:http>
|
||||
|
||||
<sec:intercept-url pattern="/**/*" access="isFullyAuthenticated()"/>
|
||||
<sec:http use-expressions="true">
|
||||
<sec:intercept-url pattern="/c/*.htm" access="isFullyAuthenticated()"/>
|
||||
<sec:form-login login-page="/c/login.htm" default-target-url='/c/mymaps.htm'
|
||||
always-use-default-target='true' authentication-failure-url="/c/login.htm?login_error=2"
|
||||
login-processing-url="/j_spring_security_check"/>
|
||||
<sec:remember-me key="rememberMeKey" user-service-ref="userDetailsService"/>
|
||||
<!--<sec:session-management session-fixation-protection="newSession">-->
|
||||
<!--<sec:concurrency-control error-if-maximum-exceeded="true" max-sessions="1"/>-->
|
||||
<!--</sec:session-management>-->
|
||||
<sec:logout logout-url="/c/logout.htm" invalidate-session="true" logout-success-url="/c/login.htm"/>
|
||||
</sec:http>
|
||||
|
||||
<sec:authentication-manager alias="authenticationManager" >
|
||||
<sec:authentication-manager alias="authenticationManager">
|
||||
<sec:authentication-provider ref="dbAuthenticationProvider"/>
|
||||
<sec:authentication-provider user-service-ref="userDetailsService"/>
|
||||
</sec:authentication-manager>
|
||||
@ -54,8 +56,20 @@
|
||||
<property name="encoder" ref="encoder"/>
|
||||
</bean>
|
||||
|
||||
<bean id="userDetailsService" class="com.wisemapping.security.DatabaseUserDetailService">
|
||||
<bean id="userDetailsService" class="com.wisemapping.security.UserDetailService">
|
||||
<property name="userManager" ref="userManager"/>
|
||||
</bean>
|
||||
|
||||
<bean id="digestFilter" class="org.springframework.security.web.authentication.www.DigestAuthenticationFilter">
|
||||
<property name="userDetailsService" ref="userDetailsService"/>
|
||||
<property name="authenticationEntryPoint" ref="digestEntryPoint"/>
|
||||
</bean>
|
||||
|
||||
<bean id="digestEntryPoint"
|
||||
class="org.springframework.security.web.authentication.www.DigestAuthenticationEntryPoint">
|
||||
<property name="realmName" value="Wise Contacts Realm via Digest Authentication"/>
|
||||
<property name="key" value="wisemapping-digest"/>
|
||||
<property name="nonceValiditySeconds" value="10"/>
|
||||
|
||||
</bean>
|
||||
</beans>
|
Loading…
Reference in New Issue
Block a user