All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.luues.security.util.SecurityUtils Maven / Gradle / Ivy

package com.luues.security.util;

import com.luues.core.core.SpringContextHolder;
import com.luues.security.core.entity.SysUser;
import com.luues.security.core.interfaces.SecurityTokenUserRolePermissionsUpdateHandler;
import lombok.experimental.UtilityClass;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.context.SecurityContextHolder;
import java.util.Collection;
import java.util.List;
import java.util.stream.Collectors;

/**
 * 安全工具类
 *
 * @author Mr-Wu
 */
@UtilityClass
@Slf4j
public class SecurityUtils {

	/**
	 * 获取Authentication
	 */
	public Authentication getAuthentication() {
		return SecurityContextHolder.getContext().getAuthentication();
	}

	/**
	 * 获取用户
	 */
	public SysUser getUser(Authentication authentication) {
		try {
			SysUser sysUser = (SysUser) authentication.getPrincipal();
			sysUser.setAuthorities((Collection) authentication.getAuthorities());
			return sysUser;
		}catch (Exception e){
			if(!authentication.getPrincipal().toString().equals("anonymousUser")){
				log.error("转换用户信息失败,数据:{}, 错误:{}", authentication.getPrincipal(), e.getMessage());
			}
			return null;
		}
	}

	/**
	 * 获取用户
	 */
	public SysUser getUser() {
		Authentication authentication = getAuthentication();
		if (authentication == null) {
			return null;
		}
		return getUser(authentication);
	}

	public String getUserId(){
		SysUser user = getUser();
		if(user == null){
			return null;
		}
		return user.getId();
	}

	public Integer getIntegerUserId() {
        return Integer.valueOf(getUserId());
	}

	public Long getLongUserId(){
		return Long.valueOf(getUserId());
	}


	/**
	 * 获取用户角色信息
	 *
	 * @return 角色集合
	 */
	public List getRoles() {
		return getAuthentication().getAuthorities().stream().map(a -> a.getAuthority()).collect(Collectors.toList());
	}

	/**
	 * 获取用户权限信息
	 *
	 * @return 权限集合
	 */
	public List getPermissions() {
		return getUser().getPermissions().stream().map(p -> p.getAuthority()).collect(Collectors.toList());
	}

	/**
	 * 获取指定用户基本信息  默认只能认证项目里面使用  根据配置redis前缀决定
	 * @param id 用户id集合
	 * @return  sysUser 用户基本信息
	 */
	public SysUser getUser(String id){
		SecurityTokenUserRolePermissionsUpdateHandler handler = SpringContextHolder.getApplicationContext().getBean(SecurityTokenUserRolePermissionsUpdateHandler.class);
		return handler.getUser(id);
	}

	/**
	 * 更新用户基本信息  默认只能认证项目里面使用  根据配置redis前缀决定
	 * @param id 用户id集合
	 * @param sysUser 用户基本信息
	 */
	public boolean updateUser(String id, SysUser sysUser){
		SecurityTokenUserRolePermissionsUpdateHandler handler = SpringContextHolder.getApplicationContext().getBean(SecurityTokenUserRolePermissionsUpdateHandler.class);
		return handler.updateUser(id, sysUser);
	}

	/**
	 * 更新用户基本信息 默认只能认证项目里面使用  根据配置redis前缀决定
	 * @param id 用户id集合
	 * @param sysUser 用户基本信息
	 * @param source 来源 DeviceUtils.SOURCE_PC 。。。
	 */
	public boolean updateUser(String id, SysUser sysUser, String source){
		SecurityTokenUserRolePermissionsUpdateHandler handler = SpringContextHolder.getApplicationContext().getBean(SecurityTokenUserRolePermissionsUpdateHandler.class);
		return handler.updateUser(id, sysUser, source);
	}

	/**
	 * 更新用户info信息  默认只能认证项目里面使用  根据配置redis前缀决定
	 * @param ids 用户id集合
	 * @param info info信息
	 */
	public boolean updateInfo(List ids, String info){
		SecurityTokenUserRolePermissionsUpdateHandler handler = SpringContextHolder.getApplicationContext().getBean(SecurityTokenUserRolePermissionsUpdateHandler.class);
		return handler.updateInfo(ids, info);
	}

	/**
	 * 更新用户info信息
	 * @param ids 用户id集合
	 * @param info info信息
	 * @param source 来源 DeviceUtils.SOURCE_PC 。。。
	 */
	public boolean updateInfo(List ids, String info, String source){
		SecurityTokenUserRolePermissionsUpdateHandler handler = SpringContextHolder.getApplicationContext().getBean(SecurityTokenUserRolePermissionsUpdateHandler.class);
		return handler.updateInfo(ids, info, source);
	}

	/**
	 * 更新用户权限组
	 * @param ids 用户id集合
	 * @param roles 权限组集合
	 */
	public boolean updateRoles(List ids, List roles){
		SecurityTokenUserRolePermissionsUpdateHandler handler = SpringContextHolder.getApplicationContext().getBean(SecurityTokenUserRolePermissionsUpdateHandler.class);
		return handler.updateRoles(ids, roles);
	}

	/**
	 * 更新用户权限组
	 * @param ids 用户id集合
	 * @param roles 权限组集合
	 * @param source 来源 DeviceUtils.SOURCE_PC 。。。
	 */
	public boolean updateRoles(List ids, List roles, String source){
		SecurityTokenUserRolePermissionsUpdateHandler handler = SpringContextHolder.getApplicationContext().getBean(SecurityTokenUserRolePermissionsUpdateHandler.class);
		return handler.updateRoles(ids, roles, source);
	}

	/**
	 * 更新用户权限组
	 * @param ids 用户id集合
	 * @param permissions 操作标识集合
	 */
	public boolean updatePermissions(List ids, List permissions){
		SecurityTokenUserRolePermissionsUpdateHandler handler = SpringContextHolder.getApplicationContext().getBean(SecurityTokenUserRolePermissionsUpdateHandler.class);
		return handler.updatePermissions(ids, permissions);
	}

	/**
	 * 更新用户权限组
	 * @param ids 用户id集合
	 * @param permissions 操作标识集合
	 * @param source 来源 DeviceUtils.SOURCE_PC 。。。
	 */
	public boolean updatePermissions(List ids, List permissions, String source){
		SecurityTokenUserRolePermissionsUpdateHandler handler = SpringContextHolder.getApplicationContext().getBean(SecurityTokenUserRolePermissionsUpdateHandler.class);
		return handler.updatePermissions(ids, permissions, source);
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy