2010-12-10 1 views
6

Как настроить django-регистрацию, что учетная запись должна быть активирована вручную администратором?Как настроить django-регистрацию, что учетная запись должна быть активирована вручную?

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

Возможно ли с django-регистрацией, или мне нужно использовать что-то еще и что использовать?

ответ

5

django-registration позволяет написать custom backend, чтобы справиться с необходимостью пользовательских аксессуаров.

Итак, что бы вы сделали, создайте свой собственный бэкэнд, внедрив сами register и activate.

Вот пример того, как можно реализовать register функцию:

def register(self, request, **kwargs): 
    username, email, password = kwargs['username'], kwargs['email'], kwargs['password1'] 
    if Site._meta.installed: 
     site = Site.objects.get_current() 
    else: 
     site = RequestSite(request) 
    new_user = RegistrationProfile.objects.create_inactive_user(username, email, 
                   password, site, 
                   send_email=False) 
    # send an email to the admins with user information 
    send_new_user_notification(new_user) # you would write this function 
    signals.user_registered.send(sender=self.__class__, 
           user=new_user, 
           request=request) 
    return new_user 

Ключевым моментом является, чтобы убедиться, send_email установлен в ложь; что не позволит пользователю получить ссылку активации. Затем вы можете решить, имеет ли адрес электронной почты, отправленный админам, ссылку активации, или если вы довольны тем, что они идут в админ и просто проверяют поле «Актив».

Если вы используете AuthenticationForm от django.contrib.auth то он будет автоматически отклонять пользователей, чьи is_active является ложным, но если вы не используете что то убедитесь, что выполнить следующую проверку для любого запроса, где требуется активный пользователь:

def restricted_view(request): 
    if request.user and request.user.is_active: 
     #continue with the code 

Вы также можете написать свой собственный декоратор (см. @login_required для указателей). Обратите внимание, что @login_required делает не проверить на is_active.

 Смежные вопросы

  • Нет связанных вопросов^_^