Пример задачи с использованием прав доступа: различия между версиями

Материал из CMS Sitebill Wiki
Перейти к навигации Перейти к поиску
 
(не показано 5 промежуточных версий этого же участника)
Строка 23: Строка 23:
  
 
Также можно использовать объект Permission в самом шаблоне Smarty.<br>
 
Также можно использовать объект Permission в самом шаблоне Smarty.<br>
Для этого в файле /template/frontend/agency/main.php добавляем строки:<br>
+
Для этого в файле /template/frontend/agency/main/main.php добавляем строки:<br>
 
require_once (SITEBILL_DOCUMENT_ROOT.'/apps/system/lib/system/permission/permission.php');<br>
 
require_once (SITEBILL_DOCUMENT_ROOT.'/apps/system/lib/system/permission/permission.php');<br>
 
$permission = new Permission();<br>
 
$permission = new Permission();<br>
Строка 30: Строка 30:
 
Теперь в самом шаблоне можно обращаться к этому объекту и определять права доступа, например мы можем открыть или закрыть пункты меню у пользователя.<br>
 
Теперь в самом шаблоне можно обращаться к этому объекту и определять права доступа, например мы можем открыть или закрыть пункты меню у пользователя.<br>
 
Берем файл user_menu.tpl и добавляем эту проверку<br>
 
Берем файл user_menu.tpl и добавляем эту проверку<br>
<div class="btn-group">
 
<a class="btn btn-success btn-small dropdown-toggle" data-toggle="dropdown" href="#">
 
    {$fio}
 
    <span class="caret"></span>
 
  </a>
 
  <ul class="dropdown-menu">
 
<li><a href="{$estate_folder}/account/mywatchlists/" >Мои доступы</a></li>
 
  
{if $permission->get_access($smarty.session.user_id, 'user_account', 'data_manager')}
 
<li><a href="{$estate_folder}/account/data/?do=new">{$L_ADD_ADV}</a></li>
 
<li><a href="{$estate_folder}/account/data/" >{$L_MY_ADVS}</a></li>
 
{/if}
 
  
<li><a href="{$estate_folder}/account/profile/" >{$L_MY_PROFILE}</a></li>
+
{if $permission->get_access($smarty.session.user_id, 'user_account', 'data_manager')}<br>
<li><a href="{$estate_folder}/logout/" class="logout">{$L_LOGOUT_BUTTON}</a></li>
+
<li><a href="{$estate_folder}/account/data/?do=new">{$L_ADD_ADV}</a></li><br>
  </ul>
+
<li><a href="{$estate_folder}/account/data/" >{$L_MY_ADVS}</a></li><br>
</div>
+
{/if}<br>
 +
 
 +
<li><a href="{$estate_folder}/account/profile/" >{$L_MY_PROFILE}</a></li><br>
 +
<li><a href="{$estate_folder}/logout/" class="logout">{$L_LOGOUT_BUTTON}</a></li><br>

Текущая версия на 08:12, 23 марта 2014

Предположим, что нам нужно создать компонент – user_account (он будет определять у нас набор функций для личного кабинета пользователя). Причем для группы риэлторов (realtor) будет доступны функции добавления объявления (add_adv), удаления объявления (remove_adv).

А для группы директор агентства (director) будут доступны все функции риэлтора, но еще дополнительно функция создания и удаления новых риэлторов (add_user, remove_user)

Для этого нам потребуется создать функции: add_adv, remove_adv, add_user, remove_user. Создать компонент user_account и добавить в него вышеперечисленные функции.

Создать группы пользователей realtor, director.

Затем зайти в структуру прав доступа группы и назначить галочками доступы к соответствующим функциям.

Группа Функции
director add_adv, remove_adv, add_user, remove_user
Realtor add_adv, remove_adv

Таким образом мы построили матрицу прав доступа.

Чтобы воспользоваться такой матрицей в программном коде, нам нужно вызвать функцию проверки прав доступа из класса Permission.

$this->permission = new Permission();
if ( $this->permission->get_access($user_id, 'user_account', 'add_user') ) {
//тут код который разрешен для выполнения этому пользователю
}

Также можно использовать объект Permission в самом шаблоне Smarty.
Для этого в файле /template/frontend/agency/main/main.php добавляем строки:
require_once (SITEBILL_DOCUMENT_ROOT.'/apps/system/lib/system/permission/permission.php');
$permission = new Permission();
$smarty->assign('permission', $permission);

Теперь в самом шаблоне можно обращаться к этому объекту и определять права доступа, например мы можем открыть или закрыть пункты меню у пользователя.
Берем файл user_menu.tpl и добавляем эту проверку


{if $permission->get_access($smarty.session.user_id, 'user_account', 'data_manager')}

  • <a href="{$estate_folder}/account/data/?do=new">{$L_ADD_ADV}</a>

  • <a href="{$estate_folder}/account/data/" >{$L_MY_ADVS}</a>

  • {/if}

  • <a href="{$estate_folder}/account/profile/" >{$L_MY_PROFILE}</a>

  • <a href="{$estate_folder}/logout/" class="logout">{$L_LOGOUT_BUTTON}</a>