Найти - Пользователи
Полная версия: Ограничение прав
Начало » Django » Ограничение прав
1 2
Ferroman
Интересно, а по какому же принципу тогда вы собираетесь определять какой пользователь имеет нужные права, а какой нет?
Kamber
Для каждого пользователя есть возможность назначить права….только в админке они какие-то ущербные…
Я подключил к админке модель Permission - в принципе получил возможность создавать свои права… однако - не совсем понял как оно работает…
Попробовал назначать стандартное право - добавил Ваш код в шаблон…. не сработало…
Ferroman
Будьте, пожалуйста, точнее. Что именно вы добавили, и как проверяли работает, или нет?
Kamber
Итак… попробую уточнить
Существует модель
class MyDB (models.Model):

В админке существуют права на модели (добавление, изменение и удаление). т.е. существует право myapp | myDB | Can add mydb
Назначаю его пользователю (только это право)

В шаблоне пишу:
{% if perms.foo %}
{% if perms.foo.add_mydb %}
<div>Права есть</div>
{% else %}
<div>Прав нет</div>
{% endif %}
{% endif %}
Так вот - получается что прав как небыло так и нет…
Вероятно я что-то не до конца понял…
Kamber
Одна проблема решена… заключалась она в невнимательном прочтении документации

в конструкции

{% if perms.foo %}
{% if perms.foo.add_mydb %}

вместо foo необходимо поставить appName - в моем случае myApp.
Теперь копаю в сторону отказа от моделей…
Kamber
Продолжение решения.
В admin.py приложения добавляем:
from django.contrib.auth.models import Permission
и
admin.site.register(Permission)
Получаем в Админке возможность создавать и редактировать права…
Так как мне необходимо управлять интерфейсом сайта - то я заношу права под типом “sites” и в шаблоне проверяю права по этой группе…
(вместо myApp указываю sites)

Может не самое изящное решение - но работает
Ferroman
Собственно, так всё и задумывалось. Только я бы рекомендовал специфические права для модели, описывать в самой модели - в коде.
ilq
Приветствую. Вопрос у меня точно такой же, но прочитав тред до конца не разобрался.
Начну с задачи. Необходимо создать страницу, на которой некоторая часть контента (например, ссылка) будет отображаться только для пользователей, обладающих определенным правом, например, ‘can_view_link’.
Как я это понимаю. Человек проходит авторизацию, а в шаблоне пишем проверку на наличие права ‘can_view_link’ у данного пользователя. И если он этим правом обладает, то показывать, иначе не показывать.
Авторизацию я уже “осилил”, а вот права как добавить пользователю - не пойму. Моделей у меня нет - то есть в models.py у приложения я ничего не пишу. А permissions как я понял по документации можно добавлять только в модели в class Meta. То есть если бы была модель, то туда добавил бы и потом в админке мог этому пользователю присвоить это созданное право.
Теперь в замешательстве - куда и как мне прописать право, чтобы оно было в таблице permissions и можно было присваивать пользователям через админку.

С уважением, Илья.
ilq
Не нашел как сделать без модели. Поэтому создал модель специально для прав:
class MyPermissins(models.Model):
class Meta:
permissions = (
('can_view_empty_sub', ‘Может видеть пустые подсети’),
)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB