PEAR is archived and read-only

This mirror preserves historical PEAR package releases and metadata so existing references remain available.

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.