PEAR is discontinued

This is a static archive preserving historical releases and metadata. No new packages or updates will be published. For updates to existing packages, or to publish new packages, please use Composer and Packagist.

Home » Authentication » LiveUser_Admin » Bug #7241

Error on fetching rights for a specific user that only has inherited rights

Details

Submitted2006-03-29 09:49 UTC
Frommichiel at dinnersite dot nl
Assignedlsmith
StatusClosed
PackageLiveUser_Admin
PHP Version4.4.0
OSMandrake
Roadmaps(Not assigned)

Comments

[2006-03-29 09:49 UTC] michiel at dinnersite dot nl

Description:
------------
A call to the getRights function with the initial params:

Array
(
[filters] => Array
(
[perm_user_id] => 8
)

[inherited] => 1
[implied] => 1
[rekey] => 1
[fields] => Array
(
[0] => right_id
[1] => area_id
[2] => right_define_name
[3] => has_implied
)

[select] => all
)

And the params created by _getInheritedRights()

Array
(
[filters] => Array
(
[perm_user_id] => 8
[group_id] => Array
(
[0] => 1
[1] => 4
)

)

[rekey] => 1
[fields] => Array
(
[0] => right_id
[1] => area_id
[2] => right_define_name
[3] => has_implied
)

[select] => all
[by_group] => 1
[inherited] =>
[implied] =>
)

Results in the following errorstack (just a small part, mail me for the full errorstack):

Array
(
[0] => Array
(
[code] => -4
[params] => Array
(
[reason] => DB Error: unknown error-SELECT liveuser_rights.right_id AS right_id, liveuser_rights.area_id AS area_id, liveuser_rights.right_define_name AS right_define_name, liveuser_rights.has_implied AS has_implied FROM liveuser_rights, liveuser_groupusers WHERE liveuser_groupusers.group_id IN ('1', '3', '4')
AND liveuser_rights.area_id = liveuser_areas.area_id
AND liveuser_areas.application_id = liveuser_applications.application_id
AND liveuser_applications.application_id = liveuser_areas.application_id
AND liveuser_translations.section_type = 1
AND liveuser_areas.area_id = liveuser_translations.section_id
AND liveuser_translations.section_id = liveuser_applications.application_id
AND liveuser_rights.right_id = liveuser_translations.section_id [nativecode=1109 ** Unknown table 'liveuser_areas' in where clause]
)

[package] => LiveUser_Admin
[level] => exception
[time] => 1143622685.44
[context] => Array
(
[file] => /home/netural/ds6/sdk/PEAR/LiveUser/Admin/Storage/DB.php
[line] => 321
[function] => queryall
[class] => liveuser_admin_perm_storage_db
)

[message] => Couldn't create the query, reason: DB Error: unknown error-SELECT liveuser_rights.right_id AS right_id, liveuser_rights.area_id AS area_id, liveuser_rights.right_define_name AS right_define_name, liveuser_rights.has_implied AS has_implied FROM liveuser_rights, liveuser_groupusers WHERE liveuser_groupusers.group_id IN ('1', '3', '4')
AND liveuser_rights.area_id = liveuser_areas.area_id
AND liveuser_areas.application_id = liveuser_applications.application_id
AND liveuser_applications.application_id = liveuser_areas.application_id
AND liveuser_translations.section_type = 1
AND liveuser_areas.area_id = liveuser_translations.section_id
AND liveuser_translations.section_id = liveuser_applications.application_id
AND liveuser_rights.right_id = liveuser_translations.section_id [nativecode=1109 ** Unknown table 'liveuser_areas' in where clause]
)

[1] => Array
(
[code] => -4
[params] => Array
(
[reason] => infinite recursion detected: translations
)

[package] => LiveUser_Admin
[level] => exception
[time] => 1143622685.44
[context] => Array
(
[file] => /home/netural/ds6/sdk/PEAR/LiveUser/Admin/Storage/SQL.php
[line] => 717
[function] => createjoinfilter
[class] => liveuser_admin_perm_storage_db
)

[message] => Couldn't create the query, reason: infinite recursion detected: translations
)

[2006-03-30 07:49 UTC] michiel at dinnersite dot nl

A tricky one indeed.. Btw. I did try to remove the perm_user_id from the getInheritedRights params but nothing changed.

I could help out on some points to add some comment to the Admin side of LiveUser... (Been working with it a lot so I think understanding the code quite well). Mail me if you need any help with this..

[2006-03-30 08:11 UTC] michiel at dinnersite dot nl

Sounds

[2006-03-30 08:11 UTC] michiel at dinnersite dot nl

Sounds like a BC break, don't know if my code would break because of it (don't think so) but I can image it will with some others..

[2006-04-10 09:07 UTC] michiel at dinnersite dot nl

It still generates errors unfortunately.

Using the following params:

Array
(
[filters] => Array
(
[perm_user_id] => 9
)

[inherited] => Array
(
[perm_user_id] => 9
)

[implied] => Array
(
[perm_user_id] => 9
)

[rekey] => 1
[fields] => Array
(
[0] => right_id
[1] => area_id
[2] => right_define_name
[3] => has_implied
)

[select] => all
)

The errorstack:

[0] => Array
(
[code] => -4
[params] => Array
(
[reason] => DB Error: no such field-SELECT liveuser_rights.right_id AS right_id, liveuser_rights.area_id AS area_id, liveuser_rights.right_define_name AS right_define_name, liveuser_rights.has_implied AS has_implied FROM liveuser_rights, liveuser_groupusers WHERE liveuser_groupusers.perm_user_id = '9'
AND liveuser_groupusers.group_id IN ('1')
AND liveuser_rights.area_id = liveuser_areas.area_id
AND liveuser_areas.application_id = liveuser_applications.application_id
AND liveuser_applications.application_id = liveuser_areas.application_id
AND liveuser_translations.section_type = 1
AND liveuser_areas.area_id = liveuser_translations.section_id
AND liveuser_translations.section_id = liveuser_applications.application_id
AND liveuser_rights.right_id = liveuser_translations.section_id [nativecode=1054 ** Unknown column 'liveuser_areas.area_id' in 'where clause']
)

[package] => LiveUser_Admin
[level] => exception
[time] => 1144659042.51
[context] => Array
(
[file] => /home/netural/ds6/sdk/PEAR/LiveUser/Admin/Storage/DB.php
[line] => 321
[function] => queryall
[class] => liveuser_admin_perm_storage_db
)

[message] => Couldn't create the query, reason: DB Error: no such field-SELECT liveuser_rights.right_id AS right_id, liveuser_rights.area_id AS area_id, liveuser_rights.right_define_name AS right_define_name, liveuser_rights.has_implied AS has_implied FROM liveuser_rights, liveuser_groupusers WHERE liveuser_groupusers.perm_user_id = '9'
AND liveuser_groupusers.group_id IN ('1')
AND liveuser_rights.area_id = liveuser_areas.area_id
AND liveuser_areas.application_id = liveuser_applications.application_id
AND liveuser_applications.application_id = liveuser_areas.application_id
AND liveuser_translations.section_type = 1
AND liveuser_areas.area_id = liveuser_translations.section_id
AND liveuser_translations.section_id = liveuser_applications.application_id
AND liveuser_rights.right_id = liveuser_translations.section_id [nativecode=1054 ** Unknown column 'liveuser_areas.area_id' in 'where clause']
)

[1] => Array
(
[code] => -4
[params] => Array
(
[reason] => infinite recursion detected: translations
)

[package] => LiveUser_Admin
[level] => exception
[time] => 1144659042.51
[context] => Array
(
[file] => /home/netural/ds6/sdk/PEAR/LiveUser/Admin/Storage/SQL.php
[line] => 717
[function] => createjoinfilter
[class] => liveuser_admin_perm_storage_db
)

[message] => Couldn't create the query, reason: infinite recursion detected: translations
)

Other changes with this version:

* Break in my getGroups function, had to change my call to getRights().

* Rights still fetch ok for the current logged in user (inherited and granted) with current code (no changes).

[2006-04-12 11:37 UTC] michiel at dinnersite dot nl

An update on the situation. I got everything working again, but with some interesting notes. In some cases adding right_level is required and some times adding right_level causes problems. right_level is required when you add perm_user_id or group_id to the filters. right_level gives problems when filtering on area_id. I included my parameters below, maby they can help some.

With these parameters the right_level is required:

Array
(
[filters] => Array
(
[perm_user_id] => 8
)

[inherited] => Array
(
[perm_user_id] => 8
)

[implied] => Array
(
[perm_user_id] => 8
)

[rekey] => 1
[fields] => Array
(
[0] => right_id
[1] => area_id
[2] => right_define_name
[3] => has_implied
[4] => right_level
)

[select] => all
)

The same goes for filtering by group_id.

However if you add right_level when filtering on area_id results in an empty array. Removing the right_level does provide (the correct) results.

[2006-04-13 10:59 UTC] michiel at dinnersite dot nl

I mailed you my database dump.

[2006-04-13 11:01 UTC] michiel at dinnersite dot nl

I maile

[2006-04-14 14:42 UTC] michiel at dinnersite dot nl

Hmm, that is a bit weird. I'll just try to renew my whole LiveUser package with the CVS version again (did the admin part once already). I'll update you as soon as I know more.