|
|
@ -14,20 +14,21 @@ import io.swagger.annotations.Api;
|
|
|
|
import io.swagger.annotations.ApiOperation;
|
|
|
|
import io.swagger.annotations.ApiOperation;
|
|
|
|
import io.swagger.annotations.ApiParam;
|
|
|
|
import io.swagger.annotations.ApiParam;
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
import org.springframework.http.HttpStatus;
|
|
|
|
import org.springframework.security.authentication.AuthenticationManager;
|
|
|
|
|
|
|
|
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
|
|
|
|
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
|
|
|
|
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
|
|
|
|
|
|
|
|
import org.springframework.security.core.Authentication;
|
|
|
|
import org.springframework.security.core.Authentication;
|
|
|
|
import org.springframework.security.core.context.SecurityContextHolder;
|
|
|
|
import org.springframework.security.core.context.SecurityContextHolder;
|
|
|
|
|
|
|
|
import org.springframework.security.core.session.SessionInformation;
|
|
|
|
|
|
|
|
import org.springframework.security.core.session.SessionRegistry;
|
|
|
|
|
|
|
|
import org.springframework.security.web.authentication.logout.SecurityContextLogoutHandler;
|
|
|
|
import org.springframework.util.Assert;
|
|
|
|
import org.springframework.util.Assert;
|
|
|
|
import org.springframework.util.StringUtils;
|
|
|
|
import org.springframework.util.StringUtils;
|
|
|
|
import org.springframework.web.bind.annotation.PostMapping;
|
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
|
|
|
|
|
import org.springframework.web.bind.annotation.RequestParam;
|
|
|
|
|
|
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
|
|
|
|
|
import java.util.HashSet;
|
|
|
|
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
import java.util.Set;
|
|
|
|
|
|
|
|
|
|
|
|
@Api(tags = "用户管理模块")
|
|
|
|
@Api(tags = "用户管理模块")
|
|
|
|
@RestController
|
|
|
|
@RestController
|
|
|
@ -35,8 +36,10 @@ import javax.annotation.Resource;
|
|
|
|
@RequiredArgsConstructor
|
|
|
|
@RequiredArgsConstructor
|
|
|
|
public class UserController {
|
|
|
|
public class UserController {
|
|
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
|
|
|
private RoleAuthorityService roleAuthorityService;
|
|
|
|
private final RoleAuthorityService roleAuthorityService;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private final SessionRegistry sessionRegistry;
|
|
|
|
|
|
|
|
|
|
|
|
@AnonymousAccess
|
|
|
|
@AnonymousAccess
|
|
|
|
@OperateLog(description = "用户登录")
|
|
|
|
@OperateLog(description = "用户登录")
|
|
|
@ -51,11 +54,11 @@ public class UserController {
|
|
|
|
} catch (Exception e) {
|
|
|
|
} catch (Exception e) {
|
|
|
|
throw new IllegalArgumentException("密码错误");
|
|
|
|
throw new IllegalArgumentException("密码错误");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
String md5Pwd =RsaUtil.calculateMD5(password);
|
|
|
|
String md5Pwd = RsaUtil.calculateMD5(password);
|
|
|
|
String hashPwd = RsaUtil.formatHash(md5Pwd);
|
|
|
|
String hashPwd = RsaUtil.formatHash(md5Pwd);
|
|
|
|
JwtUser jwtUser = TzApi.foreignExchangeTradingLogin(username, hashPwd);
|
|
|
|
JwtUser jwtUser = TzApi.foreignExchangeTradingLogin(username, hashPwd);
|
|
|
|
jwtUser.setAuthorityCodes(roleAuthorityService.getAuthorityByRoleId(jwtUser.getRoleId()));
|
|
|
|
jwtUser.setAuthorityCodes(roleAuthorityService.getAuthorityByRoleId(jwtUser.getRoleId()));
|
|
|
|
Authentication authentication = new UsernamePasswordAuthenticationToken(jwtUser, null, jwtUser.getAuthorities());
|
|
|
|
Authentication authentication = new UsernamePasswordAuthenticationToken(jwtUser, null, jwtUser.getAuthorities());
|
|
|
|
SecurityContextHolder.getContext().setAuthentication(authentication);
|
|
|
|
SecurityContextHolder.getContext().setAuthentication(authentication);
|
|
|
|
String token = TokenProvider.createToken(jwtUser);
|
|
|
|
String token = TokenProvider.createToken(jwtUser);
|
|
|
|
return new ResultEntity<LoginResult>(LoginResult.create(jwtUser, token));
|
|
|
|
return new ResultEntity<LoginResult>(LoginResult.create(jwtUser, token));
|
|
|
@ -69,12 +72,49 @@ public class UserController {
|
|
|
|
public ResultEntity<LoginResult> loginByZhiYunToken(@ApiParam("智云平台token") @RequestParam String zhiYunToken) {
|
|
|
|
public ResultEntity<LoginResult> loginByZhiYunToken(@ApiParam("智云平台token") @RequestParam String zhiYunToken) {
|
|
|
|
Assert.isTrue(StringUtils.hasText(zhiYunToken), "token不能为空");
|
|
|
|
Assert.isTrue(StringUtils.hasText(zhiYunToken), "token不能为空");
|
|
|
|
JwtUser jwtUser = TokenProvider.getJWTUserByZhiYun(zhiYunToken);
|
|
|
|
JwtUser jwtUser = TokenProvider.getJWTUserByZhiYun(zhiYunToken);
|
|
|
|
Authentication authentication = new UsernamePasswordAuthenticationToken(jwtUser, null, jwtUser.getAuthorities());
|
|
|
|
Authentication authentication = new UsernamePasswordAuthenticationToken(jwtUser, null, jwtUser.getAuthorities());
|
|
|
|
SecurityContextHolder.getContext().setAuthentication(authentication);
|
|
|
|
SecurityContextHolder.getContext().setAuthentication(authentication);
|
|
|
|
String token = TokenProvider.createToken(jwtUser);
|
|
|
|
String token = TokenProvider.createToken(jwtUser);
|
|
|
|
return new ResultEntity<LoginResult>(LoginResult.create(jwtUser, token));
|
|
|
|
return new ResultEntity<LoginResult>(LoginResult.create(jwtUser, token));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ApiOperation(value = "注销登录", httpMethod = "POST")
|
|
|
|
|
|
|
|
@PostMapping("/logout")
|
|
|
|
|
|
|
|
public ResultEntity logout(HttpServletRequest request) {
|
|
|
|
|
|
|
|
// 获取当前认证信息
|
|
|
|
|
|
|
|
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
|
|
|
|
|
|
|
|
if (authentication != null) {
|
|
|
|
|
|
|
|
// 执行注销操作
|
|
|
|
|
|
|
|
new SecurityContextLogoutHandler().logout(request, null, authentication);
|
|
|
|
|
|
|
|
sessionRegistry.removeSessionInformation(request.getSession().getId());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return new ResultEntity(HttpStatus.OK);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// @Permission()
|
|
|
|
|
|
|
|
@AnonymousAccess
|
|
|
|
|
|
|
|
@ApiOperation("获取当前在线用户")
|
|
|
|
|
|
|
|
@GetMapping("online-users")
|
|
|
|
|
|
|
|
public Set<String> getOnlineUsers() {
|
|
|
|
|
|
|
|
List<Object> principals = sessionRegistry.getAllPrincipals();
|
|
|
|
|
|
|
|
Set<String> usernames = new HashSet<>();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (Object principal : principals) {
|
|
|
|
|
|
|
|
if (principal instanceof JwtUser) {
|
|
|
|
|
|
|
|
JwtUser user = (JwtUser) principal;
|
|
|
|
|
|
|
|
List<SessionInformation> sessions = sessionRegistry.getAllSessions(user, false);
|
|
|
|
|
|
|
|
if (!sessions.isEmpty()) {
|
|
|
|
|
|
|
|
usernames.add(user.getUsername());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return usernames;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|