I had problems with user_cas.
The app was not usable: the user did not login. No error.
The settings page was not usable: could not save any settings
So, here is a proposed patch that works for me.
My only hesitation is that I replaced
OC_User::userExists($uid) with OC_User_Database::userExists($uid)
because the first always returned true even if the user did not exist in
the database.
That happened because the user was always cached. Something is wrong
with this logic...
Anyway here is the patch.
diff -wrNu /tmp/apps/user_cas/lib/hooks.php user_cas/lib/hooks.php
--- /tmp/apps/user_cas/lib/hooks.php 2014-03-31 12:41:39.573647766 +0300
+++ user_cas/lib/hooks.php 2014-03-31 12:31:51.778568154 +0300
@@ -35,7 +35,7 @@
if ($cas_uid == $uid) {
if (array_key_exists($casBackend->mailMapping,
$attributes)) {
- $cas_email =
$attributes[$casBackend->mailMapping][0];
+ $cas_email =
$attributes[$casBackend->mailMapping];
}
if (array_key_exists($casBackend->groupMapping, $attributes)) {
@@ -46,17 +46,18 @@
OC_Log::write('cas','Using default group
"'.$casBackend->defaultGroup.'" for the user: '.$uid, OC_Log::DEBUG);
}
- if (!OC_User::userExists($uid)) {
+ if (!OC_User_Database::userExists($uid)) {
if (preg_match( '/[^a-zA-Z0-9
_\.@\-]/', $uid)) {
OC_Log::write('cas','Invalid username "'.$uid.'",
allowed chars "a-zA-Z0-9" and "_.@-" ',OC_Log::DEBUG);
return false;
}
else {
- $random_password =
OC_Util::generate_random_bytes(20);
+ $random_password =
OC_Util::generateRandomBytes(20);
OC_Log::write('cas','Creating
new user: '.$uid, OC_Log::DEBUG);
- OC_User::createUser($uid,
$random_password);
+ $user = new OC_User_Database;
+ $user->createUser($uid,
$random_password);
- if(OC_User::userExists($uid)) {
+
if(OC_User_Database::userExists($uid)) {
if (isset($cas_email)) {
update_mail($uid, $cas_email);
diff -wrNu /tmp/apps/user_cas/settings.php user_cas/settings.php
--- /tmp/apps/user_cas/settings.php 2014-03-31 12:41:39.573647766 +0300
+++ user_cas/settings.php 2014-03-31 12:40:19.876636969 +0300
@@ -23,7 +23,7 @@
OC_Util::checkAdminUser();
-$params = array('cas_server_version', 'cas_server_hostname', 'cas_server_port', 'cas_server_path', 'cas_autocreate', 'cas_update_user_data', 'cas_protected_groups', 'cas_default_group', 'cas_email_mapping', 'cas_group_mapping');
+$params = array('cas_server_version', 'cas_server_hostname',
'cas_server_port', 'cas_server_path', 'cas_autocreate', 'cas_update_user_data',
'cas_protected_groups', 'cas_default_group', 'cas_email_mapping',
'cas_group_mapping', 'cas_cert_path');
OCP\Util::addscript('user_cas', 'settings');
@@ -57,7 +57,7 @@
$tmpl->assign( 'cas_server_hostname', OCP\Config::getAppValue('user_cas',
'cas_server_hostname', ''));
$tmpl->assign( 'cas_server_port', OCP\Config::getAppValue('user_cas',
'cas_server_port', '443'));
$tmpl->assign( 'cas_server_path', OCP\Config::getAppValue('user_cas',
'cas_server_path', '/cas'));
-$tmpl->assign( 'cas_cert_path', OCP\Config::getAppValue('user_cas',
'cas_cer_path', ''));
+$tmpl->assign( 'cas_cert_path', OCP\Config::getAppValue('user_cas',
'cas_cert_path', ''));
$tmpl->assign( 'cas_autocreate', OCP\Config::getAppValue('user_cas', 'cas_autocreate', 0));
$tmpl->assign( 'cas_update_user_data', OCP\Config::getAppValue('user_cas',
'cas_update_user_data', 0));
diff -wrNu /tmp/apps/user_cas/templates/settings.php
user_cas/templates/settings.php
--- /tmp/apps/user_cas/templates/settings.php 2014-03-31 12:41:39.573647766
+0300
+++ user_cas/templates/settings.php 2014-03-28 17:08:55.672215644 +0200
@@ -13,20 +13,10 @@
<fieldset id="casSettings-1">
<p><label for="cas_server_version"><?php p($l->t('CAS Server
Version'));?></label>
<select id="cas_server_version" name="cas_server_version">
- <?php
- if($_['cas_server_version'] == '2.0') {
- ?>
- <option value="2.0" selected>CAS 2.0</option>
- <option value="1.0">CAS 1.0</option>
- <?php
- }
- else {
- ?>
- <option value="2.0">CAS 2.0</option>
- <option value="1.0" selected>CAS 1.0</option>
- <?php
- }
- ?>
+ <?php $version = $_['cas_server_version'];?>
+ <option value="S1" <?php echo $version=='S1'?'selected':'';
?>>SAML 1.1</option>
+ <option value="2.0" <?php echo $version=='2.0'?'selected':'';
?>>CAS 2.0</option>
+ <option value="1.0" <?php echo $version=='1.0'?'selected':'';
?>>CAS 1.0</option>
</select>
</p>
<p><label for="cas_server_hostname"><?php p($l->t('CAS Server Hostname'));?></label><input type="text"
id="cas_server_hostname" name="cas_server_hostname" value="<?php p($_['cas_server_hostname']); ?>"></p>
@@ -34,7 +24,6 @@
<p><label for="cas_server_path"><?php p($l->t('CAS Server Path'));?></label><input type="text"
id="cas_server_path" name="cas_server_path" value="<?php p($_['cas_server_path']); ?>"></p>
<p><label for="cas_cert_path"><?php p($l->t('Certification file path (.crt). Leave empty if dont want to
validate'));?></label><input type="text" id="cas_cert_path" name="cas_cert_path" value="<?php p($_['cas_cert_path']);
?>"></p>
-
</fieldset>
<fieldset id="casSettings-2">
<p><label for="cas_autocreate"><?php p($l->t('Autocreate user after cas login?'));?></label><input type="checkbox"
id="cas_autocreate" name="cas_autocreate" <?php print_unescaped((($_['cas_autocreate'] != false) ? 'checked="checked"' : ''));
?>></p>
@@ -46,6 +35,7 @@
<p><label for="cas_email_mapping"><?php p($l->t('Email'));?></label><input type="text"
id="cas_email_mapping" name="cas_email_mapping" value="<?php p($_['cas_email_mapping']); ?>" /></p>
<p><label for="cas_group_mapping"><?php p($l->t('Group'));?></label><input type="text"
id="cas_group_mapping" name="cas_group_mapping" value="<?php p($_['cas_group_mapping']); ?>" /></p>
</fieldset>
+ <input type="hidden" value="<?php p($_['requesttoken']); ?>"
name="requesttoken" />
<input type="submit" value="Save" />
</div>
_______________________________________________
Devel mailing list
[email protected]
http://mailman.owncloud.org/mailman/listinfo/devel