示例#1
0
def register(request):
    if request.user.is_authenticated():
        messages.error(request, _(u'You cannot be logged in when registering.'))
        return HttpResponseRedirect('/')
    else:
        if request.method == 'POST':
            form = RegisterForm(request.POST)
            if form.is_valid():
                cleaned = form.cleaned_data

                # Create user
                user = User(
                    username=cleaned['desired_username'],
                    first_name=cleaned['first_name'],
                    last_name=cleaned['last_name'],
                    email=cleaned['email'],
                )
                user.set_password(cleaned['password'])
                user.is_active = False
                user.save()

                # Create userprofile
                up = UserProfile(
                    user=user,
                    nick=cleaned['desired_username'],
                    date_of_birth=cleaned['date_of_birth'],
                    zip_code=cleaned['zip_code'],
                    address=cleaned['address'],
                    phone=cleaned['phone'],
                )
                up.save()

                # Create the registration token
                token = uuid.uuid4().hex
                rt = RegisterToken(user=user, token=token)
                rt.save()

                link = request.build_absolute_uri(reverse('auth_verify', args=[token]))
                context = {
                    'link': link,
                }
                txt_message = render_to_string('auth/email/verify_account.txt', context, request).strip()
                html_message = render_to_string('auth/email/verify_account.html', context, request).strip()
                send_mail(
                    subject=_(u'Verify your account'),
                    from_email=settings.STUDLAN_FROM_MAIL,
                    recipient_list=[user.email],
                    message=txt_message,
                    html_message=html_message,
                )

                messages.success(request, _(u'Registration successful. Check your email for verification instructions.'))

                return HttpResponseRedirect('/')
            else:
                form = RegisterForm(request.POST, auto_id=True, error_class=InlineSpanErrorList)
        else:
            form = RegisterForm()

        return render(request, 'auth/register.html', {'form': form})
示例#2
0
文件: views.py 项目: sklirg/studlan
def recover(request):
    if request.user.is_authenticated():
        return HttpResponseRedirect('/')
    else:
        if request.method == 'POST':
            form = RecoveryForm(request.POST)
            if form.is_valid():
                email = form.cleaned_data['email']
                users = User.objects.filter(email=email)

                if len(users) == 0:
                    messages.error(request, _(u"That email is not registered."))
                    return HttpResponseRedirect('/')

                user = users[0]
                user.save()

                # Create the registration token
                token = uuid.uuid4().hex
                rt = RegisterToken(user=user, token=token)
                rt.save()

                email_message = create_password_recovery_message(email, user.username, request.META['HTTP_HOST'], token)

                send_mail(_(u'Account recovery'), email_message, settings.STUDLAN_FROM_MAIL, [email,])

                messages.success(request, _('A recovery link has been sent to ') + email)

                return HttpResponseRedirect('/')
            else:
                form = RecoveryForm(request.POST, auto_id=True, error_class=InlineSpanErrorList)
        else:
            form = RecoveryForm()

        return render(request, 'auth/recover.html', {'form': form})
示例#3
0
def _send_verification_mail(request, email):
    log = logging.getLogger(__name__)
    # Create the registration token
    token = uuid.uuid4().hex
    try:
        rt = RegisterToken(user=request.user, email=email, token=token)
        rt.save()
        log.info('Successfully registered token for %s' % request.user)
    except IntegrityError as ie:
        log.error('Failed to register token for %s due to %s' %
                  (request.user, ie))
        raise ie

    email_message = _("""
En ny epost har blitt registrert på din profil på online.ntnu.no.

For å kunne ta eposten i bruk kreves det at du verifiserer den. Du kan gjore dette
ved å besøke lenken under.

http://%s/auth/verify/%s/

Denne lenken vil være gyldig i 24 timer. Dersom du behøver å få tilsendt en ny lenke
kan dette gjøres ved å klikke på knappen for verifisering på din profil.
""") % (request.META['HTTP_HOST'], token)

    try:
        send_mail(
            _('Verifiser din epost %s') % email, email_message,
            settings.DEFAULT_FROM_EMAIL, [email])
    except SMTPException:
        messages.error(
            request, 'Det oppstod en kritisk feil, epostadressen er ugyldig!')
        return redirect('home')
示例#4
0
文件: views.py 项目: kradalby/lanweb
def register(request, event=None):
    if request.user.is_authenticated():
        messages.error(request, 'You cannot be logged in when registering.')
        return redirect('root', event=event)
    else:
        if request.method == 'POST':
            form = RegisterForm(request.POST)
            if form.is_valid():
                cleaned = form.cleaned_data

                # Create user
                user = SiteUser(
                    username=cleaned['username'].lower(),
                    nickname=cleaned['username'].lower(),
                    first_name=cleaned['first_name'],
                    last_name=cleaned['last_name'],
                    email=cleaned['email'].lower(),
                    date_of_birth=cleaned['date_of_birth'],
                    zip_code=cleaned['zip_code'],
                    address=cleaned['address'],
                    phone=cleaned['phone'],
                    skype=cleaned['skype'],
                    steam=cleaned['steam'],
                    town=cleaned['town'],
                    country=cleaned['country'],
                    # image=cleaned['image'],
                )
                user.set_password(cleaned['password'])
                user.is_active = False
                user.save()
                user.setNameNotRetard()

                # Create the registration token
                token = uuid.uuid4().hex
                rt = RegisterToken(user=user, token=token)
                rt.save()

                email_message = u"""
Du har registrert en konto på dfektlan.no.

For å bruke denne kontoen må du aktivere den. Du kan aktivere den ved å besøke linken under.

http://%s/%s/auth/verify/%s/

Aktiveringslinken er kun aktiv i 24 timer, etter dette vil du måtte bruke Reset Password for
å få en ny link.
""" % (request.META['HTTP_HOST'], event, token)

                send_mail('Verify your account', email_message, settings.REGISTER_FROM_MAIL, [user.email, ])

                messages.success(request, 'Registration successful. Check your email for verification instructions.')

                return redirect('root', event=event)
            else:
                form = RegisterForm(request.POST, auto_id=True)
        else:
            form = RegisterForm()

        return render(request, 'auth/register.html', {'form': form, 'event': event, })
示例#5
0
def recover(request):
    if request.user.is_authenticated():
        messages.error(request, _(u'You can\'t do that while logged in.'))
        return redirect('/')

    if request.method == 'POST':
        form = RecoveryForm(request.POST)
        if form.is_valid():
            email = form.cleaned_data['email']
            users = User.objects.filter(email__iexact=email)

            if users.count() == 0:
                messages.error(
                    request,
                    _(u'No users are registered with that email address.'))
                return redirect('/')

            # Send recovery email to all associated users
            for user in users.all():
                # Create the registration token
                token = uuid.uuid4().hex
                rt = RegisterToken(user=user, token=token)
                rt.save()

                link = request.build_absolute_uri(
                    reverse('auth_set_password', args=[token]))
                context = {
                    'link': link,
                    'username': user.username,
                    'email': user.email,
                }
                txt_message = render_to_string(
                    'auth/email/recover_account.txt', context,
                    request).strip()
                html_message = render_to_string(
                    'auth/email/recover_account.html', context,
                    request).strip()
                send_mail(
                    subject=_(u'Account recovery'),
                    from_email=settings.STUDLAN_FROM_MAIL,
                    recipient_list=[user.email],
                    message=txt_message,
                    html_message=html_message,
                )

            messages.success(
                request,
                _(u'A recovery link has been sent to all users with email address "{email}".'
                  ).format(email=email))
            return redirect('/')
        else:
            form = RecoveryForm(request.POST,
                                auto_id=True,
                                error_class=InlineSpanErrorList)
    else:
        form = RecoveryForm()

    return render(request, 'auth/recover.html', {'form': form})
示例#6
0
文件: views.py 项目: sklirg/studlan
def register(request):
    if request.user.is_authenticated():
        messages.error(request, _(u'You cannot be logged in when registering.'))
        return HttpResponseRedirect('/')
    else:
        if request.method == 'POST':
            form = RegisterForm(request.POST)
            if form.is_valid():
                cleaned = form.cleaned_data

                # Create user
                user = User(
                    username=cleaned['desired_username'],
                    first_name=cleaned['first_name'],
                    last_name=cleaned['last_name'],
                    email=cleaned['email'],
                )
                user.set_password(cleaned['password'])
                user.is_active = False
                user.save()

                # Create userprofile
                up = UserProfile(
                    user=user,
                    nick=cleaned['desired_username'],
                    date_of_birth=cleaned['date_of_birth'],
                    zip_code=cleaned['zip_code'],
                    address=cleaned['address'],
                    phone=cleaned['phone'],
                )
                up.save()

                # Create the registration token
                token = uuid.uuid4().hex
                rt = RegisterToken(user=user, token=token)
                rt.save()

                email_message = create_verify_message(request.META['HTTP_HOST'], token)

                send_mail(_(u'Verify your account'), email_message, settings.STUDLAN_FROM_MAIL, [user.email,], fail_silently=False)

                messages.success(request, _(u'Registration successful. Check your email for verification instructions.'))

                return HttpResponseRedirect('/')
            else:
                form = RegisterForm(request.POST, auto_id=True, error_class=InlineSpanErrorList)
        else:
            form = RegisterForm()

        return render(request, 'auth/register.html', {'form': form, })
示例#7
0
文件: views.py 项目: kradalby/lanweb
def recover(request, event=None):
    if request.user.is_authenticated():
        return redirect('root', event=event)
    else:
        if request.method == 'POST':
            form = RecoveryForm(request.POST)
            if form.is_valid():
                email = form.cleaned_data['email'].lower()
                users = SiteUser.objects.filter(email=email)

                if len(users) == 0:
                    messages.error(request, "That email is not registered.")
                    return redirect('root', event=event)

                user = users[0]
                user.save()
    
                # Create the registration token
                token = uuid.uuid4().hex
                rt = RegisterToken(user=user, token=token)
                rt.save()

                email_message = u"""
You have requested a password recovery for the account bound to %s.

Username: %s

If you did not ask for this password recovery, please ignore this email.

Otherwise, click the link below to reset your password;
http://%s/%s/auth/set_password/%s/

Note that tokens have a valid lifetime of 24 hours. If you do not use this
link within 24 hours, it will be invalid, and you will need to use the password
recovery option again to get your account verified.
""" % (email, user.username, request.META['HTTP_HOST'], event, token)


                send_mail('Account recovery', email_message, settings.REGISTER_FROM_MAIL, [email,])

                messages.success(request, 'A recovery link has been sent to %s.' % email)

                return redirect('root', event=event)
            else:
                form = RecoveryForm(request.POST, auto_id=True)
        else:
            form = RecoveryForm()

        return render(request, 'auth/recover.html', {'form': form, 'event': event})
示例#8
0
def register(request):
    log = logging.getLogger(__name__)

    if request.user.is_authenticated:
        messages.error(
            request, _('Registrering av ny konto krever at du er logget ut.'))
        return HttpResponseRedirect('/')
    else:
        if request.method == 'POST':
            form = RegisterForm(request.POST)
            if form.is_valid():
                cleaned = form.cleaned_data

                # Create user
                user = User(
                    username=cleaned['username'],
                    first_name=cleaned['first_name'].title(),
                    last_name=cleaned['last_name'].title(),
                )
                # Set remaining fields
                user.phone_number = cleaned['phone']
                user.address = cleaned['address'].title()
                user.zip_code = cleaned['zip_code']
                # Store password properly
                user.set_password(cleaned['password'])
                # Users need to be manually activated
                user.is_active = False
                user.save()

                # Set email address
                email = Email(
                    user=user,
                    email=cleaned['email'].lower(),
                )
                email.primary = True
                email.save()

                # Create the registration token
                token = uuid.uuid4().hex

                try:
                    rt = RegisterToken(user=user,
                                       email=email.email,
                                       token=token)
                    rt.save()
                    log.info('Successfully registered token for %s' %
                             request.user)
                except IntegrityError as ie:
                    log.error('Failed to register token for "%s" due to "%s"' %
                              (request.user, ie))

                email_context = {}
                verify_url = reverse('auth_verify', args=(token, ))
                email_context['verify_url'] = request.build_absolute_uri(
                    verify_url)

                message = render_to_string('auth/email/welcome_tpl.txt',
                                           email_context)

                try:
                    send_mail(_('Verifiser din konto'), message,
                              settings.DEFAULT_FROM_EMAIL, [
                                  email.email,
                              ])
                except SMTPException:
                    messages.error(
                        request,
                        'Det oppstod en kritisk feil, epostadressen er ugyldig!'
                    )
                    return redirect('home')

                messages.success(
                    request,
                    _('Registreringen var vellykket. Se tilsendt epost for verifiseringsinstrukser.'
                      ))

                return HttpResponseRedirect('/')
            else:
                form = RegisterForm(request.POST, auto_id=True)
        else:
            form = RegisterForm()

        return render(request, 'auth/register.html', {
            'form': form,
        })
示例#9
0
def recover(request):
    log = logging.getLogger(__name__)
    if request.user.is_authenticated:
        messages.error(
            request, _('Gjenoppretning av passord krever at du er logget ut.'))
        return HttpResponseRedirect('/')
    else:
        if request.method == 'POST':
            form = RecoveryForm(request.POST)
            if form.is_valid():
                email_string = form.cleaned_data['email']
                emails = Email.objects.filter(email=email_string)

                if len(emails) == 0:
                    messages.error(
                        request,
                        _('Denne eposten er ikke registrert i våre systemer.'))
                    return HttpResponseRedirect('/')

                email = emails[0]

                # Create the registration token
                token = uuid.uuid4().hex
                try:
                    rt = RegisterToken(user=email.user,
                                       email=email.email,
                                       token=token)
                    rt.save()
                    log.info('Successfully registered token for %s' %
                             request.user)
                except IntegrityError as ie:
                    log.error('Failed to register token for "%s" due to "%s"' %
                              (request.user, ie))
                    raise ie

                email_context = {}
                email_context['email'] = email.email
                email_context['username'] = email.user.username
                set_password_url = reverse('auth_set_password', args=(token, ))
                email_context['reset_url'] = request.build_absolute_uri(
                    set_password_url)

                email_message = render_to_string(
                    'auth/email/password_reset_tpl.txt', email_context)

                send_mail(_('Gjenoppretting av passord'), email_message,
                          settings.DEFAULT_FROM_EMAIL, [
                              email.email,
                          ])

                messages.success(
                    request,
                    _('En lenke for gjenoppretting har blitt sendt til %s.') %
                    email.email)

                return HttpResponseRedirect('/')
            else:
                form = RecoveryForm(request.POST, auto_id=True)
        else:
            form = RecoveryForm()

        return render(request, 'auth/recover.html', {'form': form})
示例#10
0
def register(request):
    log = logging.getLogger(__name__)

    if request.user.is_authenticated:
        messages.error(
            request, _("Registrering av ny konto krever at du er logget ut."))
        return HttpResponseRedirect("/")
    else:
        if request.method == "POST":
            form = RegisterForm(request.POST)
            if form.is_valid():
                cleaned = form.cleaned_data

                # Create user
                user = User(
                    username=cleaned["username"],
                    first_name=cleaned["first_name"].title(),
                    last_name=cleaned["last_name"].title(),
                )
                # Set remaining fields
                user.phone_number = cleaned["phone"]
                user.address = cleaned["address"].title()
                user.zip_code = cleaned["zip_code"]
                # Store password properly
                user.set_password(cleaned["password"])
                # Users need to be manually activated
                user.is_active = False
                user.save()

                # Set email address
                email = Email(user=user, email=cleaned["email"].lower())
                email.primary = True
                email.save()

                # Create the registration token
                token = uuid.uuid4().hex

                try:
                    rt = RegisterToken(user=user,
                                       email=email.email,
                                       token=token)
                    rt.save()
                    log.info("Successfully registered token for %s" %
                             request.user)
                except IntegrityError as ie:
                    log.error('Failed to register token for "%s" due to "%s"' %
                              (request.user, ie))

                email_context = {}
                verify_url = reverse("auth_verify", args=(token, ))
                email_context["verify_url"] = request.build_absolute_uri(
                    verify_url)

                message = render_to_string("auth/email/welcome_tpl.txt",
                                           email_context)

                try:
                    send_mail(
                        _("Verifiser din konto"),
                        message,
                        settings.DEFAULT_FROM_EMAIL,
                        [email.email],
                    )
                except SMTPException:
                    messages.error(
                        request,
                        "Det oppstod en kritisk feil, epostadressen er ugyldig!",
                    )
                    return redirect("home")

                messages.success(
                    request,
                    _("Registreringen var vellykket. Se tilsendt epost for verifiseringsinstrukser."
                      ),
                )

                return HttpResponseRedirect("/")
            else:
                form = RegisterForm(request.POST, auto_id=True)
        else:
            form = RegisterForm()

        return render(request, "auth/register.html", {"form": form})