Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/master'
Browse files Browse the repository at this point in the history
  • Loading branch information
thomasJang committed Nov 13, 2016
2 parents 2571283 + ba96f07 commit 01fea63
Show file tree
Hide file tree
Showing 25 changed files with 228 additions and 115 deletions.
2 changes: 1 addition & 1 deletion ax-boot-admin/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
<parent>
<groupId>com.chequer.axboot</groupId>
<artifactId>ax-boot-framework</artifactId>
<version>2.1.0</version>
<version>2.1.1</version>
</parent>


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpMethod;
import org.springframework.security.access.AccessDeniedException;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.authentication.dao.DaoAuthenticationProvider;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
Expand All @@ -19,7 +18,6 @@
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.core.Authentication;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.web.access.AccessDeniedHandler;
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
import org.springframework.security.web.authentication.logout.SimpleUrlLogoutSuccessHandler;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import com.chequer.axboot.core.filters.MultiReadableHttpServletRequestFilter;
import com.chequer.axboot.core.json.ContentTypeSwitchableMappingJackson2JsonView;
import com.chequer.axboot.core.parameter.RequestParamsArgumentResolver;
import com.chequer.axboot.core.utils.PhaseUtils;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.core.JsonEncoding;
import com.fasterxml.jackson.core.JsonParser;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@
import com.chequer.axboot.core.vo.ScriptSessionVO;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.tomcat.jni.Global;
import org.springframework.security.access.AccessDeniedException;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
Expand Down
3 changes: 0 additions & 3 deletions ax-boot-admin/src/main/resources/axboot-common.properties
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
# IDENTITY
spring.application.name=AXBoot

# AutoConfigure Exclude
#spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.web.ErrorMvcAutoConfiguration

# Multipart
spring.http.multipart.enabled=true
spring.http.multipart.file-size-threshold=0
Expand Down
19 changes: 12 additions & 7 deletions ax-boot-admin/src/main/resources/messages/messages.properties
Original file line number Diff line number Diff line change
@@ -1,7 +1,12 @@
axboot.admin.search=조회
axboot.admin.save=저장
axboot.admin.logout=로그아웃
axboot.admin.home=홈
axboot.devtools=개발자도구
axboot.admin.login=로그인
axboot.admin.login.status.message={0}님 로그인
axboot.admin.search=Search
axboot.admin.save=Save
axboot.admin.logout=Logout
axboot.admin.home=Home
axboot.devtools=DevTools
axboot.admin.login=Login
axboot.admin.login.status.message={0}
axboot.admin.login.guide.message=Input your ID and Password
axboot.admin.find.id=Find ID
axboot.admin.find.password=Find Password
axboot.admin.id=ID
axboot.admin.password=Password
2 changes: 1 addition & 1 deletion ax-boot-core/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
<parent>
<groupId>com.chequer.axboot</groupId>
<artifactId>ax-boot-framework</artifactId>
<version>2.1.0</version>
<version>2.1.1</version>
</parent>

<repositories>
Expand Down
6 changes: 3 additions & 3 deletions ax-boot-initialzr/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
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>
<artifactId>ax-boot-initialzr</artifactId>
<version>2.1.0</version>
<version>2.1.1</version>
<packaging>war</packaging>
<name>AX-Boot Initialzr</name>
<description>AX-Boot Initialzr Application</description>
Expand All @@ -16,14 +16,14 @@
<parent>
<artifactId>ax-boot-framework</artifactId>
<groupId>com.chequer.axboot</groupId>
<version>2.1.0</version>
<version>2.1.1</version>
</parent>

<dependencies>
<dependency>
<groupId>com.chequer.axboot</groupId>
<artifactId>ax-boot-core</artifactId>
<version>2.1.14</version>
<version>2.1.19</version>
</dependency>

<dependency>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ public void generate(ProjectGenerateRequest projectGenerateRequest, HttpServletR
values.put("description", description);
values.put("groupId", groupId);
values.put("sessionCookie", uuid);
values.put("axbootCoreVersion", "2.1.18");
values.put("axbootCoreVersion", "2.1.19");

PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();

Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,10 @@
package ${basePackage};

import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.PropertySource;

@Configuration
@ComponentScan
@EnableAutoConfiguration
@SpringBootApplication
@PropertySource(value = {"classpath:axboot-common.properties", "classpath:axboot-${spring.profiles.active:local}.properties"})
public class AXBootApplication {
}

Original file line number Diff line number Diff line change
@@ -1,20 +1,18 @@
package ${basePackage};

import org.springframework.boot.SpringApplication;
import com.chequer.axboot.core.AXBootCoreConfiguration;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.support.SpringBootServletInitializer;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.WebApplicationInitializer;

@Configuration
public class AXBootApplicationInitializer extends SpringBootServletInitializer implements WebApplicationInitializer {
public class AXBootApplicationInitializer extends SpringBootServletInitializer {

public static final Object[] APPLICATION_SOURCES = new Object[]{AXBootApplication.class, AXBootCoreConfiguration.class};

@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
this.setRegisterErrorPageFilter(false);
return application.sources(APPLICATION_SOURCES);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpMethod;
import org.springframework.security.access.AccessDeniedException;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.authentication.dao.DaoAuthenticationProvider;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
Expand All @@ -19,7 +18,6 @@
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.core.Authentication;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.web.access.AccessDeniedHandler;
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
import org.springframework.security.web.authentication.logout.SimpleUrlLogoutSuccessHandler;

Expand All @@ -30,8 +28,8 @@
import java.io.IOException;

@EnableWebSecurity
@Configuration
@EnableGlobalMethodSecurity(securedEnabled = true, proxyTargetClass = true)
@Configuration
public class AXBootSecurityConfig extends WebSecurityConfigurerAdapter {

public static final String LOGIN_API = "/api/login";
Expand Down Expand Up @@ -92,7 +90,7 @@ protected void configure(HttpSecurity http) throws Exception {
.logout().logoutUrl(LOGOUT_API).deleteCookies(GlobalConstants.ADMIN_AUTH_TOKEN_KEY, GlobalConstants.LAST_NAVIGATED_PAGE).logoutSuccessHandler(new LogoutSuccessHandler(LOGIN_PAGE))
.and()

.exceptionHandling().authenticationEntryPoint(new AXBootAuthenticationEntryPoint()).accessDeniedHandler(new AdminAccessDeniedHandler())
.exceptionHandling().authenticationEntryPoint(new AXBootAuthenticationEntryPoint())
.and()

.addFilterBefore(new AXBootLoginFilter(LOGIN_API, tokenAuthenticationService, userService, authenticationManager(), new AXBootAuthenticationEntryPoint()), UsernamePasswordAuthenticationFilter.class)
Expand Down Expand Up @@ -140,11 +138,4 @@ public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse resp
super.onLogoutSuccess(request, response, authentication);
}
}

class AdminAccessDeniedHandler implements AccessDeniedHandler {
@Override
public void handle(HttpServletRequest request, HttpServletResponse response, AccessDeniedException accessDeniedException) throws IOException, ServletException {
System.out.println(request.getAuthType());
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,22 +17,31 @@
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import org.springframework.beans.BeansException;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.MessageSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.context.support.ReloadableResourceBundleMessageSource;
import org.springframework.core.Ordered;
import org.springframework.data.web.PageableHandlerMethodArgumentResolver;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.accept.ContentNegotiationManager;
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.View;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.i18n.CookieLocaleResolver;
import org.springframework.web.servlet.i18n.LocaleChangeInterceptor;
import org.springframework.web.servlet.view.ContentNegotiatingViewResolver;
import org.springframework.web.servlet.view.InternalResourceViewResolver;

Expand All @@ -42,9 +51,12 @@
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;

@Configuration
public class AXBootWebMvcConfigurerAdapter extends WebMvcConfigurerAdapter {
public class AXBootWebMvcConfigurerAdapter extends WebMvcConfigurerAdapter implements ApplicationContextAware {
private ApplicationContext applicationContext;

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/assets/**").addResourceLocations("/assets/");
Expand All @@ -53,6 +65,32 @@ public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/favicon.ico").addResourceLocations("/static/favicon.ico");
}

@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
PageableHandlerMethodArgumentResolver pageableHandlerMethodArgumentResolver = new PageableHandlerMethodArgumentResolver();
pageableHandlerMethodArgumentResolver.setPageParameterName("pageNumber");
pageableHandlerMethodArgumentResolver.setSizeParameterName("pageSize");

argumentResolvers.add(new RequestParamsArgumentResolver());
argumentResolvers.add(pageableHandlerMethodArgumentResolver);
}

@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(localeChangeInterceptor());
}

@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}

@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
converters.add(stringHttpMessageConverter());
converters.add(mappingJackson2HttpMessageConverter());
}

@Bean
@Primary
public ObjectMapper objectMapper() {
Expand Down Expand Up @@ -108,22 +146,6 @@ public ContentNegotiatingViewResolver contentNegotiatingViewResolver() {
return contentNegotiatingViewResolver;
}

@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
PageableHandlerMethodArgumentResolver pageableHandlerMethodArgumentResolver = new PageableHandlerMethodArgumentResolver();
pageableHandlerMethodArgumentResolver.setPageParameterName("pageNumber");
pageableHandlerMethodArgumentResolver.setSizeParameterName("pageSize");

argumentResolvers.add(new RequestParamsArgumentResolver());
argumentResolvers.add(pageableHandlerMethodArgumentResolver);
}

@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
super.configureDefaultServletHandling(configurer);
}

@Bean
public FilterRegistrationBean multiReadableHttpServletRequestFilterRegistrationBean() {
FilterRegistrationBean registrationBean = new FilterRegistrationBean();
Expand Down Expand Up @@ -153,9 +175,41 @@ public StringHttpMessageConverter stringHttpMessageConverter() {
return new StringHttpMessageConverter(Charset.forName("UTF-8"));
}

@Bean
public LocaleChangeInterceptor localeChangeInterceptor() {
LocaleChangeInterceptor localeChangeInterceptor = new LocaleChangeInterceptor();
localeChangeInterceptor.setParamName("language");
return localeChangeInterceptor;
}

@Bean
public MessageSource messageSource() {
ReloadableResourceBundleMessageSource resourceBundleMessageSource = new ReloadableResourceBundleMessageSource();
resourceBundleMessageSource.setBasename("classpath:messages/messages");
resourceBundleMessageSource.setDefaultEncoding("UTF-8");
resourceBundleMessageSource.setFallbackToSystemLocale(true);

String[] activeProfiles = applicationContext.getEnvironment().getActiveProfiles();

if (activeProfiles != null && activeProfiles.length > 0 && activeProfiles[0].equals("local") ||
Boolean.parseBoolean(System.getProperty("axboot.profiles.development"))) {
resourceBundleMessageSource.setCacheSeconds(1);
}

return resourceBundleMessageSource;
}

@Bean
public LocaleResolver localeResolver() {
CookieLocaleResolver cookieLocaleResolver = new CookieLocaleResolver();
cookieLocaleResolver.setCookieName("language");
cookieLocaleResolver.setCookiePath("/");
cookieLocaleResolver.setDefaultLocale(new Locale("ko_KR"));
return cookieLocaleResolver;
}

@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
converters.add(stringHttpMessageConverter());
converters.add(mappingJackson2HttpMessageConverter());
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
this.applicationContext = applicationContext;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,8 @@ public class GlobalConstants {
public static final String LAST_NAVIGATED_PAGE = "a_x_b_l_n_p";

public static final String ADMIN_AUTH_TOKEN_KEY = "${sessionCookie}";

public static final String LANGUAGE_COOKIE_KEY = "a_x_lang";

public static final String LANGUAGE_PARAMETER_KEY = "language";
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import com.chequer.axboot.core.db.dbcp.AXBootDataSourceFactory;
import com.chequer.axboot.core.db.monitor.SqlMonitoringService;
import com.chequer.axboot.core.domain.log.AXBootErrorLogService;
import com.chequer.axboot.core.logback.AXBootLogbackAppender;
import com.chequer.axboot.core.logging.AXBootLogbackAppender;
import com.chequer.axboot.core.model.extract.service.jdbc.JdbcMetadataService;
import com.chequer.axboot.core.mybatis.MyBatisMapper;
import org.apache.ibatis.session.SqlSessionFactory;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package ${basePackage}.security;

import ${basePackage}.code.GlobalConstants;
import ${basePackage}.code.GlobalConstants;
import ${basePackage}.domain.program.Program;
import ${basePackage}.domain.program.ProgramService;
Expand All @@ -13,6 +14,7 @@
import com.chequer.axboot.core.utils.*;
import com.chequer.axboot.core.vo.ScriptSessionVO;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.security.access.AccessDeniedException;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
Expand Down Expand Up @@ -68,6 +70,11 @@ public Authentication getAuthentication(HttpServletRequest request, HttpServletR
final String progCd = FilenameUtils.getBaseName(request.getServletPath());
final Long menuId = requestUtils.getLong("menuId");
final String requestUri = request.getRequestURI();
final String language = requestUtils.getString(GlobalConstants.LANGUAGE_PARAMETER_KEY, "");

if (StringUtils.isNotEmpty(language)) {
CookieUtils.addCookie(response, GlobalConstants.LANGUAGE_COOKIE_KEY, language);
}

if (token == null) {
return deleteCookieAndReturnNullAuthentication(request, response);
Expand Down
Loading

0 comments on commit 01fea63

Please sign in to comment.