Хак Ограниченая админка

Тема в разделе "DLE", создана пользователем bumer3, 1 янв 2009.

Информация :
Актуальная версия DataLife Engine 12.0
( Final Release v.12.0 | Скачать DataLife Engine | Скачать 12.0 demo )
Нужно ли обновляться | Как обновиться | Изменения в шаблонах
> Нет русских символов <
[Приватная тема DLE (Все подробности в ЛС к модератору раздела)]

Версии 11.3 и ниже - уязвимы!

Локализации | F.A.Q. | Внешний вид
Правила раздела | Правила форума
Обсуждение хайда карается баном!
В каждом сообщении указывайте версию DLE, которого они касаются!
Статус темы:
Закрыта.
Модераторы: killoff
  1. bumer3

    bumer3

    Регистр.:
    10 янв 2008
    Сообщения:
    291
    Симпатии:
    154
    Более полный мод

    У меня бывали случаи когда человека надо было научить пользоваться ДЛЕ, просто правиль новости делать опросы, но сделать так чтобы он не лазил в настройки и не сделал плохого, но при этом чтобы у него горело что он главный админ. Поэтому сделал небольшой хак который мне отображает админку в полном виде а другому человеку токо то шо я хочу

    [​IMG]

    так вот сам хак:

    ========================
    1. создаем файл engine/data/sysopnick.php
    PHP:
    <?php
    // Где пишете ник который будет иметь все права
    define("SYSOP"'bumer3');
    ?>
    ========================
    ========================
    2. Открываем admin.php
    ========================
    ищем:
    PHP:
    require_once (ENGINE_DIR.'/inc/init.php');
    -------------------------------
    ниже добавляем
    PHP:
    require_once (ENGINE_DIR.'/data/sysopnick.php');
    ========================
    ищем
    PHP:
    $system_modules = array('addnews'      => 'user',
        
    'editnews'     => 'user',
        
    'comments'     => 'user',
        
    'main'         => 'user',
        
    'options'      => 'user',
        
    'files'        => 'user',
        
    'editusers'    => 'admin',
        
    'preview'      => 'user',
        
    'categories'   => 'admin',
        
    'massactions'  => 'user',
        
    'help'         => 'admin',
        
    'wordfilter'   => 'user',
        
    'xfields'      => 'admin',
        
    'dboption'     => 'admin',
        
    'email'        => 'admin',
        
    'static'       => 'admin',
        
    'editvote'     => 'admin',
        
    'addvote'      => 'admin',
        
    'templates'    => 'admin',
        
    'newsletter'   => 'admin',
        
    'blockip'         => 'admin',
        
    'usergroup'    => 'admin',
        
    'dumper'         => 'admin',
        
    'userfields'   => 'admin',
        
    'banners'      => 'admin',
        
    'clean'        => 'admin',
        
    'rss'          => 'admin',
        
    'iptools'      => 'admin',
        
    'search'       => 'admin',
        
    'rssinform'    => 'admin',
        
    'cmoderation'  => 'user',
        
    'googlemap'    => 'admin',

        );
    -------------------------------
    меняем на
    PHP:
    $system_modules = array('addnews'      => 'user',
        
    'editnews'     => 'user',
        
    'main'         => 'user',
        
    'options'      => 'user',
        
    'editusers'    => 'admin',
        
    'preview'      => 'user',
        
    'files' => 'user',
        
    'categories'   => 'admin',
        
    'massactions'  => 'user',
        
    'help'         => 'admin',
        
    'wordfilter'   => 'user',
        
    'xfields'      => 'adminr',
        
    'dboption'     => 'adminr',
        
    'email'        => 'adminr',
        
    'static'       => 'adminr',
        
    'editvote'     => 'admin',
        
    'addvote'      => 'admin',
        
    'templates'    => 'adminr',
        
    'newsletter'   => 'adminr',
        
    'blockip'         => 'adminr',
        
    'usergroup'    => 'adminr',
        
    'dumper'         => 'adminr',
        
    'banners'      => 'admin',
        
    'clean'        => 'adminr',
        
    'rss'          => 'adminr',
        
    'iptools'      => 'adminr',
        
    'search'       => 'adminr',
        
    'rssinform'    => 'adminr',
        
    'cmoderation'  => 'user',
        
    'googlemap'    => 'adminr',

        );
    adminr - доступно только вам
    admin - другим админам
    ========================
    ищем
    PHP:
    if($mod == ""){ include (ENGINE_DIR.'/inc/main.php'); }
    -------------------------------
    меняем на
    PHP:
         if ($member_db[2]<>SYSOP$tt='options';
        else 
    $tt='main';
        if(
    $mod == ""){ include (ENGINE_DIR.'/inc/'.$tt.'.php'); }
    ========================
    ищем
    PHP:
    elseif($system_modules[$mod] == "admin" and $member_db[1] == 1){ include(ENGINE_DIR.'/inc/'$mod '.php'); }
    -------------------------------
    добавляем ниже
    PHP:
    elseif($system_modules[$mod] == "adminr" and $member_db[1] == and $member_db[2] == SYSOP){ include(ENGINE_DIR.'/inc/'$mod '.php'); }
            elseif(
    $system_modules[$mod] == "adminr" and $member_db[1] != and $member_db[2] != SYSOP){ msg("error"$lang['index_denied'], $lang['index_denied']); exit;}
    ========================
    ========================
    3. открываем engine/inc/options.php
    ========================
    ищем
    PHP:
    $options['config'] = array(

                        array(
                        
    'name'       => $lang['opt_all'],
                        
    'url'        => "$PHP_SELF?mod=options&action=syscon",
                        
    'descr'      => $lang['opt_allc'],
                        
    'image'      => "tools.png",
                        
    'access'     => "1",
                        ),
    -------------------------------
    выше вставляем
    PHP:
    if ($member_db[2]<>SYSOP)
        {
             
    $options['filter'] = array(
                        array(
                            
    'name'     => 'Добавить статью',
                            
    'url'      => "$PHP_SELF?mod=addnews&action=addnews",
                            
    'descr'    => 'Добавление статьи в любой раздел сайта',
                              
    'image'    => "news.png",
                            
    'access'   => "2",
                        ),
                        
                        array(
                            
    'name'     => 'Редактировать статьи',
                            
    'url'      => "$PHP_SELF?mod=editnews&action=list",
                            
    'descr'    => 'Управление всеми статьями сайта',
                              
    'image'    => "comments.png",
                            
    'access'   => "2",
                        ),
                        array(
                           
    'name'       => 'Разделы сайта',
                           
    'url'        => "$PHP_SELF?mod=categories",
                           
    'descr'      => 'Управление разделами сайта',
                           
    'image'      => "cats.png",
                           
    'access'     => "1",
                        ),
                        array(
                        
    'name'       => 'Блоки, части страници',
                        
    'url'        => "$PHP_SELF?mod=banners&action=list",
                        
    'descr'      => 'Блоки, баннеры ссылки',
                        
    'image'      => "ads.png",
                        
    'access'     => "1",
                        ),
                        array(
                        
    'name'       => $lang['opt_vote'],
                        
    'url'        => "$PHP_SELF?mod=editvote",
                        
    'descr'      => $lang['opt_votec'],
                        
    'image'      => "votes.png",
                        
    'access'     => "1",
                        ),
                        array(
                        
    'name'       => 'Личные данные',
                        
    'url'        => "$PHP_SELF?mod=options&action=personal",
                        
    'descr'      => $lang['opt_privc'],
                        
    'image'      => "pset.png",
                        
    'access'     => "all",
                        ),
                        
    /*array(
                        'name'       => $lang['opt_user'],
                        'url'        => "$PHP_SELF?mod=editusers&action=list",
                        'descr'      => $lang['opt_userc'],
                          'image'         => "uset.png",
                        'access'     => "1",
                        ),*/

          
    );
        }
        else
        {
    ========================
    ищем
    PHP:
    array(
                           
    'name'       => $lang['opt_google'],
                           
    'url'        => "$PHP_SELF?mod=googlemap",
                           
    'descr'      => $lang['opt_googlec'],
                              
    'image'    => "googlemap.png",
                           
    'access'     => "1",
                        ),

          );
    -------------------------------
    и ниже вставляем
    PHP:
    }
    ========================
    ищем
    PHP:
    if ($subs == 1$lang['opt_hopt'] = $lang['opt_s_acc'];
        if (
    $subs == 2$lang['opt_hopt'] = $lang['opt_s_tem'];
        if (
    $subs == 3$lang['opt_hopt'] = $lang['opt_s_fil'];
        if (
    $subs == 4$lang['opt_hopt'] = $lang['opt_s_oth'];
    -------------------------------
    меняем на
    PHP:
    if ($member_db[2]<>SYSOP)
        {
            
    $lang['opt_hopt'] = 'Управление сайтом';
        }
        else
        {
            if (
    $subs == 1$lang['opt_hopt'] = $lang['opt_s_acc'];
            if (
    $subs == 2$lang['opt_hopt'] = $lang['opt_s_tem'];
            if (
    $subs == 3$lang['opt_hopt'] = $lang['opt_s_fil'];
            if (
    $subs == 4$lang['opt_hopt'] = $lang['opt_s_oth'];
        }
    ========================


    работает вроде норм на 5 сайтах тестил
     
    antiterror, Goodcat, lifediz и ещё 1-му нравится это.
  2. Jerry

    Jerry тот самый Учиха

    Регистр.:
    16 апр 2006
    Сообщения:
    1.226
    Симпатии:
    490
    Убери эту махину, сделай картинку с превью. Залей на ipicture.ru
     
  3. Jigsaff

    Jigsaff Постоялец

    Регистр.:
    17 июн 2006
    Сообщения:
    103
    Симпатии:
    11
    ИМХО лучше б в модуль это все превратить...есть же модули для той же джумлы аналогичные..
     
  4. egor1908

    egor1908 Создатель

    Регистр.:
    14 фев 2008
    Сообщения:
    26
    Симпатии:
    1
    Я не понял, ты сам можеш настраивать то что отображается конкретному пользователю, или у выбранного пользователя просто будет "Ограниченая" админка?


    Тоесть это настраивается, так?
    Но по моему тогда просто модуль был бы куда удобнее.
     
  5. Tamplier

    Tamplier

    Регистр.:
    19 июл 2008
    Сообщения:
    222
    Симпатии:
    16
    А если просто назначить его главным редактором? И проблем нет с модулями.
     
  6. jred

    jred

    Регистр.:
    16 сен 2008
    Сообщения:
    383
    Симпатии:
    39
    читаем внимательней
     
  7. egor1908

    egor1908 Создатель

    Регистр.:
    14 фев 2008
    Сообщения:
    26
    Симпатии:
    1
    Я вот думаю.. Может тупо создать группу с теми же правами, но с именем "Администратор"?
     
  8. Tapalane

    Tapalane Создатель

    Регистр.:
    21 мар 2008
    Сообщения:
    39
    Симпатии:
    9
    а мне нравится, а создание группы невозможно с теми правами, которые вы хотите - сам движок, через админку, по-моему не предлагает гибкую установку прав. Безусловно, что-то там есть, но не так подробно можно ограничить права
     
  9. iSQUARD

    iSQUARD Постоялец

    Регистр.:
    10 май 2007
    Сообщения:
    91
    Симпатии:
    16
    помоему проще создать группу на правах "Главного редактора" и обозвать ее "Главный aдмин" и в названии заменить одну букву на английскую.... как например которую выделил я....
    И так мы получим две, на вид одинаковые группы, но с разными правами :)
     
  10. antiterror

    antiterror xProgramming

    Регистр.:
    22 авг 2007
    Сообщения:
    344
    Симпатии:
    135
Статус темы:
Закрыта.