✨ Introducing new features. 完善app登录时token 的判断

完善app登录时数据权限的问题
This commit is contained in:
aeizzz committed 2022-12-08 17:56:21 +08:00
1 parent 986bb47b07
commit 8b0e4ccbe5
5 files changed
+39 -2

No files matched your search

@@ -0,0 +1,22 @@
package com.pig4cloud.pigx.common.core.constant.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum UserTypeEnum {
TOB("0","面向后台应用"),
TOC("1","面向小程序");
/**
* 类型
*/
private final String status;
/**
* 描述
*/
private final String description;
}
@@ -23,6 +23,7 @@ import com.pig4cloud.pigx.admin.api.entity.SysDeptRelation;
import com.pig4cloud.pigx.admin.api.entity.SysRole;
import com.pig4cloud.pigx.admin.api.feign.RemoteDataScopeService;
import com.pig4cloud.pigx.common.core.constant.SecurityConstants;
import com.pig4cloud.pigx.common.core.constant.enums.UserTypeEnum;
import com.pig4cloud.pigx.common.core.util.RetOps;
import com.pig4cloud.pigx.common.security.service.PigxUser;
import com.pig4cloud.pigx.common.security.util.SecurityUtils;
@@ -54,6 +55,9 @@ public class PigxDefaultDatascopeHandle implements DataScopeHandle {
@Override
public Boolean calcScope(DataScope dataScope) {
PigxUser user = SecurityUtils.getUser();
if(UserTypeEnum.TOC.getStatus().equals(user.getUserType())){
return true;
}
List<String> roleIdList = user.getAuthorities().stream().map(GrantedAuthority::getAuthority)
.filter(authority -> authority.startsWith(SecurityConstants.ROLE))
.map(authority -> authority.split(StrUtil.UNDERLINE)[1]).collect(Collectors.toList());
@@ -26,6 +26,7 @@ import com.pig4cloud.pigx.app.api.feign.RemoteAppUserService;
import com.pig4cloud.pigx.common.core.constant.CacheConstants;
import com.pig4cloud.pigx.common.core.constant.CommonConstants;
import com.pig4cloud.pigx.common.core.constant.SecurityConstants;
import com.pig4cloud.pigx.common.core.constant.enums.UserTypeEnum;
import com.pig4cloud.pigx.common.core.util.R;
import com.pig4cloud.pigx.common.core.util.RetOps;
import lombok.RequiredArgsConstructor;
@@ -72,6 +73,10 @@ public class PigxAppUserDetailsServiceImpl implements PigxUserDetailsService {
}
@Override
public UserDetails loadUserByUser(PigxUser pigxUser) {
return pigxUser;
}
UserDetails getUserDetailsAppUser(R<AppUserInfo> result) {
// @formatter:off
@@ -103,7 +108,7 @@ public class PigxAppUserDetailsServiceImpl implements PigxUserDetailsService {
return new PigxUser(user.getUserId(), user.getUsername(), null, user.getPhone(), user.getAvatar(),
user.getNickname(), user.getName(), user.getEmail(), user.getTenantId(),
SecurityConstants.BCRYPT + user.getPassword(), true, true, true,
SecurityConstants.BCRYPT + user.getPassword(), true, true, UserTypeEnum.TOC.getStatus(),true,
!CommonConstants.STATUS_LOCK.equals(user.getLockFlag()), authorities);
}
@@ -83,6 +83,9 @@ public class PigxUser extends User {
@Getter
private String email;
@Getter
private String userType;
/**
* Construct the <code>User</code> with the details required by
* {@link DaoAuthenticationProvider}.
@@ -112,6 +115,7 @@ public class PigxUser extends User {
@JsonProperty("name") String name, @JsonProperty("email") String email,
@JsonProperty("tenantId") Long tenantId, @JsonProperty("password") String password,
@JsonProperty("enabled") boolean enabled, @JsonProperty("accountNonExpired") boolean accountNonExpired,
@JsonProperty("userType") String userType,
@JsonProperty("credentialsNonExpired") boolean credentialsNonExpired,
@JsonProperty("accountNonLocked") boolean accountNonLocked,
@JsonProperty("authorities") Collection<? extends GrantedAuthority> authorities) {
@@ -124,6 +128,7 @@ public class PigxUser extends User {
this.nickname = nickname;
this.name = name;
this.email = email;
this.userType = userType;
}
}
@@ -21,6 +21,7 @@ import com.pig4cloud.pigx.admin.api.dto.UserInfo;
import com.pig4cloud.pigx.admin.api.entity.SysUser;
import com.pig4cloud.pigx.common.core.constant.CommonConstants;
import com.pig4cloud.pigx.common.core.constant.SecurityConstants;
import com.pig4cloud.pigx.common.core.constant.enums.UserTypeEnum;
import com.pig4cloud.pigx.common.core.util.R;
import com.pig4cloud.pigx.common.core.util.RetOps;
import org.springframework.core.Ordered;
@@ -95,7 +96,7 @@ public interface PigxUserDetailsService extends UserDetailsService, Ordered {
return new PigxUser(user.getUserId(), user.getUsername(), user.getDeptId(), user.getPhone(), user.getAvatar(),
user.getNickname(), user.getName(), user.getEmail(), user.getTenantId(),
SecurityConstants.BCRYPT + user.getPassword(), true, true, true,
SecurityConstants.BCRYPT + user.getPassword(), true, true, UserTypeEnum.TOB.getStatus(),true,
!CommonConstants.STATUS_LOCK.equals(user.getLockFlag()), authorities);
}