|
@@ -6,6 +6,7 @@ import cn.dev33.satoken.stp.SaLoginModel;
|
|
|
import cn.dev33.satoken.stp.StpUtil;
|
|
import cn.dev33.satoken.stp.StpUtil;
|
|
|
import cn.hutool.core.convert.Convert;
|
|
import cn.hutool.core.convert.Convert;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
|
|
+import com.ruoyi.common.core.constant.TenantConstants;
|
|
|
import com.ruoyi.common.core.constant.UserConstants;
|
|
import com.ruoyi.common.core.constant.UserConstants;
|
|
|
import com.ruoyi.common.core.enums.DeviceType;
|
|
import com.ruoyi.common.core.enums.DeviceType;
|
|
|
import com.ruoyi.common.core.enums.UserType;
|
|
import com.ruoyi.common.core.enums.UserType;
|
|
@@ -13,6 +14,8 @@ import com.ruoyi.system.api.model.LoginUser;
|
|
|
import lombok.AccessLevel;
|
|
import lombok.AccessLevel;
|
|
|
import lombok.NoArgsConstructor;
|
|
import lombok.NoArgsConstructor;
|
|
|
|
|
|
|
|
|
|
+import java.util.Set;
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* 登录鉴权助手
|
|
* 登录鉴权助手
|
|
|
* <p>
|
|
* <p>
|
|
@@ -29,6 +32,7 @@ import lombok.NoArgsConstructor;
|
|
|
public class LoginHelper {
|
|
public class LoginHelper {
|
|
|
|
|
|
|
|
public static final String LOGIN_USER_KEY = "loginUser";
|
|
public static final String LOGIN_USER_KEY = "loginUser";
|
|
|
|
|
+ public static final String TENANT_KEY = "tenantId";
|
|
|
public static final String USER_KEY = "userId";
|
|
public static final String USER_KEY = "userId";
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -49,12 +53,15 @@ public class LoginHelper {
|
|
|
public static void loginByDevice(LoginUser loginUser, DeviceType deviceType) {
|
|
public static void loginByDevice(LoginUser loginUser, DeviceType deviceType) {
|
|
|
SaStorage storage = SaHolder.getStorage();
|
|
SaStorage storage = SaHolder.getStorage();
|
|
|
storage.set(LOGIN_USER_KEY, loginUser);
|
|
storage.set(LOGIN_USER_KEY, loginUser);
|
|
|
|
|
+ storage.set(TENANT_KEY, loginUser.getTenantId());
|
|
|
storage.set(USER_KEY, loginUser.getUserId());
|
|
storage.set(USER_KEY, loginUser.getUserId());
|
|
|
SaLoginModel model = new SaLoginModel();
|
|
SaLoginModel model = new SaLoginModel();
|
|
|
if (ObjectUtil.isNotNull(deviceType)) {
|
|
if (ObjectUtil.isNotNull(deviceType)) {
|
|
|
model.setDevice(deviceType.getDevice());
|
|
model.setDevice(deviceType.getDevice());
|
|
|
}
|
|
}
|
|
|
- StpUtil.login(loginUser.getLoginId(), model.setExtra(USER_KEY, loginUser.getUserId()));
|
|
|
|
|
|
|
+ StpUtil.login(loginUser.getLoginId(),
|
|
|
|
|
+ model.setExtra(TENANT_KEY, loginUser.getTenantId())
|
|
|
|
|
+ .setExtra(USER_KEY, loginUser.getUserId()));
|
|
|
StpUtil.getTokenSession().set(LOGIN_USER_KEY, loginUser);
|
|
StpUtil.getTokenSession().set(LOGIN_USER_KEY, loginUser);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -95,6 +102,23 @@ public class LoginHelper {
|
|
|
return userId;
|
|
return userId;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 获取租户ID
|
|
|
|
|
+ */
|
|
|
|
|
+ public static String getTenantId() {
|
|
|
|
|
+ String tenantId;
|
|
|
|
|
+ try {
|
|
|
|
|
+ tenantId = (String) SaHolder.getStorage().get(TENANT_KEY);
|
|
|
|
|
+ if (ObjectUtil.isNull(tenantId)) {
|
|
|
|
|
+ tenantId = (String) StpUtil.getExtra(TENANT_KEY);
|
|
|
|
|
+ SaHolder.getStorage().set(TENANT_KEY, tenantId);
|
|
|
|
|
+ }
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
|
|
+ return tenantId;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* 获取部门ID
|
|
* 获取部门ID
|
|
|
*/
|
|
*/
|
|
@@ -118,17 +142,31 @@ public class LoginHelper {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * 是否为管理员
|
|
|
|
|
|
|
+ * 是否为超级管理员
|
|
|
*
|
|
*
|
|
|
* @param userId 用户ID
|
|
* @param userId 用户ID
|
|
|
* @return 结果
|
|
* @return 结果
|
|
|
*/
|
|
*/
|
|
|
- public static boolean isAdmin(Long userId) {
|
|
|
|
|
- return UserConstants.ADMIN_ID.equals(userId);
|
|
|
|
|
|
|
+ public static boolean isSuperAdmin(Long userId) {
|
|
|
|
|
+ return UserConstants.SUPER_ADMIN_ID.equals(userId);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public static boolean isSuperAdmin() {
|
|
|
|
|
+ return isSuperAdmin(getUserId());
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 是否为超级管理员
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param rolePermission 角色权限标识组
|
|
|
|
|
+ * @return 结果
|
|
|
|
|
+ */
|
|
|
|
|
+ public static boolean isTenantAdmin(Set<String> rolePermission) {
|
|
|
|
|
+ return rolePermission.contains(TenantConstants.TENANT_ADMIN_ROLE_KEY);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- public static boolean isAdmin() {
|
|
|
|
|
- return isAdmin(getUserId());
|
|
|
|
|
|
|
+ public static boolean isTenantAdmin() {
|
|
|
|
|
+ return isTenantAdmin(getLoginUser().getRolePermission());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
}
|
|
}
|