Browse Source

版本更新

lihui001 4 years ago
parent
commit
0f446e4760

+ 4 - 0
zoniot-common/zoniot-core-common/pom.xml

@@ -22,6 +22,10 @@
             <groupId>com.alibaba</groupId>
             <groupId>com.alibaba</groupId>
             <artifactId>fastjson</artifactId>
             <artifactId>fastjson</artifactId>
         </dependency>
         </dependency>
+        <dependency>
+            <groupId>org.springframework.security.oauth</groupId>
+            <artifactId>spring-security-oauth2</artifactId>
+        </dependency>
     </dependencies>
     </dependencies>
     <build>
     <build>
         <plugins>
         <plugins>

+ 140 - 0
zoniot-common/zoniot-core-common/src/main/java/com/zcxk/core/common/pojo/LoginUser.java

@@ -0,0 +1,140 @@
+package com.zcxk.core.common.pojo;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.security.core.GrantedAuthority;
+import org.springframework.security.core.userdetails.UserDetails;
+import org.springframework.util.Assert;
+
+import java.io.Serializable;
+import java.util.*;
+
+@Data
+public class LoginUser implements UserDetails {
+
+    private static final long serialVersionUID = 2688116832144932826L;
+
+    @ApiModelProperty(value="id")
+    private Integer id;
+
+    @ApiModelProperty(value="用户名")
+    private String username;
+
+    @ApiModelProperty(value="姓名")
+    private String name;
+
+    @ApiModelProperty(value="手机号码")
+    private String phoneNumber;
+
+    @ApiModelProperty(value="类型,1超级管理员,-999站点管理员,2普通用户")
+    private String type;
+    @ApiModelProperty(value="公司id")
+    private Integer companyId;
+    @ApiModelProperty(value="部门id")
+    private Integer departmentId;
+
+
+    @ApiModelProperty(value="租户标识")
+    private String tenantId;
+    @ApiModelProperty(value="用户权限类型")
+    private Integer permissonType;
+    @ApiModelProperty(value="用户角色id")
+    private Integer roleId;
+
+    @JsonIgnore
+    private String LoginToken;
+
+    //数据权限
+    private List<ProgramItem> programItemList;
+    @JsonIgnore
+    //同一个手机号下的所有用户信息
+    private String userInfos;
+    private List<String>appIds;
+
+
+
+    //权限
+    private Set<GrantedAuthority> authorities;
+
+    public LoginUser(Set<GrantedAuthority> authorities) {
+        this.authorities = authorities;
+    }
+
+    public LoginUser(Integer id, String username, String phoneNumber, String type, String tenantId, Set<GrantedAuthority> authorities) {
+        this.id = id;
+        this.username = username;
+        this.phoneNumber = phoneNumber;
+        this.type = type;
+        this.tenantId = tenantId;
+        this.authorities = Collections.unmodifiableSet(sortAuthorities(authorities));
+    }
+
+    @Override
+    public Collection<? extends GrantedAuthority> getAuthorities() {
+        return this.authorities;
+    }
+
+    @JsonIgnore
+    @Override
+    public String getPassword() {
+        return null;
+    }
+
+    private static SortedSet<GrantedAuthority> sortAuthorities(Collection<? extends GrantedAuthority> authorities) {
+        Assert.notNull(authorities, "Cannot pass a null GrantedAuthority collection");
+        SortedSet<GrantedAuthority> sortedAuthorities = new TreeSet(new AuthorityComparator());
+        Iterator var2 = authorities.iterator();
+
+        while(var2.hasNext()) {
+            GrantedAuthority grantedAuthority = (GrantedAuthority)var2.next();
+            Assert.notNull(grantedAuthority, "GrantedAuthority list cannot contain any null elements");
+            sortedAuthorities.add(grantedAuthority);
+        }
+
+        return sortedAuthorities;
+    }
+
+    @JsonIgnore
+    @Override
+    public boolean isAccountNonExpired() {
+        return true;
+    }
+
+    @JsonIgnore
+    @Override
+    public boolean isAccountNonLocked() {
+        return true;
+    }
+
+    @JsonIgnore
+    @Override
+    public boolean isCredentialsNonExpired() {
+        return true;
+    }
+
+    @JsonIgnore
+    @Override
+    public boolean isEnabled() {
+        return true;
+    }
+
+    private static class AuthorityComparator implements Comparator<GrantedAuthority>, Serializable {
+        private static final long serialVersionUID = 500L;
+
+        private AuthorityComparator() {
+        }
+
+        public int compare(GrantedAuthority g1, GrantedAuthority g2) {
+            if (g2.getAuthority() == null) {
+                return -1;
+            } else {
+                return g1.getAuthority() == null ? 1 : g1.getAuthority().compareTo(g2.getAuthority());
+            }
+        }
+    }
+
+    public void setAuthorities(Set<GrantedAuthority> authorities) {
+        this.authorities = Collections.unmodifiableSet(sortAuthorities(authorities));
+    }
+}

+ 30 - 0
zoniot-common/zoniot-core-common/src/main/java/com/zcxk/core/common/pojo/ProgramItem.java

@@ -0,0 +1,30 @@
+package com.zcxk.core.common.pojo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@ApiModel(value="数据权限")
+@Data
+public class ProgramItem implements Serializable {
+
+    private static final long serialVersionUID = 6581649172496070363L;
+    @ApiModelProperty(value="租户标识")
+    private String code;
+
+    @ApiModelProperty(value="机构id")
+    private Integer orgId;
+
+    @ApiModelProperty(value="部门机构id")
+    private Integer orgDeparmtmentId;
+
+    @ApiModelProperty(value="部门机构id")
+    private Integer orgCompanyId;
+
+    private Integer orgType;
+
+    private String newType;
+
+}

+ 70 - 0
zoniot-common/zoniot-core-common/src/main/java/com/zcxk/core/common/util/UserUtil.java

@@ -0,0 +1,70 @@
+package com.zcxk.core.common.util;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.zcxk.core.common.pojo.LoginUser;
+import com.zcxk.core.common.pojo.ProgramItem;
+import org.springframework.security.authentication.AnonymousAuthenticationToken;
+import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
+import org.springframework.security.core.Authentication;
+import org.springframework.security.core.context.SecurityContextHolder;
+import org.springframework.security.oauth2.provider.OAuth2Authentication;
+
+import java.util.LinkedHashMap;
+import java.util.List;
+
+public class UserUtil {
+    /**
+     *获取当前用户
+     */
+    public static LoginUser getCurrentUser() {
+        Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
+        if (authentication != null) {
+            if (authentication instanceof AnonymousAuthenticationToken) {
+                return new LoginUser(null);
+            }
+
+            if (authentication instanceof UsernamePasswordAuthenticationToken) {
+                return (LoginUser) authentication.getPrincipal();
+            }
+
+            if(authentication instanceof OAuth2Authentication){
+                OAuth2Authentication oAuth2Authentication = (OAuth2Authentication) authentication;
+                if(oAuth2Authentication.getPrincipal() instanceof LoginUser){
+                    return (LoginUser) oAuth2Authentication.getPrincipal();
+                }else {
+                    LinkedHashMap<String,Object> details = (LinkedHashMap<String,Object>) oAuth2Authentication.getUserAuthentication().getDetails();
+                    LinkedHashMap<String,Object> principalMap = (LinkedHashMap<String, Object>) details.get("principal");
+
+                    JSONObject userJson = (JSONObject) JSONObject.toJSON(principalMap);
+
+                    LoginUser loginUser = new LoginUser(null);
+                    loginUser.setId((Integer) userJson.get("id"));
+                    loginUser.setUsername((String) userJson.get("username"));
+                    //loginUser.setName((String) userJson.get("name"));
+                    loginUser.setPhoneNumber((String) userJson.get("phoneNumber"));
+                    loginUser.setType((String) userJson.get("type"));
+                    //loginUser.setName(user.getUsername());
+                    loginUser.setCompanyId(userJson.getInteger("companyId"));
+                    loginUser.setDepartmentId(userJson.getInteger("departmentId"));
+                    loginUser.setTenantId(userJson.getString("tenantId"));
+                    JSONArray programItemListArray = userJson.getJSONArray("programItemList");
+                    loginUser.setPermissonType(userJson.getInteger("permissonType"));
+                    JSONArray appIds = userJson.getJSONArray("appIds");
+                    if (programItemListArray != null) {
+                        List<ProgramItem> collection =
+                                JSONObject.parseArray(programItemListArray.toJSONString(), ProgramItem.class);
+                        loginUser.setProgramItemList(collection);
+                    }
+                    if(appIds!=null){
+                        List<String> appIdString = JSONObject.parseArray(appIds.toJSONString(), String.class);
+                        loginUser.setAppIds(appIdString);
+                    }
+                    return loginUser;
+                }
+            }
+        }
+
+        return new LoginUser(null);
+    }
+}