Django - ograniczenie dostępu do edytowania obiektów

0

Hej, od jakiegoś czasu piszę sobie bloga w django z templatkami i natknąłem się na problem z zabiezpieczeniem tworzenia i edycji postów. Mianowicie chcę, aby tworzyć/usuwać/edytować posty mogli tylko osoby do tego uprawnione (powiedzmy, że są redaktorami bez uprawnień administratora). Mam zrobiony widok do edycji i zastanawiam się jak powinno się takie coś zabezpieczać. Czy zwykły if w templatce wystarczy? Czy może użyć jakichś dekoratorów albo permisji w widoku? Myślałem też nad zrobieniem zmiennej typu is_staff w modelu użytkownika i sprawdzać to potem w widoku, tylko moje pytanie brzmi czym takie rozwiązanie różni się od permisji?

1

Stwórz sobie grupę np. Redaktorzy

Następnie możesz stworzyć sobie tag na sprawdzenie, czy user jest w danej grupie i na podstawie wyniku stworzyć logikę.

Załóżmy, że jestwgrupie to tag.

{% if request.user } | jestwgrupie %}
do something
{% endif %}

Ogólnie sposobów jest więcej. Równie dobrze możesz stworzyć nowy model usera z dodatkowym atrybutem "rola".

0

@ledi12: właśnie wiem, że sposobów jest masa, tylko czy jest jakiś taki najbardziej właściwy? jest jakaś konwencja tworzenia takich restrykcji?

0

Jeżeli ten widok ma być tylko i wyłącznie do edycji tudzież dostępny przez konkretnych użytkowników to można jeszcze pomyśleć o customowych permisjach. Wtedy możesz nad widokiem użyć @permission_required. Jesli user nie posiada takowej permisji to będzie przerzucony na odpowiedni url.

1 użytkowników online, w tym zalogowanych: 0, gości: 1