[Закрыть]
 
popoff.donetsk.ua
Для утвердительного ответа достаточно слова «да». Все прочие слова придуманы, чтобы сказать «нет».
Начало | Новости | Статьи | Форум | Опросы | Карта сайта | Обо мне
popoff.donetsk.ua - Форум - Программирование на PHP - Как отделить passport.privilege от системы?

Как отделить passport.privilege от системы?

форумы popoff.donetsk.ua
Страницы: [1]
<< Новый  |  Старый >>  |  Ответ не возможен

Внимание! Этот топик устарел. Пожалуйста, создайте новый топик, чтобы задать интересующий Вас вопрос.

Автор Сообщение
folone
Георгий
Апр, 2007
Сообщений: 14
folone url://forum.message:1964
Как отделить passport.privilege от системы?

Очень хочется для своих нужд иметь отдельно реализованую Вами систему управления правами администраторов. Подскажите пожалуйста (в общих чертах), как бы её отделить от cms`ки. Спасибо.

Это сообщение было отредактировано popoff 15.05.07 19:16.
popoff
Yuri
Июл, 2004
Сообщений: 940
popoff url://forum.message:1965

Ну, сама система (точнее, её ядро) в принципе находится в файле passport.privilege.php и от системы отделяется очень легко.

Это там всякие редактор ролей и редакторы списков привилегий по файлам разбросаны и от системы отделяются тяжело...

________________________________
Если не будет деревьев — нам нечем будет дышать, если вода загрязнится — нам нечего будет пить.
folone
Георгий
Апр, 2007
Сообщений: 14
folone url://forum.message:1990

Скажите, будет ли работать админка (в которой назначаются роли, и прочее), если отделить её следующим образом:

начнём с папки /popoff/public_html/passport/ из неё составим список файлов. в файлах будем искать lib_include() и lib_include_once(). соответствующие файлы по правилам, прописанным в /lib/inc.php добавляем в наш список. далее - снова по списку с тем же алгоритмом. и так пока при следующем проходе список не перестанет пополняться. далее удаляем всё, кроме файлов нашего списка. получаем готовую, правильно распиханную по папкам систему.

folonemind

?

popoff
Yuri
Июл, 2004
Сообщений: 940
popoff url://forum.message:1994

Будет. Только таким способом Вы не отделите её от системы, а лишь выкините несколько не используемых службой файлов.

________________________________
Если не будет деревьев — нам нечем будет дышать, если вода загрязнится — нам нечего будет пить.
folone
Георгий
Апр, 2007
Сообщений: 14
folone url://forum.message:1995

А в чём разница?
И ещё такой вопрос: где можно почитать про используемую Вами лицензию (в блоке LICENSE-VERIFICATION)? Она повлияет на работоспособность службы?

popoff
Yuri
Июл, 2004
Сообщений: 940
popoff url://forum.message:1997

А в чём разница?

foloneфорумы popoff.donetsk.ua

В том, что основная часть ядра системы таким образом не удалится. К примеру, подсистема управления многоязычностью и переводами, шаблонизатор, подсистема управления пользователями и прочие. В большинстве систем существуют собственные версии этих модулей.

И ещё такой вопрос: где можно почитать про используемую Вами лицензию (в блоке LICENSE-VERIFICATION)? Она повлияет на работоспособность службы?

foloneфорумы popoff.donetsk.ua

Никак не повлияет. Можно безболезненно удалить полностью. Там только в файлах *.html нужно оставить подключение файла include('inc.php'); Но если удалять, то нужно удалять сразу везде. Не везде можно удалять только в файлах libs/*/*.php

________________________________
Если не будет деревьев — нам нечем будет дышать, если вода загрязнится — нам нечего будет пить.
folone
Георгий
Апр, 2007
Сообщений: 14
folone url://forum.message:2006

В том, что основная часть ядра системы таким образом не удалится. К примеру, подсистема управления многоязычностью и переводами, шаблонизатор, подсистема управления пользователями и прочие. В большинстве систем существуют собственные версии этих модулей.

popoffфорумы popoff.donetsk.ua


тоесть, единственный выход - разбираться с функциями, и отделять их себе в проект по мере необходимости?

popoff
Yuri
Июл, 2004
Сообщений: 940
popoff url://forum.message:2007

folone,
ну, разбираться в любом случае придётся ;)

Там основная проблема в том, что редакторы списков привилегий администраторов и редакторы ролей у меня завязаны на шаблонизаторе, подсистеме управления многоязычностью и нескольких других системах, которых в других ЦМС могут быть другими. А сами по себе функции ядра подсистемы управления привилегиями вырезаются, в принципе легко. Они все в одном файле находятся - passport.privilege.php.

________________________________
Если не будет деревьев — нам нечем будет дышать, если вода загрязнится — нам нечего будет пить.
folone
Георгий
Апр, 2007
Сообщений: 14
folone url://forum.message:2073

Собственно, интересует только страничка privilege.edit.html. Выбрал из движка все функции, которые ей нужны, вставил в отдельный файл (получилось 380 функций :) ), define`ы - по такому же принципу, в самой страничке подключил эти два файла, добавил шаблонов, которые она (страничка) попросила. В результате всего при запуске выводится страница с кодом:

<p id="debug_info">Exit-Status: 0 get-ok</p>

И всё. В чём может быть проблема? Почему не отображается страница Edit user privileges?

folone
Георгий
Апр, 2007
Сообщений: 14
folone url://forum.message:2075

С предыдущей проблемой разобрался :)
Появилась новая. Ошибка в синтаксисе запроса к базе:
select light_cms_msg_src.k_msg, light_cms_msg_src.dt_access, light_cms_msg_dst.s_dst from light_cms_msg_src left join light_cms_msg_dst on light_cms_msg_dst.k_msg=light_cms_msg_src.k_msg and light_cms_msg_dst.k_lang= where s_src='Edit user privileges'
В функции function m($s,$e=array())
Подскажите пожалуйста одно из возможных значений $cms_info['k_lang'] (русский желательно :) ) чтобы подставить его в функцию вместо этой переменной.

~~~~~ 13 Июл 2007, 11:15, спустя 1 час 22 минуты ~~~~~

:) мне уже просто стыдно. С этой проблемой тоже разобрался. Осталось только разобраться, как передать логин/пароль тому, что получилось.

popoff
Yuri
Июл, 2004
Сообщений: 940
popoff url://forum.message:2077

folone,

________________________________
Если не будет деревьев — нам нечем будет дышать, если вода загрязнится — нам нечего будет пить.
folone
Георгий
Апр, 2007
Сообщений: 14
folone url://forum.message:2080

Ещё вопрос: каким образом передать получившейся системе логин/пароль? И где он вообще записывается? В сессии? Как именно?

folone
Георгий
Апр, 2007
Сообщений: 14
folone url://forum.message:2086

сделал вот таким методом:

<?php case 0// ok
    
debug_status(0,'logged_in');
    
//lib_include('mp.redirect.ok.xml',m('Спасибо, что не забываете нас!|Greeting after user loggs in'),$url,m('passport|title'));
    
$msg  =m('Удачно!');
$title=m('Есть!');
$url="privilege.edit.php";
  
$delay=2;

template_echo('mp.redirect.ok',array(
  
'delay' => $delay,
  
'url' => $url,
  
'title' => $title,
  
'msg1' => $msg,
  
'msg2' =>
    
str_replace(
      array(
'[url]','[/url]'),
      array(
'<a href="'.$url.'">',"</a>"),
      
m("[url]Жмём[/url] Чтобы не ждать 2 секунды.")),
  ));
    
debug_exit();
    break; 
?>


Всё проходит, но редиректит на страницу без прав (Exit-Status: 1 access-denied). Видимо, что-то нужно в сессию ещё записать :) А вот что и как - не получается понять. Скажите, где (в каком файле, в какой функции, хотя-бы приблизительно) происходит эта самая запись?

folone
Георгий
Апр, 2007
Сообщений: 14
folone url://forum.message:2090

Насколько я понял, запись сессии происходит в функции

<?php function passport_set_session($login,$pwd)
{
  if(empty(
$login)||empty($pwd))
  {
    
$_SESSION['passport']=array();
    unset(
$_SESSION['ip-mask']); //This will set the default value
  
}
  else
  {
    
$sl=passport_simplify_login($login);
    
$_SESSION['passport']=array(
      
'sl' => $sl,
      
'ph' => sha1($sl.$pwd.session_id().ADDR_SECRET)
    );

    
$ip_change=mysql_query_single("
      select
        ip_change
      from
        "
.PASSPORT_TABLE."Data,
        "
.PASSPORT_TABLE."login
      where
        SimpleLogin='"
.addslashes($sl)."' and
        "
.PASSPORT_TABLE."Data.uid=".PASSPORT_TABLE."login.uid
        "
);
    if(
$ip_change)
    {
      
$ip_mask=0xffffffff << (32-$ip_change);
      
$_SESSION['ip-mask']=$ip_mask;
    }
    else
      
$_SESSION['ip-mask']=0;
  }
  
passport_privilege_flush();
}
?>


Добавил вызов функции:

<?php case 0// ok
    
debug_status(0,'logged_in');
    
//lib_include('mp.redirect.ok.xml',m('Спасибо, что не забываете нас!|Greeting after user loggs in'),$url,m('passport|title'));
passport_set_session($login,$f['s_password']);
$msg  =m('Удачно!');
$title=m('Есть!');
$url="privilege.edit.php";
  
$delay=2;

template_echo('mp.redirect.ok',array(
  
'delay' => $delay,
  
'url' => $url,
  
'title' => $title,
  
'msg1' => $msg,
  
'msg2' =>
    
str_replace(
      array(
'[url]','[/url]'),
      array(
'<a href="'.$url.'">',"</a>"),
      
m("[url]Жмём[/url] Чтобы не ждать 2 секунды.")),
  ));
    
debug_exit();
    break;
?>


Та же история. Авторизация проходит, на страницу не пускает с debug-status'ом 1, Access-denied.

folone
Георгий
Апр, 2007
Сообщений: 14
folone url://forum.message:2097

Думаю, для наглядности стоит приложить то, что получилось. Все настройки - в /test/lib/lib.define.php, запускать из /test/html/index.php.
Буду очень благодарен если посмотрите.

Внимание! Этот топик устарел. Пожалуйста, создайте новый топик, чтобы задать интересующий Вас вопрос.

Страницы: [1]
<< Новый  |  Старый >>  |  Ответ не возможен
Вход
Поиск[?]:
Программное обеспечение любой сложности
koins.com.ua