| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- package jnpf.granter;
- import jnpf.base.ActionResult;
- import jnpf.base.UserInfo;
- import jnpf.constant.MsgCode;
- import jnpf.consts.AuthConsts;
- import jnpf.consts.DeviceType;
- import jnpf.exception.LoginException;
- import jnpf.model.BaseSystemInfo;
- import jnpf.model.LoginVO;
- import jnpf.util.UserProvider;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.stereotype.Component;
- import java.util.Arrays;
- import java.util.Map;
- import static jnpf.granter.TempUserTokenGranter.GRANT_TYPE;
- /**
- * 临时用户认证
- * @user N
- * @author JNPF开发平台组
- * @copyright 引迈信息技术有限公司
- * @date 2022/9/16 21:25
- */
- @Slf4j
- @Component(GRANT_TYPE)
- public class TempUserTokenGranter extends AbstractTokenGranter{
- public static final String GRANT_TYPE = "tempuser";
- public static final Integer ORDER = 4;
- private static final String URL_LOGIN = "";
- public TempUserTokenGranter(){
- super(URL_LOGIN);
- }
- /**
- *
- * @param loginParameters {userId, tenantId}
- * @return
- * @throws LoginException
- */
- @Override
- public ActionResult granter(Map<String, String> loginParameters) throws LoginException {
- String token = loginParameters.get("token");
- //验证是否由内部发起
- if(!UserProvider.isValidInnerToken(token)){
- throw new LoginException(MsgCode.OA018.get());
- }
- String userId = loginParameters.get("userId");
- String tenantId = loginParameters.get("tenantId");
- boolean limited = Boolean.valueOf(loginParameters.get("limited"));
- String device = limited?DeviceType.TEMPUSERLIMITED.getDevice():DeviceType.TEMPUSER.getDevice();
- //尝试获取已经登录的用户信息
- UserInfo userInfo;
- if(limited){
- //只获取限制类型的TOKEN
- userInfo = UserProvider.getUser(userId, tenantId, Arrays.asList(DeviceType.TEMPUSERLIMITED.getDevice()), null);
- }else{
- //排除限制类型的TOKEN
- userInfo = UserProvider.getUser(userId, tenantId, null, Arrays.asList(DeviceType.TEMPUSERLIMITED.getDevice()));
- }
- if(userInfo.getUserId() != null){
- return ActionResult.success(getLoginVo(userInfo));
- }
- userInfo = UserProvider.getUser();
- userInfo.setUserAccount(tenantId);
- userInfo.setUserId(userId);
- //切换租户
- switchTenant(userInfo);
- //获取系统配置
- BaseSystemInfo baseSystemInfo = getSysconfig(userInfo);
- //先设置用户类型
- userInfo.setLoginDevice(device);
- //登录账号
- super.loginAccount(userInfo, baseSystemInfo);
- //返回登录信息
- LoginVO loginResult = getLoginVo(userInfo);
- return ActionResult.success(loginResult);
- }
- @Override
- public int getOrder() {
- return ORDER;
- }
- @Override
- protected void preLogin(UserInfo userInfo, BaseSystemInfo baseSystemInfo) throws LoginException {
- }
- @Override
- protected void login(UserInfo userInfo, BaseSystemInfo baseSystemInfo) throws LoginException {
- UserProvider.loginNoRequest(userInfo, this.getLoginModel(userInfo, baseSystemInfo));
- }
- @Override
- protected void loginSuccess(UserInfo userInfo, BaseSystemInfo baseSystemInfo) {
- super.loginSuccess(userInfo, baseSystemInfo);
- }
- @Override
- protected DeviceType getDeviceType() {
- return DeviceType.TEMPUSER;
- }
- protected LoginVO getLoginVo(UserInfo userInfo){
- LoginVO loginVO = new LoginVO();
- loginVO.setTheme(userInfo.getTheme());
- loginVO.setToken(userInfo.getToken());
- return loginVO;
- }
- @Override
- public ActionResult logout() {
- //非临时用户不注销
- UserInfo userInfo = UserProvider.getUser();
- if(UserProvider.isTempUser(userInfo)){
- UserProvider.logoutByToken(userInfo.getToken());
- }
- return ActionResult.success(MsgCode.OA014.get());
- }
- @Override
- protected String getGrantType() {
- return GRANT_TYPE;
- }
- @Override
- protected String getUserDetailKey() {
- return AuthConsts.USERDETAIL_USER_ID;
- }
- }
|