i皖送统一认证登录接口编写
This commit is contained in:
parent
817f722332
commit
49e65d6f67
|
|
@ -1,5 +1,6 @@
|
|||
package com.bonus.auth.controller;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.bonus.auth.config.LoginType;
|
||||
import com.bonus.auth.factory.LoginStrategyFactory;
|
||||
import com.bonus.auth.form.LoginBody;
|
||||
|
|
@ -8,6 +9,7 @@ import com.bonus.auth.service.*;
|
|||
import com.bonus.common.core.constant.CacheConstants;
|
||||
import com.bonus.common.core.constant.SecurityConstants;
|
||||
import com.bonus.common.core.domain.R;
|
||||
import com.bonus.common.core.exception.ServiceException;
|
||||
import com.bonus.common.core.utils.JwtUtils;
|
||||
import com.bonus.common.core.utils.StringUtils;
|
||||
import com.bonus.common.core.web.domain.AjaxResult;
|
||||
|
|
@ -23,14 +25,19 @@ import com.bonus.system.api.domain.SysUser;
|
|||
import com.bonus.system.api.model.LoginUser;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.DeleteMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.web.client.RestTemplate;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
|
|
@ -71,6 +78,12 @@ public class TokenController {
|
|||
@Resource
|
||||
private RemoteConfigService configService;
|
||||
|
||||
@Value("${iws.appId}")
|
||||
private String iwsAppId;
|
||||
|
||||
@Value("${iws.url}")
|
||||
private String iwsUrl;
|
||||
|
||||
@PostMapping("isAdmin")
|
||||
public R<?> isAdmin(@RequestBody LoginBody form) {
|
||||
if (!config.isAdmin()) {
|
||||
|
|
@ -139,6 +152,75 @@ public class TokenController {
|
|||
|
||||
}
|
||||
|
||||
/**
|
||||
* i皖送登录
|
||||
* @param req
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("iwsLogin")
|
||||
public R<?> iwsLogin(@RequestBody HttpServletRequest req) {
|
||||
//获取i皖送传过来的票据
|
||||
String ticket = req.getParameter("ticket");
|
||||
log.info("ticket=" + ticket);
|
||||
if (StringUtils.isNotEmpty(ticket)) {
|
||||
//获取系统标识,这里可以放到配置文件中
|
||||
//String appId = "ec3fce308fcc407a79e1f09938ba16ab";
|
||||
//调用i皖送平台进行认证获取用户信息
|
||||
//String url = "http://sgwpdm.ah.sgcc.com.cn/iws/workplat/auth/auth-by-ticket?ticket={ticket}&appId={appId}";
|
||||
RestTemplate restTemplate = new RestTemplate();
|
||||
Map<String, Object> paramMap = new HashMap<>();
|
||||
paramMap.put("ticket", ticket);
|
||||
paramMap.put("appId", iwsAppId);
|
||||
ResponseEntity<String> authResponse = restTemplate.getForEntity(iwsUrl, String.class, paramMap);
|
||||
log.info("authResponse:" + authResponse.toString());
|
||||
if ("200".equals(authResponse.getStatusCode())){
|
||||
// 根据ResponseEntity<String> responseEntity对象,获取body部分,body为json格式字符串
|
||||
String content = authResponse.getBody();
|
||||
// 将json字符串转化为json对象
|
||||
JSONObject json = JSONObject.parseObject(content);
|
||||
// 取出data部分对象
|
||||
JSONObject data = json.getJSONObject("data");
|
||||
//根据用户信息来生成token,并保存,不过目前来说因为不知道返回的内容,这里先用一个固定数据来生成token,后期修改
|
||||
LoginUser loginUser = new LoginUser();
|
||||
SysUser sysUser = new SysUser();
|
||||
sysUser.setUserName(data.get("name").toString());
|
||||
loginUser.setSysUser(sysUser);
|
||||
//通过用户名获取人员信息
|
||||
R<LoginUser> userResult = remoteUserService.getUserInfo(sysUser.getUserName(), SecurityConstants.INNER);
|
||||
if (userResult.getData() == null || R.FAIL == userResult.getCode()) {
|
||||
log.info("登录用户不存在,进行创建----");
|
||||
RegisterBody registerBody = new RegisterBody();
|
||||
registerBody.setUsername(sysUser.getUserName());
|
||||
registerBody.setNickName(data.get("userName").toString());
|
||||
registerBody.setMobile(data.get("mobile").toString());
|
||||
sysUser.setPassword(SecurityConstants.PASSWORD);
|
||||
//新用户注册
|
||||
try {
|
||||
sysLoginService.register(registerBody);
|
||||
//查询用户信息
|
||||
userResult = remoteUserService.getUserInfo(sysUser.getUserName(), SecurityConstants.INNER);
|
||||
loginUser = userResult.getData();
|
||||
sysUser = loginUser.getSysUser();
|
||||
//初始化一个角色
|
||||
Long[] roleIds = new Long[5];
|
||||
// 将数组的第一个元素赋值为 2
|
||||
roleIds[0] = 2L;
|
||||
remoteUserService.insertAuthRole(sysUser.getUserId(),roleIds,SecurityConstants.INNER);
|
||||
}catch (Exception e){
|
||||
throw new ServiceException("登录失败,请稍后重试");
|
||||
}
|
||||
}else {
|
||||
loginUser = userResult.getData();
|
||||
sysUser = loginUser.getSysUser();
|
||||
}
|
||||
sysUser.setUserId(sysUser.getUserId());
|
||||
logService.saveLogin(sysUser.getUserName(), "登录", "登录成功", null, "成功");
|
||||
return R.ok(tokenService.createToken(loginUser));
|
||||
}
|
||||
}
|
||||
return R.fail("登录失败!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取手机验证码
|
||||
*
|
||||
|
|
|
|||
|
|
@ -46,4 +46,9 @@ public class SecurityConstants
|
|||
* 角色权限
|
||||
*/
|
||||
public static final String ROLE_PERMISSION = "role_permission";
|
||||
|
||||
/**
|
||||
* i皖送初始化密码
|
||||
*/
|
||||
public static final String PASSWORD = "Iws@20241219";
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue