|
@@ -0,0 +1,108 @@
|
|
|
+package com.diagbot.util;
|
|
|
+
|
|
|
+import org.springframework.security.core.Authentication;
|
|
|
+import org.springframework.security.core.authority.SimpleGrantedAuthority;
|
|
|
+import org.springframework.security.core.context.SecurityContextHolder;
|
|
|
+import org.springframework.security.oauth2.provider.authentication.OAuth2AuthenticationDetails;
|
|
|
+
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @Description: 用户工具类
|
|
|
+ * @author: gaodm
|
|
|
+ * @time: 2018/8/3 17:46
|
|
|
+ */
|
|
|
+public class SysUserUtils {
|
|
|
+
|
|
|
+ private static final String AUTHORIZATION = "authorization";
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取当前请求的token
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static String getCurrentToken() {
|
|
|
+ return HttpUtils.getHeaders(HttpUtils.getHttpServletRequest()).get(AUTHORIZATION);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取当前请求的用户名称
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static String getCurrentPrinciple() {
|
|
|
+ return (String) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取当前请求的用户ID
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static String getCurrentPrincipleID() {
|
|
|
+ OAuth2AuthenticationDetails oauthDetails = (OAuth2AuthenticationDetails) SecurityContextHolder.getContext().getAuthentication().getDetails();
|
|
|
+ Map<String, Object> details = (Map<String, Object>) oauthDetails.getDecodedDetails();
|
|
|
+ return details.get("user_id").toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取当前请求用户的医院ID
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static String getCurrentHospitalID() {
|
|
|
+ OAuth2AuthenticationDetails oauthDetails = (OAuth2AuthenticationDetails) SecurityContextHolder.getContext().getAuthentication().getDetails();
|
|
|
+ Map<String, Object> details = (Map<String, Object>) oauthDetails.getDecodedDetails();
|
|
|
+ return details.get("hosp_id").toString();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 判读当前token用户是否为接口所需的参数username
|
|
|
+ *
|
|
|
+ * @param username
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static boolean isMyself(String username) {
|
|
|
+ return username.equals(getCurrentPrinciple());
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取当前请求Authentication
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static Authentication getCurrentAuthentication() {
|
|
|
+ return SecurityContextHolder.getContext().getAuthentication();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取当前请求的权限信息
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static List<SimpleGrantedAuthority> getCurrentAuthorities() {
|
|
|
+ return (List<SimpleGrantedAuthority>) SecurityContextHolder.getContext().getAuthentication().getAuthorities();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param role
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static boolean hasRole(String role) {
|
|
|
+ if (!role.startsWith("ROLE_")) {
|
|
|
+ role = "ROLE_" + role;
|
|
|
+ }
|
|
|
+ boolean hasRole = false;
|
|
|
+ List<SimpleGrantedAuthority> list = getCurrentAuthorities();
|
|
|
+ for (SimpleGrantedAuthority s : list) {
|
|
|
+ if (role.equals(s.getAuthority())) {
|
|
|
+ hasRole = true;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return hasRole;
|
|
|
+ }
|
|
|
+
|
|
|
+}
|