Loading...
 
Skip to main content

Category: User Administration (Registration, Login & Banning)

User Administration (Registration, Login & Banning)
Show subcategories objects

Name Type
Fix dependency of LDAP group sync to external directory
{syntax type="tiki" editor="plain"}
LDAP group synchronisation is dependent on the "corresponding user attribute", a setting which is only needed if an external directory is used for group synchronisation.

The fix is simple - the combination of if-staments just need to be adjusted slightly - see patch.
tracker item
Enhancement: Add option to select whether LDAP group synchronisation creates new groups or only sync existing ones
When groups are synchronised with a big LDAP organisation many empty groups may end up in Tikiwiki.

This enhancement / patch adds an option to let the administrator of a tikiwiki instance decide whether during synchronisation of groups only the user assignments to existing groups will be done or if non-existent groups will be created in tikiwiki.

The default behaviour - as of now - is that when a LDAP user logs in all the groups he belongs to will be created in tikiwiki and he is being added as a member of these groups.

This enhancement adds the preference "ldap_create_groups_tiki" which is "y" by default - which corresponds to the current behaviour.

If "ldap_create_groups_tiki" is set to "n" and a LDAP user logs in the group synchronisation process will silently ignore groups that exist in LDAP but not in tikiwiki. Existing groups will be synced, though.
tracker item
tiki-admingroups.php -> When removing a user from a group, I am sent to tiki-adminusers.php
I am sent here

tiki-adminusers.php?user=abc&action=removegroup&group=xyz

tracker item
LDAP/Active Directory Multiple Domain Support
I am referencing forum post: https://tiki.org/tiki-view_forum_thread.php?comments_parentId=43682&topics_offset=1

I would like the ability for users in child domains to access the TikiWiki site the same way users in the parent site are able to access it. According to the forum post, "Tiki is not currently capable of authenticating against multiple domains (or multiple LDAP servers)" and "The code could be modified to search, say, the global catalog for the user's DN and then authenticate against the corresponding domain, but this would be custom coding"

I would like an option to specify multiple domains, or a custom code I could use to search the global catalog for the user's DN.

Basically I want all of my users in all of my offices to access the Tiki site. Not just the home office users.
tracker item
Changing default User Group is not immediately taken into account
As an admin, I change the group of a user, and the default group.
The user needs to logout/login or the default group is not changed
tracker item
6.7 LTS: Possible security threat: Logging into Wiki A as admin may raise your privilege level in Wiki B
{syntax type="tiki" editor="plain"}
I looked if something like this has been reported previously, but didn't find something that completely fits, so I post this and apologize if I missed something.

Since I have already put some detail into a [http://tiki.org/tiki-view_forum_thread.php?forumId=6&comments_parentId=44097#threadId44102|support request] and at the moment I believe it only concerns two Wikis belonging to the same admin, here is a description:

Steps to reproduce:
1) Take any Tiki installation and move a new directory
2) Create a new DB with a copy of the original DB
3) Upgrade and start it up
4) Log into the old installation as admin
5) Find out you're admin on the new one, too.

It may well be that for some admins this is a wanted behaviour like as a single-sign-on (SSO).

But it is my firm belief that any such behaviour is to be considerd a breach of security unless both admins have expressley activated this as a wanted behaviour. Possibly the problem also exists if two different admins operate two different Tikis on the same hosted volume, that somehow were created from one single predecessor, so maybe this is not as harmless as it might seem to be.

I do not know, but suspect, this could be a cookie issue.

Resolution could be that tiki-installer regenerates all security structures upon installation and/or upgrades, or at least asks the admin whether such should be reset. Also, there should be a button in the administration panel to reset this at any later time. In my opinion TikiWiki should at all times, if not told to behave otherwise, protect its instance against all other possible instances of itself...

At some point confusion may get so high to a user's browser that logging into Wiki B alone will not function, and you have to log into Wiki A to be able to access Wiki B. At the moment I experience this with my new 6.7 LTS and my old 1.9.8.3. sitting in different directories on the same volume, accessing to different MySQL DBs with differing user names and passwords...
tracker item
Group registration in newsletters conflicts with the "Use email as username" feature
{syntax type="tiki" editor="plain"}
To reproduce

# Install a fresh Tiki
# Create some usernames as usual
# Set "Use email as username" feature to yes
# Create more users (this time, username will be the email)
# Create a newsletter
# Subscribe the Registered group to the newsletter
# Send a newsletter

The system will crash and be unable to send the newsletter because some users don't have valid emails. If you error reporting is activated, you will get a message like this:

{CODE()}
System error.

The following error message was returned:

Duplicate entry '3-mcradmin-g' for key 'PRIMARY'
The query was:

INSERT INTO `tiki_newsletter_subscriptions` (`nlId`,`email`,`code`,`valid`,`subscribed`,`isUser`,`included`) VALUES (?,?,?,?,?,?,?)
Values:

3
mcradmin
6b78cc21c16e768dd8fbb6b538c6bf78
y
1339700591
g
n
The built query was likely:

INSERT INTO `tiki_newsletter_subscriptions` (`nlId`,`email`,`code`,`valid`,`subscribed`,`isUser`,`included`) VALUES ('3','mcradmin','6b78cc21c16e768dd8fbb6b538c6bf78','y','1339700591','g','n')
Things to check:

Is your database up and running?
Is your database corrupt? Please see how to repair your database
Are your database credentials accurate? (username, database name, etc in db/local.php)
Did you complete the Tiki Installer?
Please see the documentation for more information.
{CODE}
tracker item
Upon registration, if "User already exists", offer a link to "reset password" (if activated)
{syntax type="tiki" editor="plain"}
Often, we don't remember if we have already registered...
tracker item
First form field on pages does not have focus
{syntax type="tiki" editor="plain"}
Please see:
http://irc.tiki.org/irclogger_log/tikiwiki?date=2012-10-03,Wed&sel=483#l479
tracker item
"Since your last visit" doesn't show correct date Ver 9.2
This following displays when the user was set up, not since "last visit date"

Since your last visit...
2012-11-21
9 new posts

I searched existing bugs and couldn't find any info pertaining to above.
Am I missing something obvious?

Thanks
tracker item
Provide spammer test for new accounts
Using services like http://www.stopforumspam.com can help to identify and handle spam-related mail addresses trying to create an account.

stopforumspam provides an API to test a mail address against a "known spammer"-list. This could be used to warn an admin before confirming an account.
tracker item
user tracker gets input also on registration error
I use email as username and user tracker for more information at registration.
If a user types in an invalid email address and wants to register. He gets an error, no user is registered BUT the user tracker gets an entry.

mostly I have to hit the save button twice. Perhaps that helps to find the bug?
tracker item
Admin Setting
This tracker is made to help filtering and sorting the features vs categories vs options we need to tag a bug/regression/wish with.
tracker item
js part of the registration is not to be translated under ajax
It concerns the Passwords match and do not match.
Chealer explained to me that there is a language.js file to be created in the lang/<yourlang> folder (as in ca).
Since my ajax is on, the password check is not run from
tiki-js.js, checkPasswordsMatch
but from
register_ajax.js (please also add a header to this file), check_pass.
The tr function is not defined there, so it would not work.

See also
http://irc.tikiwiki.org/irclogger_log/tikiwiki?date=2010-10-19,Tue

P.S. I rated this 9, because there will be people who want ajax and another language, but do not like to dig js files for such a basic functionality.
tracker item
Keep form data after back button (when CAPTCHA typo / session expired)
If you're editing a page and you fail the CAPTCHA or your session expires, your whole edit is lost. Most users expect their browser to have saved the form data, many would know enough to log back in then hit the back button to get back to the form (or at least, hit "back" and copy the data for later pasting after login). This does not work - after a "back" the form is empty!

I'm ranking this bug as priority 7 because it is very serious - data loss and angry users. I think the solution is trivial, too: see below.
tracker item
kerrnel22 Kerrnel
This should be migrated to the community site, and handled with ((doc:Organic groups)) and ((doc:User Trackers))
tracker item
Last login wrongly indicated as never logged in
The tooltip info for site users such as page or post authors incorrectly reports the "last login" information as "never logged in". We can see this now at the Tiki project sites, and I'm seeing it at a Tiki 14 site also.

Apart from not being factually accurate, it probably doesn't make a good impression for the software to indicate that content is being authored by people who've never logged in.
tracker item
LDAP Authentication Broken Between Tiki 12.2 and 21.4
While upgrading from Tiki 12.2 to 21.4, we found that our external LDAP authentication stopped working. After turning on some debugging and looking at the code, I found this major difference between the two versions in lib/auth/ldap.php.

In 12.2 starting at line 90:
$this->options['host'] = array();
foreach ($t as $h) {
if (preg_match('#^ldaps?://#', $h)) { // entry is already URI
$this->options['host'][] = $h;
} else {
$this->options['host'][] = $prefix . $h . ':' . $port;
}
}

In 21.4 starting at line 96:
$this->options['host'] = [];
foreach ($t as $h) {
if (preg_match('#^ldaps?://#', $h)) { // entry is already URI
$this->options['host'] = $h;
} else {
$this->options['host'] = $h;
}
}

Note that in 21.4 regardless of result of the if, the executed code is the same and the LDAP connection will fail if the "host" is not in URI format. I believe the else clause should look similar to that from 12.2. A workaround is to enter a full URI in the configuration for the LDAP server host.

tracker item
LDAP authentication by binding user credentials
Our Active Directory is configured not to allow arbitrary LDAP searches for unprivileged users. However, these users can successfully bind to AD's LDAP interface. This would be enough for authentication and we would not need a special account for checking authentication.

I therefore removed parts of the function fetchData in /lib/pear/Auth/Container/LDAP.php:

{img src=images/code.png}%%% {CODE()}
function fetchData($username, $password)
{
$this->log('Auth_Container_LDAP::fetchData() called.', AUTH_LOG_DEBUG);
$err = $this->_prepare();
if ($err !== true) {
return PEAR::raiseError($err->getMessage(), $err->getCode());
}

$err = $this->_getBaseDN();
if ($err !== true) {
return PEAR::raiseError($err->getMessage(), $err->getCode());
}

// UTF8 Encode username for LDAPv3
if (@ldap_get_option($this->conn_id, LDAP_OPT_PROTOCOL_VERSION, $ver) && $ver == 3) {
$this->log('UTF8 encoding username for LDAPv3', AUTH_LOG_DEBUG);
$username = utf8_encode($username);
}

/* // make search filter
$filter = sprintf('(&(%s=%s)%s)',
$this->options['userattr'],
$this->_quoteFilterString($username),
$this->options['userfilter']);

// make search base dn
$search_basedn = $this->options['userdn'];
if ($search_basedn != '' && substr($search_basedn, -1) != ',') {
$search_basedn .= ',';
}
$search_basedn .= $this->options['basedn'];

// attributes
$searchAttributes = $this->options['attributes'];

// make functions params array
$func_params = array($this->conn_id, $search_basedn, $filter, $searchAttributes);

// search function to use
$func_name = $this->_scope2function($this->options['userscope']);

$this->log("Searching with $func_name and filter $filter in $search_basedn", AUTH_LOG_DEBUG);

// search
if (($result_id = @call_user_func_array($func_name, $func_params)) === false) {
$this->log('User not found', AUTH_LOG_DEBUG);
} elseif (@ldap_count_entries($this->conn_id, $result_id) >= 1) { // did we get some possible results?

$this->log('User(s) found', AUTH_LOG_DEBUG);

$first = true;
$entry_id = null;

do {

// then get the user dn
if ($first) {
$entry_id = @ldap_first_entry($this->conn_id, $result_id);
$first = false;
} else {
$entry_id = @ldap_next_entry($this->conn_id, $entry_id);
if ($entry_id === false)
break;
}
$user_dn = @ldap_get_dn($this->conn_id, $entry_id);

// as the dn is not fetched as an attribute, we save it anyway
if (is_array($searchAttributes) && in_array('dn', $searchAttributes)) {
$this->log('Saving DN to AuthData', AUTH_LOG_DEBUG);
$this->_auth_obj->setAuthData('dn', $user_dn);
}

// fetch attributes
if ($attributes = @ldap_get_attributes($this->conn_id, $entry_id)) {

if (is_array($attributes) && isset($attributes['count']) &&
$attributes['count'] > 0) {

// ldap_get_attributes() returns a specific multi dimensional array
// format containing all the attributes and where each array starts
// with a 'count' element providing the number of attributes in the
// entry, or the number of values for attribute. For compatibility
// reasons, it remains the default format returned by LDAP container
// setAuthData().
// The code below optionally returns attributes in another format,
// more compliant with other Auth containers, where each attribute
// element are directly set in the 'authData' list. This option is
// enabled by setting 'attrformat' to
// 'AUTH' in the 'options' array.
// eg. $this->options['attrformat'] = 'AUTH'

if ( strtoupper($this->options['attrformat']) == 'AUTH' ) {
$this->log('Saving attributes to Auth data in AUTH format', AUTH_LOG_DEBUG);
unset ($attributes['count']);
foreach ($attributes as $attributeName => $attributeValue ) {
if (is_int($attributeName)) continue;
if (is_array($attributeValue) && isset($attributeValue['count'])) {
unset ($attributeValue['count']);
}
if (count($attributeValue)<=1) $attributeValue = $attributeValue[0];
$this->log('Storing additional field: '.$attributeName, AUTH_LOG_DEBUG);
$this->_auth_obj->setAuthData($attributeName, $attributeValue);
}
}
else
{
$this->log('Saving attributes to Auth data in LDAP format', AUTH_LOG_DEBUG);
$this->_auth_obj->setAuthData('attributes', $attributes);
}
}
}
@ldap_free_result($result_id);


// need to catch an empty password as openldap seems to return TRUE
// if anonymous binding is allowed
*/ $user_dn = $username;
if ($password != "") {
$this->log("Bind as $user_dn", AUTH_LOG_DEBUG);

// try binding as this user with the supplied password
if (@ldap_bind($this->conn_id, $user_dn, $password)) {
$this->log('Bind successful', AUTH_LOG_DEBUG);
// check group if appropiate
if (strlen($this->options['group'])) {
// decide whether memberattr value is a dn or the username
$this->log('Checking group membership', AUTH_LOG_DEBUG);
$return = $this->checkGroup(($this->options['memberisdn']) ? $user_dn : $username);
$this->_disconnect();
return $return;
} else {
$this->log('Authenticated', AUTH_LOG_DEBUG);
$this->_disconnect();
return true; // user authenticated
} // checkGroup
} // bind
} // non-empty password
// } while ($this->options['try_all'] == true); // interate through entries
// } // get results
// default
$this->log('NOT authenticated!', AUTH_LOG_DEBUG);
$this->_disconnect();
return false;
}
{CODE}

If would be nice to have a checkbox in the LDAP part of the admin page for selecting this behaviour.
tracker item
TikiWiki 2.0: Difficulty Registering / Adding Users
I have encountered a few snags after upgrading from Tiki 1.9.11 to 2.0

One of the problems is that I am unable to register / add users, because of the following error message:

An error occured in a database query!
Unknown column 'email_confirm' in 'field list'

This happens on
tiki-register.php (registration) and tiki-adminusers.php (batch upload / add)

Is there a fix for this?
tracker item
Tanzania missing in country tracker list
Seems like Tanzania keeps falling out of the country list. This was the case some years ago. Might as well add Swahili as a language option if applicable.
tracker item
Error when adding a new user
I have an error when I try to add a new user:

{img src=images/code.png}%%% {CODE()} Context:
File tiki-adminusers.php
Url tiki-adminusers.php
Query:
insert into `users_users`(`login`, `password`, `email`, `provpass`, `registrationDate`, `hash`, `pass_confirm`, `email_confirm`, `created`, `valid`, `openid_url`, `lastLogin`, `waiting`) values(?,?,?,?,?,?,?,?,?,?,?,?,?)
Values:
0 trenad
1
2 n.trepanier@rrsss16.gouv.qc.ca
3
4 1224014104
5 $1$98TWiy55$sm3YVgaZTDG8wTR6O9kvz0
6 1224014104
7 1224014104
8 1224014104
9 NULL
10 NULL
11 NULL
12 NULL
Message:
Unknown column 'email_confirm' in 'field list'
Built query was probably:
insert into `users_users`(`login`, `password`, `email`, `provpass`, `registrationDate`, `hash`, `pass_confirm`, `email_confirm`, `created`, `valid`, `openid_url`, `lastLogin`, `waiting`) values('trenad','','n.trepanier@rrsss16.gouv.qc.ca','','1224014104','$1$98TWiy55$sm3YVgaZTDG8wTR6O9kvz0','1224014104','1224014104','1224014104',NULL,NULL,NULL,NULL){CODE}

Do you guys have any idea what is happening.
tracker item
Forum setting plain-view doesn't get saved bug
User set forum style as Plain and save it after next login style is Threaded again.
tracker item
2FA broken in 27.x due to missing DB column
{syntax type="tiki" editor="plain"}
Enabling 2FA for a user works, but when trying to login, one is presented with a System Error page. With debug enabled, we see:

'''
System error.

The following error message was returned:

Unknown column 'last_mfa_date' in 'SET'

The query was:
update `users_users` set `last_mfa_date` = ? WHERE `login` = ?

Values:

1788618450
username

The built query was likely:
update `users_users` set `last_mfa_date` = '1788618450' WHERE `login` = 'username'
'''

I can confirm that adding in the column manually with:

alter table users_users add column if not exists last_mfa_date bigint DEFAULT NULL;

has allowed me to login/logout with MFA enabled.
tracker item
Show PHP error messages