AuthenticationUser.java 6.7 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
package cn.ibizlab.util.security;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.AllArgsConstructor;
import lombok.Data;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.util.ObjectUtils;
import java.sql.Timestamp;
import java.util.*;
import com.alibaba.fastjson.JSONObject;

@Data
@AllArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class AuthenticationUser implements UserDetails
{
21 22 23 24
	public AuthenticationUser(){}
	/**
	 * 用戶标识
	 */
25
	private String userid;
26 27 28
	/**
	 * 用户全局名
	 */
29
	private String username;
30 31 32
	/**
	 * 用户姓名
	 */
33
	private String personname;
34 35 36
	/**
	 * 登录名
	 */
37
	private String loginname;
38 39 40 41 42 43 44
	/**
	 * 用户工号
	 */
	private String usercode;
	/**
	 * 登录密码
	 */
45
	private String password;
46 47 48
	/**
	 * 区属
	 */
49
	private String domain;
50 51 52
	/**
	 * 部门标识
	 */
53
	private String mdeptid;
54 55 56
	/**
	 * 部门编码
	 */
57
	private String mdeptcode;
58 59 60
	/**
	 * 部门名称
	 */
61
	private String mdeptname;
62 63 64
	/**
	 * 业务编码
	 */
65
	private String bcode;
66 67 68
	/**
	 * 岗位标识
	 */
69
	private String postid;
70 71 72
	/**
	 * 岗位代码
	 */
73
	private String postcode;
74 75 76
	/**
	 * 岗位名称
	 */
77
	private String postname;
78 79 80
	/**
	 * 单位标识
	 */
81
	private String orgid;
82 83 84
	/**
	 * 单位编码
	 */
85
	private String orgcode;
86 87 88
	/**
	 * 单位名称
	 */
89
	private String orgname;
90 91 92
	/**
	 * 昵称别名
	 */
93
	private String nickname;
94 95 96
	/**
	 * 邮箱
	 */
97
	private String email;
98 99 100
	/**
	 * 社交账号
	 */
101
	private String avatar;
102 103 104
	/**
	 * 电话
	 */
105
	private String phone;
106 107 108
	/**
	 * 照片
	 */
109
	private String usericon;
110 111 112
	/**
	 * 性别
	 */
113
	private String sex;
114 115 116
	/**
	 * 出生日期
	 */
117
	private Timestamp birthday;
118 119 120
	/**
	 * 证件号码
	 */
121
	private String certcode;
122 123 124
	/**
	 * 地址
	 */
125
	private String addr;
126 127 128
	/**
	 * 主题
	 */
129
	private String theme;
130 131 132
	/**
	 * 字号
	 */
133
	private String fontsize;
134 135 136
	/**
	 * 语言
	 */
137
	private String lang;
138 139 140
	/**
	 * 备注
	 */
141
	private String memo;
142 143 144 145 146 147 148
	/**
	 * 保留字段
	 */
	private String reserver;
	/**
	 * 用户上下文参数
	 */
149
	private Map <String,Object> sessionParams;
150 151 152
	/**
	 * 用户权限资源
	 */
153 154
	@JsonIgnore
	private Collection<GrantedAuthority> authorities;
155 156 157
    /**
    * 是否为超级管理员
    */
158
    private int superuser;
159 160 161
    /**
    * 用户权限资源
    */
162
    private JSONObject permissionList;
163 164 165
    /**
    * 用户上下文参数
    */
166
    @JsonIgnore
167 168 169 170 171 172 173 174
    private Map<String,Object> userSessionParam;
    /**
    * 当前用户上下级组织信息
    */
    private Map<String, Set<String>> orgInfo;
	/**
	* 上级组织
	*/
175
	private String porg;
176 177 178
	/**
	* 下级组织
	*/
179
	private String sorg;
180 181 182
	/**
	* 上级部门
	*/
183
	private String pdept;
184 185 186
	/**
	* 下级部门
	*/
187
	private String sdept;
188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254

	@JsonIgnore
	@Override
	public boolean isAccountNonExpired() {
		return true;
	}

	@JsonIgnore
	@Override
	public boolean isAccountNonLocked() {
		return true;
	}

	@JsonIgnore
	@Override
	public boolean isCredentialsNonExpired() {
		return true;
	}

	@JsonIgnore
	@Override
	public String getPassword() {
		return password;
	}

	@Override
	public boolean isEnabled() {
		return true;
	}

	public static AuthenticationUser getAuthenticationUser()
	{
        if(SecurityContextHolder.getContext()==null||SecurityContextHolder.getContext().getAuthentication()==null||SecurityContextHolder.getContext().getAuthentication().getPrincipal()==null){
			return new AuthenticationUser();
		}
    	Object userDetails = SecurityContextHolder.getContext().getAuthentication().getPrincipal();
		AuthenticationUser authuserdetail;
		if(userDetails instanceof AuthenticationUser ) {
			authuserdetail= (AuthenticationUser)userDetails;
		}
		else {
			authuserdetail=new AuthenticationUser();
		}
	 	return authuserdetail;
	}

    public Map <String,Object> getSessionParams()
    {
		if(this.sessionParams==null)
		{
			sessionParams = getUserSessionParam();
			sessionParams.put("srfpersonid", this.getUserid());
			sessionParams.put("srfpersonname", this.getPersonname());
			sessionParams.put("srforgsectorid", this.getMdeptid());
			sessionParams.put("srforgsectorcode", this.getMdeptcode());
			sessionParams.put("srforgsectorname", this.getMdeptname());
			sessionParams.put("srforgid", this.getOrgid());
			sessionParams.put("srforgcode", this.getOrgcode());
			sessionParams.put("srforgname", this.getOrgname());
			sessionParams.put("srfuserid", this.getUserid());
			sessionParams.put("srfusername", this.getPersonname());
			sessionParams.put("srfusermode", "");
			sessionParams.put("srforgsectorbc", this.getBcode());
			sessionParams.put("srfloginname", this.getLoginname());
			sessionParams.put("srflocale", this.getLang());
			sessionParams.put("srftimezone", "");
    		sessionParams.put("srfusercode", this.getUsercode());
255 256 257 258
			sessionParams.put("srfporg", this.getPorg());
			sessionParams.put("srfsorg", this.getSorg());
			sessionParams.put("srfpdept", this.getPdept());
			sessionParams.put("srfsdept", this.getSdept());
259 260 261 262 263 264 265 266 267 268
		}
		return this.sessionParams;
    }
    private Map<String, Object> getUserSessionParam() {
		if(userSessionParam!=null)
			return userSessionParam;
		else
			return new HashMap<>();
    }

269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288
	public void setOrgInfo(Map<String, Set<String>> orgInfo) {
		this.orgInfo = orgInfo;
		if(!ObjectUtils.isEmpty(orgInfo) && !ObjectUtils.isEmpty(orgInfo.get("parentorg"))){
			porg=(String.format("'%s'",String.join("','",orgInfo.get("parentorg"))));
            this.getSessionParams().put("srfporg",porg);
		}
		if(!ObjectUtils.isEmpty(orgInfo) && !ObjectUtils.isEmpty(orgInfo.get("suborg")) ){
			sorg=(String.format("'%s'",String.join("','",orgInfo.get("suborg"))));
            this.getSessionParams().put("srfsorg",sorg);
		}
		if(!ObjectUtils.isEmpty(orgInfo) && !ObjectUtils.isEmpty(orgInfo.get("parentdept"))){
			pdept=(String.format("'%s'",String.join("','",orgInfo.get("parentdept"))));
            this.getSessionParams().put("srfpdept",pdept);
		}
		if(!ObjectUtils.isEmpty(orgInfo) && !ObjectUtils.isEmpty(orgInfo.get("subdept"))){
			sdept=(String.format("'%s'",String.join("','",orgInfo.get("subdept"))));
            this.getSessionParams().put("srfsdept",sdept);
		}
	}

289 290
	public void setPermissionList(JSONObject permissionList) {
		this.permissionList = permissionList;
291
		if(authorities==null && permissionList !=null){
292 293 294
		if(permissionList.getJSONArray("authorities")!=null){
			authorities=new ArrayList<>();
			permissionList.getJSONArray("authorities").
295 296 297 298 299
				forEach(item->authorities.add(new SimpleGrantedAuthority(String.valueOf(item))));
			}
		}
	}
}