Как предоставить персоналу доступ к вновь созданному пользователю в Django - PullRequest
0 голосов
/ 22 октября 2018

Я новичок в Djnago и Python.Я создал класс промежуточного программного обеспечения в Djnago с именем StaffAccessMiddleware. Я использовал приложение social_django, чтобы создать пользователя из Gmail, и я хочу внедрить is_staff = True и назначить хотя бы одну группу, только если пользователи входят в DJango firstTime.

Мой вопроскак получить доступ к пользователю в промежуточном программном обеспечении и проверять только первый раз, когда пользователь будет вводить этот код, в этом случае мне нужно назначить is_staff = True и назначить группу после создания пользователя.

Я пытался создать класс промежуточного программного обеспечения, как показано ниже.

class StaffAccessMiddleware(object):
    def process_request(self, request):
        if hasattr(request, 'user') and request.user.is_authenticated():
                user = request.user
        if groups:
            groups[0].name
        return None

1 Ответ

0 голосов
/ 22 октября 2018

Я бы предложил вам использовать pipeline, что-то вроде этого:

  1. Добавить пользовательский конвейер для обновления пользователя как is_staff=True
  2. В этом конвейере проверьте is_new параметр и обновление пользователя только тогда, когда is_new равен True.Social-auth отправляет is_new=True при первом входе пользователя в систему, то есть при создании пользователя.
  3. Добавьте свой пользовательский конвейер в настройках SOCIAL_AUTH_PIPELINE.
  4. Затем вы можете ограничить некоторые представлениятолько для сотрудников, указав permission_required настроек.

Ваш конечный конвейер может выглядеть примерно так:

def make_new_user_as_staff(backend, user, is_new=False, *args, **kwargs):
    if backend.name == 'gmail' and is_new:
        user.is_staff = False
        user.save()

In settings.py (или файл настроек)

SOCIAL_AUTH_PIPELINE = (
    #other pipelines goes here
    "<full-path-to-make_new_user_as_staff-pipeline>",
    #some other pipelines goes here
)

Ссылка: https://python -social-auth-docs.readthedocs.io / en / latest / pipeline.html

Дайте мне знать, если я неправильно понял ваш запрос /это не решит вашу проблему

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...