Welcome to Geeklog, Anonymous Monday, December 23 2024 @ 06:03 pm EST
Geeklog Forums
Giving admin priv for plugin to a user
Status: offline
asmaloney
Forum User
Full Member
Registered: 02/08/04
Posts: 214
I want to outline a problem I'm having in the hopes that either I'm misunderstanding something or someone can tell me how to fix it.
I have a plugin called foo with a feature called foo.admin and a group called Foo Admin. I want to give admin rights for the plugin to a specific user, so I added him to the group.
I expected that he would then get the Admin block with 'Foo' in it, but he doesn't.
So to track it down I started digging... Starting at COM_adminMenu it seems that the menu should show up if plugin_getadminoption_foo() returns an entry for the admin menu or if plugin_ismoderator_foo() returns true. Both of these are correct.
So following up the call chain... COM_formatBlock() looks ok, but COM_showBlocks() looks like it only checks the block permissions from the db, ignoring the plugin's request for an entry in the admin block.
So, if I'm understanding this correctly, there need to be a check in the 'foreach( $blocks as $A )' loop to special case the admin block...
Thoughts/comments/suggestions?
- Andy
I have a plugin called foo with a feature called foo.admin and a group called Foo Admin. I want to give admin rights for the plugin to a specific user, so I added him to the group.
I expected that he would then get the Admin block with 'Foo' in it, but he doesn't.
So to track it down I started digging... Starting at COM_adminMenu it seems that the menu should show up if plugin_getadminoption_foo() returns an entry for the admin menu or if plugin_ismoderator_foo() returns true. Both of these are correct.
So following up the call chain... COM_formatBlock() looks ok, but COM_showBlocks() looks like it only checks the block permissions from the db, ignoring the plugin's request for an entry in the admin block.
So, if I'm understanding this correctly, there need to be a check in the 'foreach( $blocks as $A )' loop to special case the admin block...
Thoughts/comments/suggestions?
- Andy
27
14
Quote
Status: offline
asmaloney
Forum User
Full Member
Registered: 02/08/04
Posts: 214
Here's the solution I came up with:
In COM_showBlocks(), we special case the loop at the end to mimic the permission checks in COM_adminMenu().
I changed this:
foreach( $blocks as $A )
{
if( SEC_hasAccess( $A['owner_id'], $A['group_id'], $A['perm_owner'], $A['perm_group'], $A['perm_members'], $A['perm_anon']) > 0 or $A['type'] == 'dynamic' )
{
$retval .= COM_formatBlock( $A, $_USER['noboxes'] );
}
}
to this:
foreach( $blocks as $A )
{
if ( $A['name'] == 'admin_block' )
{
$plugin_options = PLG_getAdminOptions();
$nrows = count( $plugin_options );
if ( SEC_isModerator() ||
SEC_hasrights( 'story.edit,block.edit,topic.edit,event.edit,user.edit,plugin.edit,user.mail', 'OR' ) ||
( $nrows > 0 ))
{
$retval .= COM_formatBlock( $A, $_USER['noboxes'] );
}
}
else if( SEC_hasAccess( $A['owner_id'], $A['group_id'], $A['perm_owner'], $A['perm_group'], $A['perm_members'], $A['perm_anon']) > 0 or $A['type'] == 'dynamic' )
{
$retval .= COM_formatBlock( $A, $_USER['noboxes'] );
}
}
Anyone see any problems with this solution?
Thanks.
- Andy
In COM_showBlocks(), we special case the loop at the end to mimic the permission checks in COM_adminMenu().
I changed this:
Text Formatted Code
// Loop though resulting sorted array aand pass associative arays to COM_formatBlockforeach( $blocks as $A )
{
if( SEC_hasAccess( $A['owner_id'], $A['group_id'], $A['perm_owner'], $A['perm_group'], $A['perm_members'], $A['perm_anon']) > 0 or $A['type'] == 'dynamic' )
{
$retval .= COM_formatBlock( $A, $_USER['noboxes'] );
}
}
to this:
Text Formatted Code
// Loop though resulting sorted array and pass associative arrays to COM_formatBlockforeach( $blocks as $A )
{
if ( $A['name'] == 'admin_block' )
{
$plugin_options = PLG_getAdminOptions();
$nrows = count( $plugin_options );
if ( SEC_isModerator() ||
SEC_hasrights( 'story.edit,block.edit,topic.edit,event.edit,user.edit,plugin.edit,user.mail', 'OR' ) ||
( $nrows > 0 ))
{
$retval .= COM_formatBlock( $A, $_USER['noboxes'] );
}
}
else if( SEC_hasAccess( $A['owner_id'], $A['group_id'], $A['perm_owner'], $A['perm_group'], $A['perm_members'], $A['perm_anon']) > 0 or $A['type'] == 'dynamic' )
{
$retval .= COM_formatBlock( $A, $_USER['noboxes'] );
}
}
Anyone see any problems with this solution?
Thanks.
- Andy
12
9
Quote
Status: offline
mevans
Forum User
Full Member
Registered: 02/08/04
Posts: 393
Location:Texas
Andy,
I just tried to duplicate your problem on my Geeklog 1.4.0sr4 sites and a Geeklog v1.3.11sr3 test site and I cannot re-create the problem. Everything is working exactly as it should.
Using my Media Gallery plugin, I have a feature: mediagallery.admin that is assigned to the group Media Gallery Admin. If I place a normal user in that group, the Admin menu does show with 2 option:
- Documentation
- Media Gallery
So, it appears to be working properly.
Double checking my group Media Gallery Admin, the only item that is checked in the Group editor is under the Rights section and mediagallery.admin is checked.
Have you verified that the feature is actually associated with the group?
My setup in functions.inc looks like this:
function plugin_getadminoption_mediagallery() {
global $_CONF, $_TABLES, $LANG_MG00, $_MG_CONF;
if (SEC_hasRights('mediagallery.admin') || SEC_ingroup('Root')) {
return array($LANG_MG00['plugin'], $_CONF['site_admin_url'] . '/plugins/mediagallery/index.php', DB_count($_TABLES['mg_albums']));
}
}
Hope this helps!
Mark
I just tried to duplicate your problem on my Geeklog 1.4.0sr4 sites and a Geeklog v1.3.11sr3 test site and I cannot re-create the problem. Everything is working exactly as it should.
Using my Media Gallery plugin, I have a feature: mediagallery.admin that is assigned to the group Media Gallery Admin. If I place a normal user in that group, the Admin menu does show with 2 option:
- Documentation
- Media Gallery
So, it appears to be working properly.
Double checking my group Media Gallery Admin, the only item that is checked in the Group editor is under the Rights section and mediagallery.admin is checked.
Have you verified that the feature is actually associated with the group?
My setup in functions.inc looks like this:
Text Formatted Code
function plugin_getadminoption_mediagallery() {
global $_CONF, $_TABLES, $LANG_MG00, $_MG_CONF;
if (SEC_hasRights('mediagallery.admin') || SEC_ingroup('Root')) {
return array($LANG_MG00['plugin'], $_CONF['site_admin_url'] . '/plugins/mediagallery/index.php', DB_count($_TABLES['mg_albums']));
}
}
Hope this helps!
Mark
11
13
Quote
Status: offline
asmaloney
Forum User
Full Member
Registered: 02/08/04
Posts: 214
Mark,
Thanks for the response.
That led me down the right path... Someone [uh... ok, it was me] had turned off Member Read permissions on the Admin block. I'm sure the logic went "Why would any members ever need to see the Admin block?"
Should have been an obvious thing to check, but it wasn't last night...
Thanks for your help.
- Andy
Thanks for the response.
That led me down the right path... Someone [uh... ok, it was me] had turned off Member Read permissions on the Admin block. I'm sure the logic went "Why would any members ever need to see the Admin block?"
Should have been an obvious thing to check, but it wasn't last night...
Thanks for your help.
- Andy
13
12
Quote
luddite
Anonymous
heyo, I've been having problems also...
in previous versions of media gallery... (production site for my photobug wife and pics of our son), this was not an issue...
here are my errors
FYI, i'm using debian sarge(the latest), and I admin this box,
TYI
Lu
Warning: fopen(/home/user/logs/error.log): failed to open stream: Permission denied in /home/ludovicus/public_html/lib-common.php on line 1702
Warning: fopen(/home/user/logs/error.log): failed to open stream: Permission denied in /home/user/public_html/lib-common.php on line 1702
Warning: fopen(/home/user/logs/error.log): failed to open stream: Permission denied in /home/user/public_html/lib-common.php on line 1702
in previous versions of media gallery... (production site for my photobug wife and pics of our son), this was not an issue...
here are my errors
FYI, i'm using debian sarge(the latest), and I admin this box,
TYI
Lu
Warning: fopen(/home/user/logs/error.log): failed to open stream: Permission denied in /home/ludovicus/public_html/lib-common.php on line 1702
Warning: fopen(/home/user/logs/error.log): failed to open stream: Permission denied in /home/user/public_html/lib-common.php on line 1702
Warning: fopen(/home/user/logs/error.log): failed to open stream: Permission denied in /home/user/public_html/lib-common.php on line 1702
10
8
Quote
Status: offline
mevans
Forum User
Full Member
Registered: 02/08/04
Posts: 393
Location:Texas
Lu,
That's a pretty simple issue to resolve. Make sure both the directory where error.log live (/home/user/logs/) and the file error.log are writable by the web server. Check and see who is the owner of the file and change it to the same user that the web server runs as (usually www or apache) and make sure the permissions will allow the web server to write to it. I usually set mine as 644 and have the same owner as the user the web server runs as.
let me know if that solves the issue.
Thanks!
Mark
That's a pretty simple issue to resolve. Make sure both the directory where error.log live (/home/user/logs/) and the file error.log are writable by the web server. Check and see who is the owner of the file and change it to the same user that the web server runs as (usually www or apache) and make sure the permissions will allow the web server to write to it. I usually set mine as 644 and have the same owner as the user the web server runs as.
let me know if that solves the issue.
Thanks!
Mark
11
9
Quote
Status: offline
asmaloney
Forum User
Full Member
Registered: 02/08/04
Posts: 214
luddite:
In the future, you might want to try starting a new thread instead of highjacking another unrelated one... It will make searching a lot easier and will lead to less confusion.
[And I won't get email notifying me of replies to my issue that have nothing to do with the discussion ]
Thanks.
- Andy
In the future, you might want to try starting a new thread instead of highjacking another unrelated one... It will make searching a lot easier and will lead to less confusion.
[And I won't get email notifying me of replies to my issue that have nothing to do with the discussion ]
Thanks.
- Andy
17
8
Quote
All times are EST. The time is now 06:03 pm.
- Normal Topic
- Sticky Topic
- Locked Topic
- New Post
- Sticky Topic W/ New Post
- Locked Topic W/ New Post
- View Anonymous Posts
- Able to post
- Filtered HTML Allowed
- Censored Content