Commit 5a78881f authored by xiaozhe.chen's avatar xiaozhe.chen

添加初始版本客服系统代码

parent 49f77d5f
package cn.quantgroup.customer.config.http.security;
import cn.quantgroup.customer.constant.Constant;
import cn.quantgroup.customer.util.PwdUtil;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Component;
@Component("passwordEncoder")
public class IPasswordEncoder implements PasswordEncoder {
@Override
public String encode(CharSequence rawPassword) {
return PwdUtil.MD5(rawPassword.toString().toLowerCase() + Constant.PASSWORD_SALT);
}
@Override
public boolean matches(CharSequence rawPassword, String encodedPassword) {
return encodedPassword.equals(PwdUtil.MD5(rawPassword.toString().toLowerCase() + Constant.PASSWORD_SALT));
}
}
...@@ -2,28 +2,34 @@ package cn.quantgroup.customer.config.http.security; ...@@ -2,28 +2,34 @@ package cn.quantgroup.customer.config.http.security;
import cn.quantgroup.customer.constant.Constant; import cn.quantgroup.customer.constant.Constant;
import cn.quantgroup.customer.service.IUserService; import cn.quantgroup.customer.service.IUserService;
import cn.quantgroup.customer.util.PwdUtil; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.security.SecurityProperties;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.core.annotation.Order;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.web.session.HttpSessionEventPublisher; import org.springframework.security.web.session.HttpSessionEventPublisher;
import org.springframework.util.StringUtils;
import org.springframework.web.cors.CorsUtils; import org.springframework.web.cors.CorsUtils;
@Slf4j
@EnableWebSecurity @EnableWebSecurity
@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)
@EnableGlobalMethodSecurity(securedEnabled = true, prePostEnabled = true, jsr250Enabled = true) @EnableGlobalMethodSecurity(securedEnabled = true, prePostEnabled = true, jsr250Enabled = true)
public class WebSecurityConfig extends WebSecurityConfigurerAdapter { public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
private final IUserService userService; private final IUserService userService;
private final PasswordEncoder passwordEncoder;
@Autowired @Autowired
public WebSecurityConfig(IUserService userService) { public WebSecurityConfig(IUserService userService, PasswordEncoder passwordEncoder) {
this.userService = userService; this.userService = userService;
this.passwordEncoder = passwordEncoder;
} }
...@@ -44,20 +50,13 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter { ...@@ -44,20 +50,13 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override @Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception { protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userService).passwordEncoder(new PasswordEncoder() { auth.userDetailsService(userService).passwordEncoder(passwordEncoder);
@Override
public String encode(CharSequence rawPass) {
return PwdUtil.MD5(rawPass.toString().toLowerCase() + Constant.PASSWORD_SALT);
} }
@Override @Override
public boolean matches(CharSequence rawPass, String password) { public UserDetailsService userDetailsServiceBean() {
if (StringUtils.isEmpty(password)) { return userService;
return false;
}
return password.equals(PwdUtil.MD5(rawPass.toString().toLowerCase() + Constant.PASSWORD_SALT));
}
});
} }
@Bean @Bean
......
...@@ -2,7 +2,7 @@ package cn.quantgroup.customer.rest; ...@@ -2,7 +2,7 @@ package cn.quantgroup.customer.rest;
import cn.quantgroup.customer.entity.User; import cn.quantgroup.customer.entity.User;
import cn.quantgroup.customer.rest.param.LoginParam; import cn.quantgroup.customer.rest.param.LoginParam;
import cn.quantgroup.customer.rest.vo.SimpleUserVo; import cn.quantgroup.customer.rest.vo.AuthUserVo;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
...@@ -40,8 +40,8 @@ public class UserRest { ...@@ -40,8 +40,8 @@ public class UserRest {
if (authentication != null && authentication.isAuthenticated()) { if (authentication != null && authentication.isAuthenticated()) {
User principal = (User) authentication.getPrincipal(); User principal = (User) authentication.getPrincipal();
SimpleUserVo simpleUserVo = SimpleUserVo.parse(principal); AuthUserVo authUserVo = AuthUserVo.parse(principal);
return JsonResult.buildSuccessResult(LOGIN_SUCCESS, simpleUserVo); return JsonResult.buildSuccessResult(LOGIN_SUCCESS, authUserVo);
} }
return JsonResult.buildErrorStateResult(LOGIN_FAIL, null); return JsonResult.buildErrorStateResult(LOGIN_FAIL, null);
} }
......
...@@ -4,6 +4,7 @@ import cn.quantgroup.customer.entity.User; ...@@ -4,6 +4,7 @@ import cn.quantgroup.customer.entity.User;
import lombok.Builder; import lombok.Builder;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.GrantedAuthority;
import java.util.List; import java.util.List;
...@@ -12,15 +13,17 @@ import java.util.stream.Collectors; ...@@ -12,15 +13,17 @@ import java.util.stream.Collectors;
@Getter @Getter
@Setter @Setter
@Builder @Builder
public class SimpleUserVo { public class AuthUserVo {
private String username; private String username;
private List<String> authorities; private List<String> authorities;
public static SimpleUserVo parse(User user) { public static AuthUserVo parse(User user) {
SimpleUserVo.SimpleUserVoBuilder builder = SimpleUserVo.builder(); AuthUserVo.AuthUserVoBuilder builder = AuthUserVo.builder();
builder.username(user.getUsername()); builder.username(user.getUsername());
if (CollectionUtils.isNotEmpty(user.getAuthorities())) {
List<String> authorityList = user.getAuthorities().stream().map(GrantedAuthority::getAuthority).collect(Collectors.toList()); List<String> authorityList = user.getAuthorities().stream().map(GrantedAuthority::getAuthority).collect(Collectors.toList());
builder.authorities(authorityList); builder.authorities(authorityList);
}
return builder.build(); return builder.build();
} }
} }
...@@ -10,14 +10,12 @@ import cn.quantgroup.customer.repo.UserRepo; ...@@ -10,14 +10,12 @@ import cn.quantgroup.customer.repo.UserRepo;
import cn.quantgroup.customer.repo.UserRoleRepo; import cn.quantgroup.customer.repo.UserRoleRepo;
import cn.quantgroup.customer.service.IUserService; import cn.quantgroup.customer.service.IUserService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
@Slf4j @Slf4j
@Service("userService") @Service("userService")
...@@ -44,6 +42,7 @@ public class UserServiceImpl implements IUserService { ...@@ -44,6 +42,7 @@ public class UserServiceImpl implements IUserService {
throw new UsernameNotFoundException("user: " + userName + " do not exist!"); throw new UsernameNotFoundException("user: " + userName + " do not exist!");
} }
/*
List<UserRole> userRoles = findUserRoleByUserId(user.getId()); List<UserRole> userRoles = findUserRoleByUserId(user.getId());
if (CollectionUtils.isNotEmpty(userRoles)) { if (CollectionUtils.isNotEmpty(userRoles)) {
List<RoleAuthority> roleAuthorityList = findRoleAuthorityByRoleIds( List<RoleAuthority> roleAuthorityList = findRoleAuthorityByRoleIds(
...@@ -56,6 +55,7 @@ public class UserServiceImpl implements IUserService { ...@@ -56,6 +55,7 @@ public class UserServiceImpl implements IUserService {
user.setAuthorities(authorities); user.setAuthorities(authorities);
} }
} }
*/
return user; return user;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment