Пример задачи с использованием прав доступа: различия между версиями
Kondin (обсуждение | вклад) |
Kondin (обсуждение | вклад) |
||
Строка 31: | Строка 31: | ||
Берем файл user_menu.tpl и добавляем эту проверку<br> | Берем файл user_menu.tpl и добавляем эту проверку<br> | ||
− | <nowiki><div class="btn-group"> | + | <nowiki><div class="btn-group"><br> |
− | <a class="btn btn-success btn-small dropdown-toggle" data-toggle="dropdown" href="#"> | + | <a class="btn btn-success btn-small dropdown-toggle" data-toggle="dropdown" href="#"><br> |
− | {$fio} | + | {$fio}<br> |
− | <span class="caret"></span> | + | <span class="caret"></span><br> |
− | </a> | + | </a><br> |
− | <ul class="dropdown-menu"> | + | <ul class="dropdown-menu"><br> |
− | {if $permission->get_access($smarty.session.user_id, 'user_account', 'data_manager')} | + | {if $permission->get_access($smarty.session.user_id, 'user_account', 'data_manager')}<br> |
− | <li><a href="{$estate_folder}/account/data/?do=new">{$L_ADD_ADV}</a></li> | + | <li><a href="{$estate_folder}/account/data/?do=new">{$L_ADD_ADV}</a></li><br> |
− | <li><a href="{$estate_folder}/account/data/" >{$L_MY_ADVS}</a></li> | + | <li><a href="{$estate_folder}/account/data/" >{$L_MY_ADVS}</a></li><br> |
− | {/if} | + | {/if}<br> |
− | <li><a href="{$estate_folder}/account/profile/" >{$L_MY_PROFILE}</a></li> | + | <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> | + | <li><a href="{$estate_folder}/logout/" class="logout">{$L_LOGOUT_BUTTON}</a></li><br> |
− | </ul> | + | </ul><br> |
− | </div></nowiki> | + | </div><br></nowiki> |
Версия 07:41, 6 февраля 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.php добавляем строки:
require_once (SITEBILL_DOCUMENT_ROOT.'/apps/system/lib/system/permission/permission.php');
$permission = new Permission();
$smarty->assign('permission', $permission);
Теперь в самом шаблоне можно обращаться к этому объекту и определять права доступа, например мы можем открыть или закрыть пункты меню у пользователя.
Берем файл user_menu.tpl и добавляем эту проверку
<div class="btn-group"><br> <a class="btn btn-success btn-small dropdown-toggle" data-toggle="dropdown" href="#"><br> {$fio}<br> <span class="caret"></span><br> </a><br> <ul class="dropdown-menu"><br> {if $permission->get_access($smarty.session.user_id, 'user_account', 'data_manager')}<br> <li><a href="{$estate_folder}/account/data/?do=new">{$L_ADD_ADV}</a></li><br> <li><a href="{$estate_folder}/account/data/" >{$L_MY_ADVS}</a></li><br> {/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> </ul><br> </div><br>