Как обрабатывать аутентификацию в django для нескольких приложений и функциональности

Я знаю, что аутентификация должна быть глобальной. все приложения в проекте django должны служить одной цели, но я нахожусь в ситуации, когда мне нужно ограничить некоторые части приложения для некоторых пользователей.

У меня есть экран, который позволяет получить доступ к различным функциям приложения

.i.e

  • личные расходы
  • список дел
  • планировщик электронной почты/планировщик отчетов

пользователи должны иметь возможность видеть все приложения, нажимать на них, входить в систему и затем получать доступ к различным функциям в зависимости от того, кем они являются.

представления также должны быть разными, когда это администратор или простой пользователь.

как этого можно достичь в django? с помощью групп?

Вы можете использовать различные вещи для достижения этой цели.

Использование декораторов, например, если вы хотите, чтобы любой пользователь мог видеть что-то, но не мог редактировать. Вы можете проверить уровень их прав при рендеринге страницы, так что они либо могут, либо не могут получить к ней доступ. И да, для этого вам нужно определить группы пользователей и установить разрешения. Чтобы увидеть все разрешения, возможные в вашем приложении, вы можете посмотреть таблицу под названием auth_permission в вашей базе данных.

Если вы точно знаете пользователя, которому вы хотите предоставить доступ к определенной части вашего приложения, другим решением может быть что-то вроде :

def username_check(user):
   return user.email.startswith('linux')

и используйте его в своем представлении как :

check = username_check(user_)
    if check:
        # do something or get an object to send to the template
    else:
        # do something else

и в своем шаблоне вы можете сделать что-то вроде:

{% if objects_that_you_passed_via_context_is_not_none %}
      # show the user something             
{% else %}
      # show something else                         
{% endif %}
Вернуться на верх