Distinta autenticación dependiendo del punto de acceso

Hola Agustin, tengo una posible solución:

Lo que podes hacer es que los ingresantes accedan al 3W por un bloque de acceso, y los de grado por otro. Eso lo podes hacer en el archivo instalacion/alias.conf:


Alias /3w/ingresantes "<PATH-3W>/src/siu/www"
Alias /3w/grado "<PATH-3W>/src/siu/www"

<Location /3w/ingresantes>
        SetEnv ACC_ID 3w_ingresantes
	SetEnvIf always_match ^ ACC_ALIAS=/3w/ingresantes
</Location>

<Location /3w/grado>
        SetEnv ACC_ID 3w_grado
	SetEnvIf always_match ^ ACC_ALIAS=/3w/grado
</Location>

Luego en el archivo instalacion/login.php definís los dos tipos de login (form y ldap):


	'form'   => array(
		'activo'     => true,
		'clase'      => 'modelo\\autenticacion\\auth_form',
		'parametros' => array(	)
	),
	
	'ldap' => array(
		'activo' => true,
		'clase' => 'modelo\\autenticacion\\auth_ldap',
		'parametros' => array(
			'server' => 'localhost/ldap', //Servidor LDAP
			'user' => 'admin', //Usuario
			'dn' => 'dc=siu,dc=edu', //DN
			'bind_dn' => 'cn=admin,dc=uni,dc=edu', //Usuario DN
			'bind_pass' => 'admin', //Password
			'filter' => 'uid=*' //Busqueda de usuarios.
		)
	),

Pero el truco viene ahora, en el archivo vendor/siu/chulupi-framework/src/SIU/Chulupi/acceso/LoginManager.php función __construct deberia quedar como sigue:


	function __construct()
	{
		$conf = kernel::proyecto()->get_login_config();
		$bloque_acceso = kernel::proyecto()->get_bloque_acceso();
		if ($bloque_acceso == '3w_grado') {
			unset($conf['form']);
			$conf['form'] = $conf['ldap'];
			unset($conf['ldap']);
		}
		
		$this->fuentes = new FuentesAutenticacion($conf);
	}

Este ultimo archivo esta dentro de vendor y no lo vas a poder subir al colab, pero si podes hacer un Script de Composer en el archivo src/siu/Install.php que haga dicha modificacion, y luego vas a poder subir dicho cambio.

NOTA: El archivo src/siu/Install.php no es personalizable, cuando actualicen de versión deberán replicar dicho cambio en la misma.

saludos.