diff --git a/info.textgrid.middleware.tgauth.webauth/WebAuthN/PutAttributes.php b/info.textgrid.middleware.tgauth.webauth/WebAuthN/PutAttributes.php index 18c8b66eae17f2239d3f77b0e132afcf8f424292..a6eb82c3fe2c4fa504ee5dc1fb23c358482bb179 100755 --- a/info.textgrid.middleware.tgauth.webauth/WebAuthN/PutAttributes.php +++ b/info.textgrid.middleware.tgauth.webauth/WebAuthN/PutAttributes.php @@ -37,18 +37,21 @@ $rbac = new RBAC ( $configfile, $authZinstance ); $Sid = $_REQUEST["Sid"]; $attributes = $rbac->getUserAttributes( $Sid ); -$newattributes = array(); +// we always need one more argument, as PHP'S SOAP lib simplifies structures +// s.t. if we only want to modify exactly one attr, +// (it turns a:1{o:2{name,n,value,v}} into a:2{name,n,value,v}) +$newattributes = array("gnuelpfix"); $thedisplayname = "anonymous"; //phpinfo(); foreach ($attributes as $a) { if ($util->isBoolean($a)) { - if (isset ( $_REQUEST[$a->name]) && $_REQUEST[$a->name] == TRUE) { + if (isset ( $_REQUEST[$a->name] ) && $_REQUEST[$a->name] === "on" && $a->value !== "TRUE") { $na = new StdClass(); $na->name = $a->name; $na->value = "TRUE"; $newattributes[] = $na; - } else { + } else if ($a->value === "TRUE" && !isset ( $_REQUEST[$a->name])) { $na = new StdClass(); $na->name = $a->name; $na->value = "FALSE"; @@ -69,7 +72,7 @@ foreach ($attributes as $a) { } } -//$file = fopen ("/tmp/xxxUR.log", "w+"); +//$file = fopen ("/tmp/xxxPut.log", "w+"); //fwrite ($file, "putting these attrs: ". serialize ($newattributes) ."\n"); //fclose ($file); diff --git a/info.textgrid.middleware.tgauth.webauth/tglib/LDAP.class.php b/info.textgrid.middleware.tgauth.webauth/tglib/LDAP.class.php index 64646c1365bf97caae6f57d051c9637d40714f65..d19f5a77485116d154d9229a2e13eae5e20090f3 100644 --- a/info.textgrid.middleware.tgauth.webauth/tglib/LDAP.class.php +++ b/info.textgrid.middleware.tgauth.webauth/tglib/LDAP.class.php @@ -93,7 +93,7 @@ class LDAP { $sendOutMail = FALSE; foreach ($attrHash as $a) { - if (in_array($a->name, array_keys ($this->AttributeMap))) { + if (is_object($a) && in_array($a->name, array_keys ($this->AttributeMap))) { $arrModify[$this->AttributeMap[$a->name]][] = $a->value; $needsModification = TRUE; if ($a->name === "mail") { diff --git a/info.textgrid.middleware.tgauth.webauth/tglib/WebUtils.class.php b/info.textgrid.middleware.tgauth.webauth/tglib/WebUtils.class.php index 41284c2a9e88bb11ac07df47268bb01badd7e04a..e65db1380597493acd4a3eaf18bfa04654d5a4c9 100644 --- a/info.textgrid.middleware.tgauth.webauth/tglib/WebUtils.class.php +++ b/info.textgrid.middleware.tgauth.webauth/tglib/WebUtils.class.php @@ -244,7 +244,7 @@ class WebUtils { echo "<tr><td>".$a->displayname." ${mandatory}</td>"; if ($this->isBoolean ($a)) { - echo "<td><input type=\"checkbox\" name=\"". $a->name . "\" value=\"yes\" ${checked}/></td>\n"; + echo "<td><input type=\"checkbox\" name=\"". $a->name . "\" value=\"on\" ${checked}/></td>\n"; } else if ($this->isISO3166format ($a)) { if ($oldval === "") {$oldval = "DE";} // pre-assume German Scholars echo "<td>";