|
|
05.04.2010, 10:57
|
|
chuc
Зарегистрирован: 2009-10-08
Сообщений: 43
|
Допустим у меня есть раздел в котором есть например 10 разделов, для каждой группы пользователей доступны определенные разделы, я их вывожу через s_browse_sub(), как мне сделать так чтобы когда пользователь заходил ему показывались только те разделы которые ему доступны???
я не настаиваю именно на использовании s_browse_sub(), есть другие способы реализации предлагайте, буду ток рад) заранее спс)
makushkin
|
|
|
05.04.2010, 16:18
|
|
MipH
Спирин Дмитрий
Зарегистрирован: 2004-12-22
Сообщений: 252
|
Либо использовать напрямую знание "Permission
Таблица «Экземпляр прав». В таблице хранятся экземпляры прав для
конкретных пользователей. Связанные таблицы: PermissionGroup, User."
Либо Руководство разработчика, раздел Permission.
bbzone@gmail.com | bbz.ru | miph.info | miph.ruВы можете обратиться ко мне, если необходима разработка функционала на NetCat
|
|
|
06.04.2010, 00:32
|
|
malich
Андрей Малков
Зарегистрирован: 2005-08-09
Сообщений: 522
|
добавьте в шаблон меню условие. К примеру если доступ к разделам жестко забит
$browse[unactive] = "".($data[$i][Subdivision_ID]==195 && $current_user[PermissionGroup_ID]==2 ?"выводим что то":"выводим что то другое")."";
$current_user[PermissionGroup_ID] - id группы к которой принадлежит текущий авторизованный пользователь
$data[$i][Subdivision_ID] - id раздела
либо как писал MipH сравнивайте группу пользователя с ее Permission
|
|
|
06.04.2010, 07:03
|
|
chuc
Зарегистрирован: 2009-10-08
Сообщений: 43
|
malich писал(а):добавьте в шаблон меню условие. К примеру если доступ к разделам жестко забит
$browse[unactive] = "".($data[$i][Subdivision_ID]==195 && $current_user[PermissionGroup_ID]==2 ?"выводим что то":"выводим что то другое")."";
$current_user[PermissionGroup_ID] - id группы к которой принадлежит текущий авторизованный пользователь
$data[$i][Subdivision_ID] - id раздела
либо как писал MipH сравнивайте группу пользователя с ее Permission
под PermissionGroup_ID подразумевается ведь одна группа а не несколько, если я канешь но правильно понимаю, если у меня пользователь состоит в 3 группах и в поле PermissionGroup_ID эта группа не стоит? то че делать?
Ктаму же не хочется привязывать к номерам разделов и групп, хочется сделать так чтоб назначил права на группу и забыл, что бы те над писать какой то код еще
makushkin
|
|
|
06.04.2010, 07:56
|
|
malich
Андрей Малков
Зарегистрирован: 2005-08-09
Сообщений: 522
|
$current_user[PermissionGroup_ID] это группа пользователя (Администраторы, внешние пользователи, ....), она берется из БД, табличка User и доступна для всех авторизованных пользователей.
Права этой группы хранятся в табличке Permission
соответственно вам зная группу пользователя($current_user[PermissionGroup_ID]) и id раздела ($data[$i][Subdivision_ID]) нужно делать запрос к БД и в зависимости от прав пользователя показывать ему информацию.
|
|
|
07.04.2010, 12:51
|
|
chuc
Зарегистрирован: 2009-10-08
Сообщений: 43
|
Кому интересно получилось вот так
Код:for($y=0;$y<count($current_user[Permission_Group]);$y++){
$group_id_user.= $current_user[Permission_Group][$y].($y==(count($current_user[Permission_Group])-1) ? "" : ", ");
}
$browse_lk[prefix] = "<div style='padding-top:10px;font-size:11px;'>";
$browse_lk[suffix] = "</div>";
$browse_lk[active] = $browse_lk[unactive] = ""; global $group_id_user,$AUTH_USER_GROUP;
$right = $db->get_var("SELECT count(Permission_ID) FROM Permission WHERE `PermissionGroup_ID` IN (".$group_id_user.") AND `Catalogue_ID`= ".$data[$i][Subdivision_ID]."");
$result.=($right>0 || $AUTH_USER_GROUP==1 ? "<div>%NAME</div>" : "")."";
$browse_lk[unactive] = ""; global $group_id_user,$AUTH_USER_GROUP;
$right = $db->get_var("SELECT count(Permission_ID) FROM Permission WHERE `PermissionGroup_ID` IN (".$group_id_user.") AND `Catalogue_ID`= ".$data[$i][Subdivision_ID]."");
$result.=($right>0 || $AUTH_USER_GROUP==1 ? "<div><a href=%URL>%NAME</a></div>" : "")."";
makushkin
|