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})
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})
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')
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, })
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})
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, })
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})
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, })
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})
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})