using one list of auth-types (in order of importance) and detecting additional ones in the filesystem

This commit is contained in:
Ralf Becker 2010-09-10 09:26:17 +00:00
parent 741a12bef2
commit 871e5718af
3 changed files with 86 additions and 41 deletions

View File

@ -59,6 +59,9 @@ class setup_cmd_config extends setup_cmd
$this->check_installed($this->domain,15,$this->verbose); $this->check_installed($this->domain,15,$this->verbose);
// fixing authtypes in self::$options
self::auth_types(true);
$values = array(); $values = array();
if ($this->arguments) // we have command line arguments if ($this->arguments) // we have command line arguments
{ {
@ -317,6 +320,11 @@ class setup_cmd_config extends setup_cmd
{ {
if (is_array($data) && isset($data['allowed'])) if (is_array($data) && isset($data['allowed']))
{ {
if ($data['name'] == 'auth_type')
{
$options[$data['name']] = self::auth_types();
continue;
}
foreach($data['allowed'] as $label => $value) foreach($data['allowed'] as $label => $value)
{ {
if (is_int($label)) if (is_int($label))
@ -332,6 +340,47 @@ class setup_cmd_config extends setup_cmd
return $options; return $options;
} }
/**
* Read auth-types (existing auth backends) from filesystem and fix our $options array
*
* @return array
*/
static function auth_types()
{
// default backends in order of importance
static $auth_types = array(
'sql' => 'SQL',
'ldap' => 'LDAP',
'mail' => 'Mail',
'ads' => 'Active Directory',
'http' => 'HTTP',
'fallback' => 'Fallback LDAP --> SQL',
'sqlssl' => 'SQL / SSL',
);
static $scan_done;
if (!$scan_done++)
{
// now add auth backends found in filesystem
foreach(scandir(EGW_INCLUDE_ROOT.'/phpgwapi/inc') as $class)
{
if (preg_match('/^class\.auth_([a-z]+)\.inc\.php$/',$class,$matches) &&
!isset($auth_types[$matches[1]]))
{
$auth_types[$matches[1]] = ucfirst($matches[1]);
}
}
foreach(self::$options['--account-auth'] as &$param)
{
if ($param['name'] == 'auth_type')
{
$param['allowed'] = array_keys($auth_types);
break;
}
}
}
return $auth_types;
}
/** /**
* Return the defaults from the $options array * Return the defaults from the $options array
* *

View File

@ -239,20 +239,41 @@ function sql_passwdhashes($config)
*/ */
function mail_login_type($config) function mail_login_type($config)
{ {
$types = emailadmin_ui::getIMAPLoginTypes('cyrusimap'); return _options_from(emailadmin_ui::getIMAPLoginTypes('cyrusimap'),$config['mail_login_type']);
unset($types['admin']); }
foreach($types as $value => $label) /**
* Make auth-types from setup_cmd_config available
*
* @param array $config
* @return string
*/
function auth_type($config)
{ {
if($config['mail_login_type'] == $value) return _options_from(setup_cmd_config::auth_types(),$config['auth_type']);
{
$selected = ' selected="selected"';
} }
else function auth_type_syncml($config)
{ {
$selected = ''; return _options_from(setup_cmd_config::auth_types(),$config['auth_type_syncml']);
} }
$out .= '<option value="' . $value . '"' . $selected . '>' . $label . '</option>' . "\n"; function auth_type_groupdav($config)
{
return _options_from(setup_cmd_config::auth_types(),$config['auth_type_groupdav']);
}
/**
* Returns options string
*
* @param array $options value => label pairs
* @param string $selected value of selected optino
* @return string
*/
function _options_from(array $options,$selected)
{
foreach($options as $value => $label)
{
$out .= '<option value="' . htmlspecialchars($value) . '"' .
($selected == $value ? ' selected="selected"' : '') . '>' . $label . '</option>' . "\n";
} }
return $out; return $out;
} }

View File

@ -213,16 +213,7 @@
<td>{lang_Select_which_type_of_authentication_you_are_using}:</td> <td>{lang_Select_which_type_of_authentication_you_are_using}:</td>
<td> <td>
<select name="newsettings[auth_type]"> <select name="newsettings[auth_type]">
<option value="sql"{selected_auth_type_sql}>SQL</option> {hook_auth_type}
<option value="sqlssl"{selected_auth_type_sqlssl}>SQL / SSL</option>
<option value="ldap"{selected_auth_type_ldap}>LDAP</option>
<option value="ads"{selected_auth_type_ads}>ADS</option>
<option value="mail"{selected_auth_type_mail}>Mail</option>
<option value="http"{selected_auth_type_http}>HTTP</option>
<option value="nis"{selected_auth_type_nis}>NIS</option>
<option value="pam"{selected_auth_type_pam}>PAM</option>
<option value="cas"{selected_auth_type_cas}>CAS</option>
<option value="fallback"{selected_auth_type_fallback}>Fallback LDAP -> SQL</option>
</select> </select>
</td> </td>
</tr> </tr>
@ -232,15 +223,7 @@
<td> <td>
<select name="newsettings[auth_type_syncml]"> <select name="newsettings[auth_type_syncml]">
<option value="">{lang_Standard,_as_defined_above}</option> <option value="">{lang_Standard,_as_defined_above}</option>
<option value="sql"{selected_auth_type_syncml_sql}>SQL</option> {hook_auth_type_syncml}
<option value="sqlssl"{selected_auth_type_syncml_sqlssl}>SQL / SSL</option>
<option value="ldap"{selected_auth_type_syncml_ldap}>LDAP</option>
<option value="ads"{selected_auth_type_syncml_ads}>ADS</option>
<option value="mail"{selected_auth_type_syncml_mail}>Mail</option>
<option value="http"{selected_auth_type_syncml_http}>HTTP</option>
<option value="nis"{selected_auth_type_syncml_nis}>NIS</option>
<option value="pam"{selected_auth_type_syncml_pam}>PAM</option>
<option value="fallback"{selected_auth_type_fallback}>Fallback LDAP -> SQL</option>
</select> </select>
</td> </td>
</tr> </tr>
@ -250,15 +233,7 @@
<td> <td>
<select name="newsettings[auth_type_groupdav]"> <select name="newsettings[auth_type_groupdav]">
<option value="">{lang_Standard,_as_defined_above}</option> <option value="">{lang_Standard,_as_defined_above}</option>
<option value="sql"{selected_auth_type_groupdav_sql}>SQL</option> {hook_auth_type_groupdav}
<option value="sqlssl"{selected_auth_type_groupdav_sqlssl}>SQL / SSL</option>
<option value="ldap"{selected_auth_type_groupdav_ldap}>LDAP</option>
<option value="ads"{selected_auth_type_groupdav_ads}>ADS</option>
<option value="mail"{selected_auth_type_groupdav_mail}>Mail</option>
<option value="http"{selected_auth_type_groupdav_http}>HTTP</option>
<option value="nis"{selected_auth_type_groupdav_nis}>NIS</option>
<option value="pam"{selected_auth_type_groupdav_pam}>PAM</option>
<option value="fallback"{selected_auth_type_fallback}>Fallback LDAP -> SQL</option>
</select> </select>
</td> </td>
</tr> </tr>