mirror of https://gitee.com/stylefeng/roses
【7.6.0】【sys】【auth】调整loginUser字段,增加几个状态标识
parent
59c0d9589c
commit
4e98c97a1d
|
@ -78,4 +78,13 @@ public interface LoginUserApi {
|
|||
*/
|
||||
boolean hasLogin();
|
||||
|
||||
/**
|
||||
* 获取是否是超级管理员的标识
|
||||
*
|
||||
* @return true-是超级管理员,false-不是超级管理员
|
||||
* @author fengshuonan
|
||||
* @since 2020/11/4 15:45
|
||||
*/
|
||||
boolean getSuperAdminFlag();
|
||||
|
||||
}
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
package cn.stylefeng.roses.kernel.auth.api.pojo.login;
|
||||
|
||||
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
|
||||
import cn.stylefeng.roses.kernel.rule.constants.RuleConstants;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
@ -46,6 +47,12 @@ public class LoginUser implements Serializable {
|
|||
@ChineseDescription("用户主键id")
|
||||
private Long userId;
|
||||
|
||||
/**
|
||||
* 用户的token
|
||||
*/
|
||||
@ChineseDescription("用户的token")
|
||||
private String token;
|
||||
|
||||
/**
|
||||
* 当前用户正在访问的appId
|
||||
*/
|
||||
|
@ -59,10 +66,20 @@ public class LoginUser implements Serializable {
|
|||
private Long currentOrgId;
|
||||
|
||||
/**
|
||||
* 用户的token
|
||||
* 当前登录租户编码
|
||||
*/
|
||||
@ChineseDescription("用户的token")
|
||||
private String token;
|
||||
@ChineseDescription("当前登录租户编码")
|
||||
private String tenantCode;
|
||||
|
||||
/**
|
||||
* 当前用户语种的标识,例如:chinese,english
|
||||
* <p>
|
||||
* 这个值是根据字典获取,字典类型编码 languages
|
||||
* <p>
|
||||
* 默认语种是中文
|
||||
*/
|
||||
@ChineseDescription("当前用户语种的标识")
|
||||
private String tranLanguageCode = RuleConstants.CHINESE_TRAN_LANGUAGE_CODE;
|
||||
|
||||
public LoginUser() {
|
||||
}
|
||||
|
|
|
@ -116,4 +116,10 @@ public class LoginUserImpl implements LoginUserApi {
|
|||
return sessionManagerApi.haveSession(token);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean getSuperAdminFlag() {
|
||||
LoginUser loginUser = getLoginUser();
|
||||
return sysUserServiceApi.getUserSuperAdminFlag(loginUser.getUserId());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -33,6 +33,7 @@ import cn.stylefeng.roses.kernel.auth.api.pojo.login.LoginUser;
|
|||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
// 3. 验证用户有没有当前url的权限
|
||||
Set<String> resourceUrls = session.getResourceUrls();
|
||||
// 3. 验证用户有没有当前url的权限 todo 校验方法重写
|
||||
Set<String> resourceUrls = new HashSet<>();
|
||||
if (resourceUrls == null || resourceUrls.size() == 0) {
|
||||
throw new AuthException(PERMISSION_RES_VALIDATE_ERROR);
|
||||
} else {
|
||||
|
|
|
@ -131,7 +131,7 @@ public class CustomMetaObjectHandler implements MetaObjectHandler {
|
|||
private Long getUserOrgId() {
|
||||
|
||||
try {
|
||||
return LoginContext.me().getLoginUser().getOrganizationId();
|
||||
return LoginContext.me().getLoginUser().getCurrentOrgId();
|
||||
} catch (Exception e) {
|
||||
//如果获取不到就返回-1
|
||||
return -1L;
|
||||
|
|
|
@ -24,8 +24,6 @@
|
|||
*/
|
||||
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;
|
||||
|
||||
/**
|
||||
|
@ -44,16 +42,15 @@ public class AuthedLogAppender {
|
|||
* @author fengshuonan
|
||||
* @since 2020/10/27 18:22
|
||||
*/
|
||||
public static void appendAuthedHttpLog(LogRecordDTO logRecordDTO) {
|
||||
public static void appendAuthedHttpLog(LogRecordDTO logRecordDTO, String token, Long userId) {
|
||||
|
||||
// 填充当前登录的用户信息
|
||||
try {
|
||||
// 填充登录用户的token
|
||||
logRecordDTO.setToken(LoginContext.me().getToken());
|
||||
logRecordDTO.setToken(token);
|
||||
|
||||
// 填充登录用户的userId
|
||||
LoginUser loginUser = LoginContext.me().getLoginUser();
|
||||
logRecordDTO.setUserId(loginUser.getUserId());
|
||||
logRecordDTO.setUserId(userId);
|
||||
} catch (Exception ignored) {
|
||||
// 获取不到用户登录信息,就不填充
|
||||
}
|
||||
|
|
|
@ -32,6 +32,14 @@
|
|||
<version>${roses.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!--auth模块-->
|
||||
<!--获取当前登录用户-->
|
||||
<dependency>
|
||||
<groupId>cn.stylefeng.roses</groupId>
|
||||
<artifactId>auth-api</artifactId>
|
||||
<version>${roses.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- web -->
|
||||
<!-- 用于本模块中对controller的拦截器 -->
|
||||
<dependency>
|
||||
|
|
|
@ -25,6 +25,8 @@
|
|||
package cn.stylefeng.roses.kernel.log.requestapi;
|
||||
|
||||
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.constants.LogConstants;
|
||||
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);
|
||||
|
||||
// 填充用户登录信息
|
||||
AuthedLogAppender.appendAuthedHttpLog(logRecordDTO);
|
||||
LoginUser loginUserNullable = LoginContext.me().getLoginUserNullable();
|
||||
if (loginUserNullable != null) {
|
||||
AuthedLogAppender.appendAuthedHttpLog(logRecordDTO, loginUserNullable.getToken(), loginUserNullable.getUserId());
|
||||
}
|
||||
|
||||
// 填充http接口请求信息
|
||||
HttpLogAppender.appendHttpLog(logRecordDTO);
|
||||
|
|
|
@ -5,7 +5,6 @@ import cn.hutool.core.util.StrUtil;
|
|||
import cn.hutool.extra.spring.SpringUtil;
|
||||
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.basic.SimpleUserInfo;
|
||||
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.request.CustomerRequest;
|
||||
|
@ -16,7 +15,6 @@ import cn.stylefeng.roses.kernel.rule.enums.StatusEnum;
|
|||
import cn.stylefeng.roses.kernel.rule.enums.YesOrNotEnum;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* C端用户实体组装
|
||||
|
@ -98,23 +96,6 @@ public class CustomerFactory {
|
|||
public static LoginUser createLoginUser(Customer customer, FileOperatorApi fileOperatorApi) {
|
||||
LoginUser loginUser = new LoginUser();
|
||||
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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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.exception.DictException;
|
||||
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.mapper.DictTypeMapper;
|
||||
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.pinyin.api.PinYinApi;
|
||||
import cn.stylefeng.roses.kernel.rule.enums.StatusEnum;
|
||||
import cn.stylefeng.roses.kernel.rule.enums.YesOrNotEnum;
|
||||
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.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
@ -134,7 +131,6 @@ public class DictTypeServiceImpl extends ServiceImpl<DictTypeMapper, SysDictType
|
|||
return PageResultFactory.createPageResult(page);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 校验dictTypeClass是否是系统字典,如果是系统字典只能超级管理员操作
|
||||
*
|
||||
|
|
|
@ -107,4 +107,12 @@ public interface SysUserServiceApi {
|
|||
*/
|
||||
void updateUserLoginInfo(Long userId, String ip);
|
||||
|
||||
/**
|
||||
* 获取用户是否是超级管理员
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @since 2023/6/17 23:09
|
||||
*/
|
||||
boolean getUserSuperAdminFlag(Long userId);
|
||||
|
||||
}
|
||||
|
|
|
@ -207,4 +207,23 @@ public class UserIntegrationService implements SysUserServiceApi {
|
|||
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());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue