php oauth openid mediawiki google-apps

php - Extensión de MediaWiki: GoogleAppsAuthentification múltiples dominios



oauth openid (1)

He estado usando la gran extensión GoogleAppsAuthentification para mediawiki para permitir a mis usuarios iniciar sesión con su cuenta de Google Apps. Recientemente agregamos otro dominio a nuestras aplicaciones de Google y me gustaría ofrecerles a esos usuarios la opción de iniciar sesión en nuestro wiki con su dominio de Google Apps.

Fuera de la caja, esto no es posible con la extensión, sin embargo, parece bastante trivial agregar soporte para múltiples dominios.

La idea es solicitar al usuario una lista desplegable de dominios disponibles antes de ejecutar la redirección a la pantalla de inicio de sesión de Google.

Mi conocimiento de la API de mediawiki es bastante limitado y podría usar algunos punteros.

la extensión se engancha en el enganche UserLoadFromSession, que se llama antes del enganche UserLoginForm. Tendría que agregar código a esta función para pedirle al usuario un dominio y volver a esta función, pasando el dominio seleccionado a getGoogleAccount ()

// in LocalSettings.py $wgDefaultUserOptions[''GoogleAppsDomainList''] = array("domain.com", "otherdomain.com"); // in GoogleAppsAuthentication.php function fnGoogleAppsAuthenticateHook($user, &$result){ global $IP, $wgLanguageCode, $wgRequest, $wgOut, $wgDefaultUserOptions; if (isset($_REQUEST["title"])){ $lg = Language::factory($wgLanguageCode); if ($_REQUEST["title"] == $lg->specialPage("Userlogin")){ // this is where we need to add the prompt // that asks the user which domain to chose $domain = getDomainFromUser($wgDefaultUserOptions[''GoogleAppsDomainList'']) // Setup for a web request require_once("$IP/includes/WebStart.php"); // Here we do our stuff $googleAccount = getGoogleAccount(''title='' . $_REQUEST["title"], $domain); // whole bunch of code here that won''t be affected by our change ... // end whole bunch of code that won''t be affected by our change } else if ($_REQUEST["title"] == $lg->specialPage("Userlogout")) { session_unset(); // Logout $user->logout(); } } // Back to MediaWiki home after login return true; } function getDomainFromUser($domainList) { // render page with dropdown containing domains in $domainList // get selected dropdown on page submit // return selected domain }

Necesito ayuda con la función getDomainFromUser (). No sé cómo redirigir a una nueva página que muestra un menú desplegable poblado por una matriz definida en LocalSettings.py y devolver el valor seleccionado a la función fnGoogleAppsAuthenticateHook.

Cualquier ayuda sería sinceramente apreciada. Creo que muchas más personas pueden beneficiarse de esta funcionalidad adicional agregada a esta extensión.


A menos que haya entendido mal su necesidad:

Si has habilitado $ _SESSION:

en "// en LocalSettings.py"

Línea 1 de código: arrancar motor de sesión

<?php session_start(); ?>

Código en el punto de definición de la matriz: tome la matriz y cópiela en la variable de sesión para que otras páginas, funciones, etc. puedan acceder a ella.

<?php $wgDefaultUserOptions[''GoogleAppsDomainList''] = array("domain.com", "otherdomain.com"); $_SESSION[''a'']=$wgDefaultUserOptions[''GoogleAppsDomainList'']; ?>

En la página donde desea que se produzca la selección desplegable:

Línea 1 de código: arrancar motor de sesión

<?php session_start(); ?>

@punto donde necesitas selección desplegable

<Form action="**processing page**" method="post"> <select name="Domain-Choice" > <?php foreach ($_SESSION[''a''] as $key) {echo "<option value=/"".$key."/">".$key."</option>";} ?> </select> </Form>

Establezca la acción de formulario en la página de procesamiento de PHP que desee, $ _POST [''Domain-Choice''] tendrá un valor seleccionado por el usuario en el menú desplegable que se completó desde la matriz almacenada en la variable de sesión, copiado de la matriz establecida en LocalSettings.py ($ wgDefaultUserOptions [''GoogleAppsDomainList''])

Si entendí mal lo que necesitas, lo siento de antemano.