package com.ejie.m62fb.util;

import org.springframework.security.core.context.SecurityContextHolder;

import com.ejie.aa34b.security.model.Rol;
import com.ejie.aa34b.security.model.RolGrantedAuthority;
import com.ejie.m62fb.model.tipos.AbstractTipoGenericoR09;
import com.ejie.x38.security.UserCredentials;

/**
 * UtilSeguridad
 * 
XXXX
 */
public class UtilSeguridad {

	/**
	 * Devuelve el objeto UsuarioConectado guardado en el contexto.
	 * 
	 * @return UserCredentials
	 */
	private static UserCredentials getUsuarioConectado() {
		return (UserCredentials) SecurityContextHolder.getContext()
				.getAuthentication().getCredentials();
	}

	/**
	 * Devuelve el objeto UsuarioConectado guardado en el contexto.
	 * 
	 * @return UsuarioConectado
	 */
	public static String getNombreUsuarioConectado() {
		UserCredentials usuarioConectado = new UserCredentials();
		usuarioConectado.setUserName(getUsuarioConectado().getUserName());
		
		// UserCredentials usuarioConectado =
		// UtilSeguridad.getUsuarioConectado();
		return usuarioConectado.getUserName();
	}
	
	/**
	 * Comprueba si el usuario conectado tiene el <code>Rol</code>
	 * @param role
	 * @return
	 */
	public static  boolean bUsuarioTieneRol(String role){
		for (Object roleSecurity : org.springframework.security.core.context.SecurityContextHolder.getContext().getAuthentication().getAuthorities()) {
			if (roleSecurity instanceof RolGrantedAuthority ){
				
				Rol rol = ((RolGrantedAuthority)roleSecurity).getRol();
				if(rol.getRoleCode().equalsIgnoreCase(role)){
					return true;
				}
					
			}
			
		}
		return false;
	}
}