вторник, августа 07, 2007

смерть ORM'у

реализовал сегодня идеальную систему прав для движка. есть пользователи, каждый может состоять в нескольких группах. как для группы так и для отдельного пользователя в определённом разделе каталога можно назначить свою роль, а у каждой роли есть свой набор прав.
в итоге запрос получения привелегий доступа к определённой статье для текущего пользователя выглядит следующим образом:
$perms= $db->get1d('
select *
from
mo_cat_art as ca
,
mo_catalog as c1
,
mo_catalog as c2
,
mo_rules as ru
,
mo_roles as ro
where
ca.art_id = ',$art['art_id'],'
and
ca.cat_id = c1.cat_id
and
c1.cat_no >= c2.cat_no
and
c1.cat_sub <= c2.cat_sub
and
c2.cat_id = ru.cat_id
and
(
ru.user_id = ',$user['user_id'],'
or
ru.group_id in ',$user['grouplist'],'
)
and
ru.role_id = ro.role_id
group by
ru.rule_id
order by
c2.cat_no desc
');

сижу, думаю, а не перемудрил ли я? (o_0)`

1 комментарий:

Dark-Demon комментирует...

прищёл к выводу, что недомудрил... ща ещё пару таблиц приджойню... ^_^