Главная страница » Статьи » Гибкая настройка учетных записей.

27.12.07  
  Гибкая настройка учетных записей.
 
Гибкая настройка учетных записей.

Как вы уже заметили, в Datalife Engine очень сильно различается функционал у групп Администраторы и Главные редакторы. Иногда хочется позволить доверенным лицам немного больше, но пускать в группу Администраторы тоже как-то неправильно. В этом туториале я расскажу как гибко раздать права для групп.

Итак будем идти по такой системе.
Сначала переназовем группы. Это так, чтобы не путаться и сразу понять задачи.

Стандартная группа - Администраторы - переименовываем в Главные администраторы
Стандартная группа - Главные редакторы - Переименовываем в Администраторы
Стандартная группа - Журналисты - Переименовываем в Модераторы

У этих групп ID должен быть соответственно 1,2,3. Это важно!

Их мы и будем переделывать. Если же вам нужен такой же функционал, как был первоначально у этих групп, вы можете создать новые стандартными средствами и раздать соответствующие права.

Перед модификацией советую сделать бекап файлов движка!

Значит сначала определимся какие именно права получат Администраторы и Модераторы

Открываем файл admin.php
И меняем admin на user у тех функций, которые хотим открыть Администраторам и Модераторам.

    $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', //Шаблоны e-mail сообщений
                            'static'       => 'admin', //Управление статическими страницами
                            'editvote'     => 'admin', //Правка голосований (включать вместе с Созданием голосований)
                            'addvote'      => 'admin', //Создание голосований (включать вместе с Правкой голосований)
                            'templates'    => 'admin', //Редактирование шаблонов
                            'newsletter'   => 'admin', //Почтовая рассылка
                            'blockip'         => 'admin', // Бан по IP
                            'usergroup'    => 'admin', //Редактирование групп пользователей
                            'dumper'         => 'admin', //Бекап и восстановление БД  (Включать вместе с Настройкой базы данных)
                            'userfields'   => 'admin', //Доп поля в профиле юзера
                            'banners'      => 'admin', //Банеры
                            'clean'        => 'admin', //Очистка бд
                            'rss'          => 'admin', //Rss импорт
                            'iptools'      => 'admin', //Утилитф IP
                            'search'       => 'admin', //поиск и замена в бд
                            'rssinform'    => 'admin', //RSS информер
                            'cmoderation'  => 'user',
                            'googlemap'    => 'admin', //Гуглевая карта сайта


Далее нам надо тупо отобразить в админке иконки на соответствующие разделы.

Открываем engine/inc/options.php и меняем поле в строке access для каждой функции
значение на 2 если хотим чтобы видели только Администраторы
или на 3, чтобы видели и Администраторы и Модераторы


$options['config'] = array(

                    array(
                    'name'       => $lang['opt_all'],
                    'url'        => "$PHP_SELF?mod=options&action=syscon",
                    'descr'      => $lang['opt_allc'],
                    'image'      => "allset.png",
                    'access'     => "1",       //Это не трогаем
                    ),

                    array(
                    'name'       => $lang['opt_cat'],
                    'url'        => "$PHP_SELF?mod=categories",
                    'descr'      => $lang['opt_catc'],
                    'image'      => "cats.png",
                    'access'     => "1",     // Управление категориями
                    ),

                    array(
                    'name'       => $lang['opt_db'],
                    'url'        => "$PHP_SELF?mod=dboption",
                    'descr'      => $lang['opt_dbc'],
                      'image'         => "dbset.png",
                    'access'     => "1",  //Настройка базы данных (Включать вместе с Бекапом и восстановлением БД  )
                    ),

                    array(
                    'name'       => $lang['opt_xfil'],
                    'url'        => "$PHP_SELF?mod=xfields&xfieldsaction=configure",
                    'descr'      => $lang['opt_xfilc'],
                      'image'    => "xfset.png",
                    'access'     => "1",   // Дополнительные поля
                    ),
     );

    $options['user'] = array(

                    array(
                    'name'       => $lang['opt_priv'],
                    '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",   //Редактирование пользователей
                    ),

                    array(
                    'name'       => $lang['opt_xprof'],
                    'url'        => "$PHP_SELF?mod=userfields&xfieldsaction=configure",
                    'descr'      => $lang['opt_xprofd'],
                      'image'    => "xprof.png",
                    'access'     => "1",
                    ),

                    array(
                    'name'       => $lang['opt_group'],
                    'url'        => "$PHP_SELF?mod=usergroup",
                    'descr'      => $lang['opt_groupc'],
                    'image'      => "usersgroup.png",
                    'access'     => "1",  //Доп поля в профиле юзера
                    ),
      );

    $options['templates'] = array(

                    array(
                       'name'       => $lang['opt_t'],
                       'url'        => "$PHP_SELF?mod=templates",
                       'descr'      => $lang['opt_tc'],
                         'image'      => "tmpl.png",
                       'access'     => "1",     //Редактирование шаблонов
                    ),

                    array(
                        'name'     => $lang['opt_email'],
                        'url'      => "$PHP_SELF?mod=email",
                        'descr'    => $lang['opt_emailc'],
                          'image'    => "mset.png",
                        'access'   => "1",       //Шаблоны e-mail сообщений
                    ),

      );

    $options['filter'] = array(

                    array(
                        'name'     => $lang['opt_fil'],
                        'url'      => "$PHP_SELF?mod=wordfilter",
                        'descr'    => $lang['opt_filc'],
                          'image'    => "fset.png",
                        'access'   => "2",  //Фильтр слов
                    ),

                    array(
                        'name'     => $lang['opt_ipban'],
                        'url'      => "$PHP_SELF?mod=blockip",
                        'descr'    => $lang['opt_ipbanc'],
                          'image'    => "blockip.png",
                        'access'   => "1",    //Бан по IP
                    ),

                    array(
                        'name'     => $lang['opt_iptools'],
                        'url'      => "$PHP_SELF?mod=iptools",
                        'descr'    => $lang['opt_iptoolsc'],
                          'image'    => "iptools.png",
                        'access'   => "1",  // IP Утилиты
                    ),
                    array(
                       'name'       => $lang['opt_sfind'],
                       'url'        => "$PHP_SELF?mod=search",
                       'descr'      => $lang['opt_sfindc'],
                          'image'    => "find_base.png",
                       'access'     => "1",  // Поиск и замена в БД
                    ),

      );

    $options['others'] = array(

                    array(
                    'name'       => $lang['opt_static'],
                    'url'        => "$PHP_SELF?mod=static",
                    'descr'      => $lang['opt_staticd'],
                      'image'         => "spset.png",
                    'access'     => "1",   //Статические страницы
                    ),

                    array(
                    'name'       => $lang['opt_banner'],
                    'url'        => "$PHP_SELF?mod=banners&action=list",
                    'descr'      => $lang['opt_bannerc'],
                    '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'       => $lang['main_newsl'],
                    'url'        => "$PHP_SELF?mod=newsletter",
                    'descr'      => $lang['main_newslc'],
                    'image'      => "email.png",
                    'access'     => "1",    //почтовая рассылка
                    ),

                    array(
                       'name'       => $lang['opt_img'],
                       'url'        => "$PHP_SELF?mod=files",
                       'descr'      => $lang['opt_imgc'],
                          'image'    => "iset.png",
                       'access'     => "1", //Управление загруженныим файлами и картинками
                    ),

                    array(
                       'name'       => $lang['opt_clean'],
                       'url'        => "$PHP_SELF?mod=clean",
                       'descr'      => $lang['opt_cleanc'],
                          'image'    => "clean.png",
                       'access'     => "1", //Очитка БД
                    ),
                    array(
                       'name'       => $lang['opt_rss'],
                       'url'        => "$PHP_SELF?mod=rss",
                       'descr'      => $lang['opt_rssc'],
                          'image'    => "rss.gif",
                       'access'     => "1", // RSS Импорт
                    ),
                    array(
                       'name'       => $lang['opt_rssinform'],
                       'url'        => "$PHP_SELF?mod=rssinform",
                       'descr'      => $lang['opt_rssinformc'],
                          'image'    => "rss.gif",
                       'access'     => "1",  // RSS Информер                    ),

                    array(
                       'name'       => $lang['opt_google'],
                       'url'        => "$PHP_SELF?mod=googlemap",
                       'descr'      => $lang['opt_googlec'],
                          'image'    => "googlemap.png",
                       'access'     => "1",  // Гуглевая карта сайта
                    ),

      );
      


Расставили по вашему желанию? =))))

Далее иконки появились, но при попытке зайти в опцию пишет что в доступе отказано.
Тут начинается самое веселое.

Заходим в папку engine/INC и видим кучу фалов))
Большая часть из них - наши модули админки.

В каждом модуле вначале идет код типа
if($member_db[1] != 1){ msg("error", $lang['addnews_denied'], $lang['db_denied']); }

Это строка проверяет, если юзер не из группы ID=1 то посылает его нафиг.
Нам же надо позволить в те или иные функции пустить юзера с ID 2 или 3.
Для этого меняем в зависимости от того, хотим мы дать доступ только Администраторам или и Администраторам и Модератором соответственно.
$member_db[1] != 1
на
$member_db[1] > 2
или
$member_db[1] > 3


Далее я перечислю названия файлов и соответствующий пункт в меню где надо произвести подобную замену


editusers.php //Редактирование пользователей
categories.php // Управление категориями
files.pgp //Управление загруженными картинками
massaction.php //массовые действия
xfields.php // Дополнительные поля
dboption.php //Настройка базы данных (Включать вместе с Бекапом и восстановлением БД  )
dumper.php //Бекап и восстановление БД  (Включать вместе с Настройкой базы данных)
email.php //Шаблоны e-mail сообщений
Изменений не требуется//Управление статическими страницами
editvote.php //Правка голосований (включать вместе с Созданием голосований)
addvote.php //Создание голосований (включать вместе с Правкой голосований)
templates.php //Редактирование шаблонов
newsletter.php //Почтовая рассылка
Блокировка посетителей по IP // Бан по IP
usergroup.php //Редактирование групп пользователей
Изменений не требуется //Доп поля в профиле юзера
banners.php //Банеры
clean.php //Очистка бд
rss.php //Rss импорт
iptools.php //Утилиты IP
search.php //поиск и замена в бд
rssinform.php //RSS информер
googlemap.php //Гуглевая карта сайта


Вот и все. Для проверки создайте тестовых пользователей и полазайте по настройкам.
Если есть какие-то вопросы обращайтесь, может что-то упустил)

Гибкая настройка учетных записей.
 
Просмотров: 1272 | Версия для печати
При пользовании услугами студий web-дизайна Вам наиболее важны:

Сроки выполнения работы
Художественный уровень
Выполнение всех требований
Технически грамотное исполнение
Низкая цена