Commit a0f3b82d authored by 万成波's avatar 万成波

优化登录代码

parent b8553733
......@@ -5,6 +5,7 @@ import com.alibaba.fastjson2.JSON;
import com.tangguo.common.constant.Constants;
import com.tangguo.common.core.domain.AjaxResult;
import com.tangguo.common.core.domain.entity.SysMenu;
import com.tangguo.common.core.domain.entity.SysRole;
import com.tangguo.common.core.domain.entity.SysUser;
import com.tangguo.common.core.domain.model.LoginBody;
import com.tangguo.common.core.domain.model.LoginUser;
......@@ -125,7 +126,7 @@ public class SysLoginController {
// 企微登录认证链接
String authCode = bo.getCode();
String baseUrl = this.serverConfig.getUrl();
String redirectUrl = "http://test.tangguo.ren" + "/bbs/h5/pages/login/login/";
String redirectUrl = baseUrl + "/bbs/h5/pages/login/login/";
WxCpOAuth2Service oauth2Service = this.wxCpService.getOauth2Service();
if (Objects.isNull(loginUser) && StrUtil.isBlank(authCode)) {
String oauth2Url = oauth2Service.buildAuthorizationUrl(redirectUrl, null);
......@@ -156,7 +157,14 @@ public class SysLoginController {
*/
@GetMapping("/bbs/mobile/user/profile")
public AjaxResult getUserProfile() {
final String bbsAdmin = "bbs_admin";
SysUser sysUser = SecurityUtils.getLoginUser().getUser();
for (SysRole role : sysUser.getRoles()) {
if (bbsAdmin.equals(role.getRoleKey())) {
sysUser.setBbsAdmin(true);
break;
}
}
return AjaxResult.success(sysUser);
}
......
......@@ -127,6 +127,11 @@ public class SysUser extends BaseEntity {
*/
private Long roleId;
/**
* 是否论坛管理员
*/
private Boolean isBbsAdmin = Boolean.FALSE;
public SysUser() {
}
......@@ -139,6 +144,15 @@ public class SysUser extends BaseEntity {
return userId != null && 1L == userId;
}
public boolean isBbsAdmin() {
return isBbsAdmin;
}
public void setBbsAdmin(Boolean bbsAdmin) {
isBbsAdmin = bbsAdmin;
}
public Long getUserId() {
return userId;
}
......
package com.tangguo.framework.security.handle;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson2.JSON;
import com.tangguo.common.constant.HttpStatus;
import com.tangguo.common.core.domain.AjaxResult;
import com.tangguo.common.utils.ServletUtils;
import com.tangguo.common.utils.StringUtils;
import com.tangguo.framework.config.ServerConfig;
import me.chanjar.weixin.cp.api.WxCpOAuth2Service;
import me.chanjar.weixin.cp.api.WxCpService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.AuthenticationException;
import org.springframework.security.web.AuthenticationEntryPoint;
import org.springframework.stereotype.Component;
......@@ -13,6 +18,7 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.Serializable;
import java.util.Objects;
/**
* 认证失败处理类 返回未授权
......@@ -23,11 +29,28 @@ import java.io.Serializable;
public class AuthenticationEntryPointImpl implements AuthenticationEntryPoint, Serializable {
private static final long serialVersionUID = -8970718410437077606L;
@Autowired
private WxCpService wxCpService;
@Autowired
private ServerConfig serverConfig;
@Override
public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException e)
throws IOException {
String uri = request.getRequestURI();
int code = HttpStatus.UNAUTHORIZED;
String msg = StringUtils.format("请求访问:{},认证失败,无法访问系统资源", request.getRequestURI());
ServletUtils.renderString(response, JSON.toJSONString(AjaxResult.error(code, msg)));
if (uri.startsWith("/bbs/mobile")) {
String baseUrl = this.serverConfig.getUrl();
String redirectUrl = baseUrl + "/bbs/h5/pages/login/login/";
WxCpOAuth2Service oauth2Service = this.wxCpService.getOauth2Service();
String oauth2Url = oauth2Service.buildAuthorizationUrl(redirectUrl, null);
ServletUtils.renderString(response, JSON.toJSONString(AjaxResult.error(401, "身份认证失败", oauth2Url)));
} else {
String msg = StringUtils.format("请求访问:{},认证失败,无法访问系统资源", uri);
ServletUtils.renderString(response, JSON.toJSONString(AjaxResult.error(code, msg)));
}
}
}
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