【7.6.0】【sys】【auth】调整loginUser字段,增加几个状态标识

pull/57/head
fengshuonan 2023-06-17 23:14:04 +08:00
parent 59c0d9589c
commit 4e98c97a1d
13 changed files with 83 additions and 71 deletions

View File

@ -78,4 +78,13 @@ public interface LoginUserApi {
*/ */
boolean hasLogin(); boolean hasLogin();
/**
*
*
* @return true-false-
* @author fengshuonan
* @since 2020/11/4 15:45
*/
boolean getSuperAdminFlag();
} }

View File

@ -25,6 +25,7 @@
package cn.stylefeng.roses.kernel.auth.api.pojo.login; package cn.stylefeng.roses.kernel.auth.api.pojo.login;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import cn.stylefeng.roses.kernel.rule.constants.RuleConstants;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
@ -46,6 +47,12 @@ public class LoginUser implements Serializable {
@ChineseDescription("用户主键id") @ChineseDescription("用户主键id")
private Long userId; private Long userId;
/**
* token
*/
@ChineseDescription("用户的token")
private String token;
/** /**
* 访appId * 访appId
*/ */
@ -59,10 +66,20 @@ public class LoginUser implements Serializable {
private Long currentOrgId; private Long currentOrgId;
/** /**
* token *
*/ */
@ChineseDescription("用户的token") @ChineseDescription("当前登录租户编码")
private String token; private String tenantCode;
/**
* chineseenglish
* <p>
* languages
* <p>
*
*/
@ChineseDescription("当前用户语种的标识")
private String tranLanguageCode = RuleConstants.CHINESE_TRAN_LANGUAGE_CODE;
public LoginUser() { public LoginUser() {
} }

View File

@ -116,4 +116,10 @@ public class LoginUserImpl implements LoginUserApi {
return sessionManagerApi.haveSession(token); return sessionManagerApi.haveSession(token);
} }
@Override
public boolean getSuperAdminFlag() {
LoginUser loginUser = getLoginUser();
return sysUserServiceApi.getUserSuperAdminFlag(loginUser.getUserId());
}
} }

View File

@ -1,35 +0,0 @@
package cn.stylefeng.roses.kernel.auth.config;
import cn.stylefeng.roses.kernel.auth.api.SessionManagerApi;
import cn.stylefeng.roses.kernel.auth.api.context.LoginContext;
import cn.stylefeng.roses.kernel.auth.api.pojo.login.LoginUser;
import cn.stylefeng.roses.kernel.config.api.ConfigInitCallbackApi;
import cn.stylefeng.roses.kernel.message.api.expander.WebSocketConfigExpander;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
/**
* websocket
*
* @author majianguo
* @since 2021/10/19 17:07
*/
@Component
public class InitConfigWebSocketCallbackApiImpl implements ConfigInitCallbackApi {
@Resource
private SessionManagerApi sessionManagerApi;
@Override
public void initBefore() {
}
@Override
public void initAfter() {
LoginUser loginUser = LoginContext.me().getLoginUser();
loginUser.setWsUrl(WebSocketConfigExpander.getWebSocketWsUrl());
sessionManagerApi.updateSession(loginUser.getToken(), loginUser);
}
}

View File

@ -33,6 +33,7 @@ import cn.stylefeng.roses.kernel.auth.api.pojo.login.LoginUser;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.HashSet;
import java.util.Set; import java.util.Set;
import static cn.stylefeng.roses.kernel.auth.api.exception.enums.AuthExceptionEnum.AUTH_EXPIRED_ERROR; import static cn.stylefeng.roses.kernel.auth.api.exception.enums.AuthExceptionEnum.AUTH_EXPIRED_ERROR;
@ -64,8 +65,8 @@ public class PermissionServiceImpl implements PermissionServiceApi {
throw new AuthException(AUTH_EXPIRED_ERROR); throw new AuthException(AUTH_EXPIRED_ERROR);
} }
// 3. 验证用户有没有当前url的权限 // 3. 验证用户有没有当前url的权限 todo 校验方法重写
Set<String> resourceUrls = session.getResourceUrls(); Set<String> resourceUrls = new HashSet<>();
if (resourceUrls == null || resourceUrls.size() == 0) { if (resourceUrls == null || resourceUrls.size() == 0) {
throw new AuthException(PERMISSION_RES_VALIDATE_ERROR); throw new AuthException(PERMISSION_RES_VALIDATE_ERROR);
} else { } else {

View File

@ -131,7 +131,7 @@ public class CustomMetaObjectHandler implements MetaObjectHandler {
private Long getUserOrgId() { private Long getUserOrgId() {
try { try {
return LoginContext.me().getLoginUser().getOrganizationId(); return LoginContext.me().getLoginUser().getCurrentOrgId();
} catch (Exception e) { } catch (Exception e) {
//如果获取不到就返回-1 //如果获取不到就返回-1
return -1L; return -1L;

View File

@ -24,8 +24,6 @@
*/ */
package cn.stylefeng.roses.kernel.log.api.factory.appender; package cn.stylefeng.roses.kernel.log.api.factory.appender;
import cn.stylefeng.roses.kernel.auth.api.context.LoginContext;
import cn.stylefeng.roses.kernel.auth.api.pojo.login.LoginUser;
import cn.stylefeng.roses.kernel.log.api.pojo.record.LogRecordDTO; import cn.stylefeng.roses.kernel.log.api.pojo.record.LogRecordDTO;
/** /**
@ -44,16 +42,15 @@ public class AuthedLogAppender {
* @author fengshuonan * @author fengshuonan
* @since 2020/10/27 18:22 * @since 2020/10/27 18:22
*/ */
public static void appendAuthedHttpLog(LogRecordDTO logRecordDTO) { public static void appendAuthedHttpLog(LogRecordDTO logRecordDTO, String token, Long userId) {
// 填充当前登录的用户信息 // 填充当前登录的用户信息
try { try {
// 填充登录用户的token // 填充登录用户的token
logRecordDTO.setToken(LoginContext.me().getToken()); logRecordDTO.setToken(token);
// 填充登录用户的userId // 填充登录用户的userId
LoginUser loginUser = LoginContext.me().getLoginUser(); logRecordDTO.setUserId(userId);
logRecordDTO.setUserId(loginUser.getUserId());
} catch (Exception ignored) { } catch (Exception ignored) {
// 获取不到用户登录信息,就不填充 // 获取不到用户登录信息,就不填充
} }

View File

@ -32,6 +32,14 @@
<version>${roses.version}</version> <version>${roses.version}</version>
</dependency> </dependency>
<!--auth模块-->
<!--获取当前登录用户-->
<dependency>
<groupId>cn.stylefeng.roses</groupId>
<artifactId>auth-api</artifactId>
<version>${roses.version}</version>
</dependency>
<!-- web --> <!-- web -->
<!-- 用于本模块中对controller的拦截器 --> <!-- 用于本模块中对controller的拦截器 -->
<dependency> <dependency>

View File

@ -25,6 +25,8 @@
package cn.stylefeng.roses.kernel.log.requestapi; package cn.stylefeng.roses.kernel.log.requestapi;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.stylefeng.roses.kernel.auth.api.context.LoginContext;
import cn.stylefeng.roses.kernel.auth.api.pojo.login.LoginUser;
import cn.stylefeng.roses.kernel.log.api.LogRecordApi; import cn.stylefeng.roses.kernel.log.api.LogRecordApi;
import cn.stylefeng.roses.kernel.log.api.constants.LogConstants; import cn.stylefeng.roses.kernel.log.api.constants.LogConstants;
import cn.stylefeng.roses.kernel.log.api.constants.LogFileConstants; import cn.stylefeng.roses.kernel.log.api.constants.LogFileConstants;
@ -172,7 +174,10 @@ public class RequestApiLogRecordAop implements Ordered {
LogRecordDTO logRecordDTO = LogRecordFactory.createLogRecord(LogConstants.LOG_DEFAULT_NAME, actionName); LogRecordDTO logRecordDTO = LogRecordFactory.createLogRecord(LogConstants.LOG_DEFAULT_NAME, actionName);
// 填充用户登录信息 // 填充用户登录信息
AuthedLogAppender.appendAuthedHttpLog(logRecordDTO); LoginUser loginUserNullable = LoginContext.me().getLoginUserNullable();
if (loginUserNullable != null) {
AuthedLogAppender.appendAuthedHttpLog(logRecordDTO, loginUserNullable.getToken(), loginUserNullable.getUserId());
}
// 填充http接口请求信息 // 填充http接口请求信息
HttpLogAppender.appendHttpLog(logRecordDTO); HttpLogAppender.appendHttpLog(logRecordDTO);

View File

@ -5,7 +5,6 @@ import cn.hutool.core.util.StrUtil;
import cn.hutool.extra.spring.SpringUtil; import cn.hutool.extra.spring.SpringUtil;
import cn.stylefeng.roses.kernel.auth.api.password.PasswordStoredEncryptApi; import cn.stylefeng.roses.kernel.auth.api.password.PasswordStoredEncryptApi;
import cn.stylefeng.roses.kernel.auth.api.pojo.login.LoginUser; import cn.stylefeng.roses.kernel.auth.api.pojo.login.LoginUser;
import cn.stylefeng.roses.kernel.auth.api.pojo.login.basic.SimpleUserInfo;
import cn.stylefeng.roses.kernel.customer.api.expander.CustomerConfigExpander; import cn.stylefeng.roses.kernel.customer.api.expander.CustomerConfigExpander;
import cn.stylefeng.roses.kernel.customer.modular.entity.Customer; import cn.stylefeng.roses.kernel.customer.modular.entity.Customer;
import cn.stylefeng.roses.kernel.customer.modular.request.CustomerRequest; import cn.stylefeng.roses.kernel.customer.modular.request.CustomerRequest;
@ -16,7 +15,6 @@ import cn.stylefeng.roses.kernel.rule.enums.StatusEnum;
import cn.stylefeng.roses.kernel.rule.enums.YesOrNotEnum; import cn.stylefeng.roses.kernel.rule.enums.YesOrNotEnum;
import java.util.Collections; import java.util.Collections;
import java.util.Date;
/** /**
* C * C
@ -98,23 +96,6 @@ public class CustomerFactory {
public static LoginUser createLoginUser(Customer customer, FileOperatorApi fileOperatorApi) { public static LoginUser createLoginUser(Customer customer, FileOperatorApi fileOperatorApi) {
LoginUser loginUser = new LoginUser(); LoginUser loginUser = new LoginUser();
loginUser.setUserId(customer.getCustomerId()); loginUser.setUserId(customer.getCustomerId());
loginUser.setAccount(customer.getAccount());
loginUser.setLoginTime(new Date());
SimpleUserInfo simpleUserInfo = new SimpleUserInfo();
simpleUserInfo.setAvatar(customer.getAvatar());
simpleUserInfo.setNickName(customer.getNickName());
simpleUserInfo.setEmail(customer.getEmail());
simpleUserInfo.setPhone(customer.getTelephone());
loginUser.setSimpleUserInfo(simpleUserInfo);
// 设置用户头像url
String fileAuthUrl = fileOperatorApi.getFileUnAuthUrl(CustomerConfigExpander.getCustomerBucket(), customer.getAvatarObjectName());
loginUser.setAvatarUrl(fileAuthUrl);
// 设置用户是C端用户
loginUser.setCustomerFlag(true);
return loginUser; return loginUser;
} }

View File

@ -33,17 +33,14 @@ import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult;
import cn.stylefeng.roses.kernel.dict.api.enums.DictTypeClassEnum; import cn.stylefeng.roses.kernel.dict.api.enums.DictTypeClassEnum;
import cn.stylefeng.roses.kernel.dict.api.exception.DictException; import cn.stylefeng.roses.kernel.dict.api.exception.DictException;
import cn.stylefeng.roses.kernel.dict.api.exception.enums.DictExceptionEnum; import cn.stylefeng.roses.kernel.dict.api.exception.enums.DictExceptionEnum;
import cn.stylefeng.roses.kernel.dict.modular.entity.SysDict;
import cn.stylefeng.roses.kernel.dict.modular.entity.SysDictType; import cn.stylefeng.roses.kernel.dict.modular.entity.SysDictType;
import cn.stylefeng.roses.kernel.dict.modular.mapper.DictTypeMapper; import cn.stylefeng.roses.kernel.dict.modular.mapper.DictTypeMapper;
import cn.stylefeng.roses.kernel.dict.modular.pojo.request.DictTypeRequest; import cn.stylefeng.roses.kernel.dict.modular.pojo.request.DictTypeRequest;
import cn.stylefeng.roses.kernel.dict.modular.service.DictService;
import cn.stylefeng.roses.kernel.dict.modular.service.DictTypeService; import cn.stylefeng.roses.kernel.dict.modular.service.DictTypeService;
import cn.stylefeng.roses.kernel.pinyin.api.PinYinApi; import cn.stylefeng.roses.kernel.pinyin.api.PinYinApi;
import cn.stylefeng.roses.kernel.rule.enums.StatusEnum; import cn.stylefeng.roses.kernel.rule.enums.StatusEnum;
import cn.stylefeng.roses.kernel.rule.enums.YesOrNotEnum; import cn.stylefeng.roses.kernel.rule.enums.YesOrNotEnum;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -134,7 +131,6 @@ public class DictTypeServiceImpl extends ServiceImpl<DictTypeMapper, SysDictType
return PageResultFactory.createPageResult(page); return PageResultFactory.createPageResult(page);
} }
/** /**
* dictTypeClass * dictTypeClass
* *

View File

@ -107,4 +107,12 @@ public interface SysUserServiceApi {
*/ */
void updateUserLoginInfo(Long userId, String ip); void updateUserLoginInfo(Long userId, String ip);
/**
*
*
* @author fengshuonan
* @since 2023/6/17 23:09
*/
boolean getUserSuperAdminFlag(Long userId);
} }

View File

@ -207,4 +207,23 @@ public class UserIntegrationService implements SysUserServiceApi {
this.sysUserService.update(sysUserLambdaUpdateWrapper); this.sysUserService.update(sysUserLambdaUpdateWrapper);
} }
@Override
public boolean getUserSuperAdminFlag(Long userId) {
if (ObjectUtil.isEmpty(userId)) {
return false;
}
LambdaQueryWrapper<SysUser> sysUserLambdaQueryWrapper = new LambdaQueryWrapper<>();
sysUserLambdaQueryWrapper.eq(SysUser::getUserId, userId);
sysUserLambdaQueryWrapper.select(SysUser::getSuperAdminFlag);
SysUser result = this.sysUserService.getOne(sysUserLambdaQueryWrapper, false);
if (result == null) {
return false;
}
return YesOrNotEnum.Y.getCode().equals(result.getSuperAdminFlag());
}
} }