PDA

View Full Version : "добавление нового админа" (модули на администрирование))


makfatum
07.03.2007, 16:39
Здравствуйте!

Возник такой вопрос.
Есть галерея 4nAlbum.
При добавлении нового админа, ему почему-то нет возможности дать доступ к соответствуюшему модулю (нет чекбокса в перечне).

это мне очень нужно....

Начал смотреть...
в файле authors.php
нашел следующее:

if (file_exists("modules/$row[title]/admin/index.php") AND file_exists("modules/$row[title]/admin/links.php") AND file_exists("modules/$row[title]/admin/case.php")) {

смутно понял назначение,
но добавил в папку modules/4nAlbum
папку admin c файлами внутри нулевого размера index.php, case.php, links.php

чекбокс 4nAlbum в меню Админы - Добавление нового админа появился...

посмотрел у остальных модулей как сделано и добавил
в файл admin/modules/4nAlbum/index.php в начало вот это:

global $prefix, $db;

$aid = substr("$aid", 0,25);
$row = $db->sql_fetchrow($db->sql_query("SELECT title, admins FROM ".$prefix."_modules WHERE title='4nAlbum'"));
$row2 = $db->sql_fetchrow($db->sql_query("SELECT name, radminsuper FROM ".$prefix."_authors WHERE aid='$aid'"));
$admins = explode(",", $row['admins']);
$auth_user = 0;
for ($i=0; $i < sizeof($admins); $i++) {
if ($row2['name'] == "$admins[$i]" AND $row['admins'] != "") {
$auth_user = 1;
}
}

а потом, все остальное что находится в файле index.php
добавил в условие

if ($row2['radminsuper'] == 1 || $auth_user == 1) {

вобщем ничего не работает...
добавляю админа, ставлю чекбокс на доступ к 4nAlbum захожу и ничего нету...
нет доступа, вобще нет ссылки даже на модуль...

в Базе данных nuke_modules в столбце admins в строке 4nAlbum логины админов добавляются..

вобщем поможите, чем можите....один не справлюсь...

Astrix
07.03.2007, 17:47
У меня такая же история была с модулем Files
Я проблему решил, но пришлось изрядно повозиться!
Ща гляну, что и как - тогда скажу...

итак, сразу скажу - это самый простой, но не самый безопасны метод... все сделал за 15 минут, поэтому ничего не обещаю, но у меня работает.
1) Создаем в modules/4nAlbum папку admin
2) создаем там файл index.php:

<?php
if (!defined('ADMIN_FILE')) {
die ("Access Denied");
}

global $prefix, $db, $admin_file;
$aid = substr($aid, 0,25);
$row = $db->sql_fetchrow($db->sql_query("SELECT title, admins FROM ".$prefix."_modules WHERE title='4nAlbum'"));
$row2 = $db->sql_fetchrow($db->sql_query("SELECT name, radminsuper FROM ".$prefix."_authors WHERE aid='$aid'"));
$admins = explode(",", $row['admins']);
$auth_user = 0;
for ($i=0; $i < sizeof($admins); $i++) {
if ($row2['name'] == "$admins[$i]" AND !empty($row['admins'])) {
$auth_user = 1;
}
}

if ($row2['radminsuper'] == 1 || $auth_user == 1) {
include ("admin/modules/4nalbum/index.php");
}
?>

3) там же создаем файл case.php:

<?php
if (!defined('ADMIN_FILE')) {
die ("Access Denied");
}

switch($op) {
case "4nalbum":
include("modules/4nalbum/admin/index.php");
break;
}
?>

4) там же создаем файл links.php:

<?php
if (!defined('ADMIN_FILE')) {
die ("Access Denied");
}

global $admin_file;
if (($radminsuper==1) OR ($auth_user==1)) {
adminmenu("".$admin_file.".php?op=4nalbum", "4nAlbum", "topicsman.gif");
}
?>

5) даем нужному админу права на доступ к 4nAlbum
6) проверяем, работает ли все это дело.

ЗЫ
У меня работает...

Astrix
07.03.2007, 20:01
Еще небольшая поправочка (под виндой проблем не возникнет, но линух сильно ругаться будет): в пункте 3 строчку:
include("modules/4nalbum/admin/index.php");
замените на:
include("modules/4nAlbum/admin/index.php");

makfatum
07.03.2007, 21:46
спасибо!
все действительно работает!
а в чем заключается "небезопасность метода"?

Astrix
07.03.2007, 22:28
на первый взгляд вроде все нормально. я постарался по возможности все дыры в коде заткнуть. но т. к. делал сразу десять дел, включая и написание этого кода, мог где-нить что-нить недосмотреть... если кто ошибки заметит - буду признателен!