forked from ruoyi/RuoYi-Vue
		
	
		
			
				
	
	
		
			121 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			121 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| package com.ruoyi.common.utils;
 | |
| 
 | |
| import org.springframework.security.core.Authentication;
 | |
| import org.springframework.security.core.context.SecurityContextHolder;
 | |
| import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 | |
| import com.ruoyi.common.constant.HttpStatus;
 | |
| import com.ruoyi.common.core.domain.model.LoginUser;
 | |
| import com.ruoyi.common.exception.ServiceException;
 | |
| 
 | |
| /**
 | |
|  * 安全服务工具类
 | |
|  * 
 | |
|  * @author ruoyi
 | |
|  */
 | |
| public class SecurityUtils
 | |
| {
 | |
|     /**
 | |
|      * 用户ID
 | |
|      **/
 | |
|     public static Long getUserId()
 | |
|     {
 | |
|         try
 | |
|         {
 | |
|             return getLoginUser().getUserId();
 | |
|         }
 | |
|         catch (Exception e)
 | |
|         {
 | |
|             throw new ServiceException("获取用户ID异常", HttpStatus.UNAUTHORIZED);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * 获取部门ID
 | |
|      **/
 | |
|     public static Long getDeptId()
 | |
|     {
 | |
|         try
 | |
|         {
 | |
|             return getLoginUser().getDeptId();
 | |
|         }
 | |
|         catch (Exception e)
 | |
|         {
 | |
|             throw new ServiceException("获取部门ID异常", HttpStatus.UNAUTHORIZED);
 | |
|         }
 | |
|     }
 | |
|     
 | |
|     /**
 | |
|      * 获取用户账户
 | |
|      **/
 | |
|     public static String getUsername()
 | |
|     {
 | |
|         try
 | |
|         {
 | |
|             return getLoginUser().getUsername();
 | |
|         }
 | |
|         catch (Exception e)
 | |
|         {
 | |
|             throw new ServiceException("获取用户账户异常", HttpStatus.UNAUTHORIZED);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * 获取用户
 | |
|      **/
 | |
|     public static LoginUser getLoginUser()
 | |
|     {
 | |
|         try
 | |
|         {
 | |
|             return (LoginUser) getAuthentication().getPrincipal();
 | |
|         }
 | |
|         catch (Exception e)
 | |
|         {
 | |
|             throw new ServiceException("获取用户信息异常", HttpStatus.UNAUTHORIZED);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * 获取Authentication
 | |
|      */
 | |
|     public static Authentication getAuthentication()
 | |
|     {
 | |
|         return SecurityContextHolder.getContext().getAuthentication();
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * 生成BCryptPasswordEncoder密码
 | |
|      *
 | |
|      * @param password 密码
 | |
|      * @return 加密字符串
 | |
|      */
 | |
|     public static String encryptPassword(String password)
 | |
|     {
 | |
|         BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
 | |
|         return passwordEncoder.encode(password);
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * 判断密码是否相同
 | |
|      *
 | |
|      * @param rawPassword 真实密码
 | |
|      * @param encodedPassword 加密后字符
 | |
|      * @return 结果
 | |
|      */
 | |
|     public static boolean matchesPassword(String rawPassword, String encodedPassword)
 | |
|     {
 | |
|         BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
 | |
|         return passwordEncoder.matches(rawPassword, encodedPassword);
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * 是否为管理员
 | |
|      * 
 | |
|      * @param userId 用户ID
 | |
|      * @return 结果
 | |
|      */
 | |
|     public static boolean isAdmin(Long userId)
 | |
|     {
 | |
|         return userId != null && 1L == userId;
 | |
|     }
 | |
| }
 | 
