|
@@ -1,10 +1,13 @@
|
|
package com.ruoyi.framework.shiro.service;
|
|
package com.ruoyi.framework.shiro.service;
|
|
|
|
|
|
|
|
+import java.util.List;
|
|
|
|
+import java.util.Set;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.stereotype.Component;
|
|
import org.springframework.stereotype.Component;
|
|
import com.ruoyi.common.constant.Constants;
|
|
import com.ruoyi.common.constant.Constants;
|
|
import com.ruoyi.common.constant.ShiroConstants;
|
|
import com.ruoyi.common.constant.ShiroConstants;
|
|
import com.ruoyi.common.constant.UserConstants;
|
|
import com.ruoyi.common.constant.UserConstants;
|
|
|
|
+import com.ruoyi.common.core.domain.entity.SysRole;
|
|
import com.ruoyi.common.core.domain.entity.SysUser;
|
|
import com.ruoyi.common.core.domain.entity.SysUser;
|
|
import com.ruoyi.common.enums.UserStatus;
|
|
import com.ruoyi.common.enums.UserStatus;
|
|
import com.ruoyi.common.exception.user.CaptchaException;
|
|
import com.ruoyi.common.exception.user.CaptchaException;
|
|
@@ -19,6 +22,7 @@ import com.ruoyi.common.utils.ShiroUtils;
|
|
import com.ruoyi.common.utils.StringUtils;
|
|
import com.ruoyi.common.utils.StringUtils;
|
|
import com.ruoyi.framework.manager.AsyncManager;
|
|
import com.ruoyi.framework.manager.AsyncManager;
|
|
import com.ruoyi.framework.manager.factory.AsyncFactory;
|
|
import com.ruoyi.framework.manager.factory.AsyncFactory;
|
|
|
|
+import com.ruoyi.system.service.ISysMenuService;
|
|
import com.ruoyi.system.service.ISysUserService;
|
|
import com.ruoyi.system.service.ISysUserService;
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -35,6 +39,9 @@ public class SysLoginService
|
|
@Autowired
|
|
@Autowired
|
|
private ISysUserService userService;
|
|
private ISysUserService userService;
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
+ private ISysMenuService menuService;
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 登录
|
|
* 登录
|
|
*/
|
|
*/
|
|
@@ -104,6 +111,7 @@ public class SysLoginService
|
|
passwordService.validate(user, password);
|
|
passwordService.validate(user, password);
|
|
|
|
|
|
AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));
|
|
AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));
|
|
|
|
+ setRolePermission(user);
|
|
recordLoginInfo(user.getUserId());
|
|
recordLoginInfo(user.getUserId());
|
|
return user;
|
|
return user;
|
|
}
|
|
}
|
|
@@ -129,6 +137,25 @@ public class SysLoginService
|
|
*/
|
|
*/
|
|
|
|
|
|
/**
|
|
/**
|
|
|
|
+ * 设置角色权限
|
|
|
|
+ *
|
|
|
|
+ * @param user 用户信息
|
|
|
|
+ */
|
|
|
|
+ public void setRolePermission(SysUser user)
|
|
|
|
+ {
|
|
|
|
+ List<SysRole> roles = user.getRoles();
|
|
|
|
+ if (!roles.isEmpty() && roles.size() > 1)
|
|
|
|
+ {
|
|
|
|
+ // 多角色设置permissions属性,以便数据权限匹配权限
|
|
|
|
+ for (SysRole role : roles)
|
|
|
|
+ {
|
|
|
|
+ Set<String> rolePerms = menuService.selectPermsByRoleId(role.getRoleId());
|
|
|
|
+ role.setPermissions(rolePerms);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
* 记录登录信息
|
|
* 记录登录信息
|
|
*
|
|
*
|
|
* @param userId 用户ID
|
|
* @param userId 用户ID
|