Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » защита данных одних пользователей от других. Как правильно? [RSS Feed]

#1 Апрель 28, 2014 18:39:52

django314
Зарегистрирован: 2014-04-02
Сообщения: 28
Репутация: +  0  -
Профиль   Отправить e-mail  

защита данных одних пользователей от других. Как правильно?

В таблице имеется дополнительное поле profile_id, хранящее уникальное id профиля пользователя. Пользуюсь представлением на базе UpdateView. От редактирования данные удается защитить так:

class MyFormUpdate(LoginRequiredMixin,generic.UpdateView):
    model = Employee
    def form_valid(self, form):
        profile_id = ...
        record_id  = ...
        if profile_id == record_userprofile_id:
            return super(MyFormUpdate, self).form_valid(form)
        else:
           raise Http404(u"Как вам не стыдно %s" % self.request.user.get_username() )
Работает, редактировать чужие данные нельзя. Но, просмотреть чужие записи можно, перебирая числа:

myapp1/profile/update/Число

Число, как положено в стандартных View - это номер записи в таблице.

Как от этого защитить? Например, в шаблоне можно устроить проверку, но как туда передать данные из стандарной UpdateView? Может там как-то доступен залогиненый request.user и скрытое поле profile_id?

P.S. в принципе пользователя можно идентифицировать и по id из стандартного User.

Отредактировано django314 (Апрель 28, 2014 18:42:34)

Офлайн

#2 Апрель 28, 2014 19:23:26

Singularity
Зарегистрирован: 2011-07-28
Сообщения: 1387
Репутация: +  75  -
Профиль   Отправить e-mail  

защита данных одних пользователей от других. Как правильно?

from django.http import Http404
class OwnerOnlyMixin(object):
    def get_object(self, queryset=None):
        obj = super(OwnerOnlyMixin, self).get_object()
        if (obj.owner_id == self.request.user.pk) :
            return obj
        raise Http404

.owner_id cмени на то как у тебя там поля ФК на модель пользователей называется

Отредактировано Singularity (Апрель 28, 2014 19:24:33)

Офлайн

  • Начало
  • » Django
  • » защита данных одних пользователей от других. Как правильно?[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version