From 50bee498ae921aa39310abc264a0b14fc60edd34 Mon Sep 17 00:00:00 2001 From: michigg Date: Sun, 29 Oct 2017 15:02:05 +0100 Subject: [PATCH] start e-mail authentication --- .../registration/migrations/0001_initial.py | 27 +++++++++++++++++++ ofu_app/apps/registration/views.py | 24 ++++++++++++----- ofu_app/ofu_app/settings.py | 8 +++++- .../account_activation_email.jinja | 2 +- .../account_activation_invalid.jinja | 11 ++++++++ .../account_activation_success.jinja | 11 ++++++++ 6 files changed, 75 insertions(+), 8 deletions(-) create mode 100644 ofu_app/apps/registration/migrations/0001_initial.py create mode 100644 ofu_app/templates/registration/account_activation_invalid.jinja create mode 100644 ofu_app/templates/registration/account_activation_success.jinja diff --git a/ofu_app/apps/registration/migrations/0001_initial.py b/ofu_app/apps/registration/migrations/0001_initial.py new file mode 100644 index 0000000..453d622 --- /dev/null +++ b/ofu_app/apps/registration/migrations/0001_initial.py @@ -0,0 +1,27 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.2 on 2017-10-29 11:07 +from __future__ import unicode_literals + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] + + operations = [ + migrations.CreateModel( + name='Profile', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('email_confirmed', models.BooleanField(default=False)), + ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ], + ), + ] diff --git a/ofu_app/apps/registration/views.py b/ofu_app/apps/registration/views.py index 5268b1a..fe4c2e4 100644 --- a/ofu_app/apps/registration/views.py +++ b/ofu_app/apps/registration/views.py @@ -9,6 +9,8 @@ from django.contrib.auth import login from django.contrib.auth.models import User from django.utils.encoding import force_text from django.utils.http import urlsafe_base64_decode +from django.core.mail import send_mail +from django.shortcuts import HttpResponse def signup(request): @@ -18,16 +20,26 @@ def signup(request): user = form.save(commit=False) user.is_active = False user.save() - current_site = get_current_site(request) + current_site = request.META['HTTP_HOST'] subject = 'Activate Your MySite Account' message = render_to_string('registration/account_activation_email.jinja', { 'user': user, - 'domain': current_site.domain, + 'domain': current_site, 'uid': urlsafe_base64_encode(force_bytes(user.pk)), 'token': account_activation_token.make_token(user), }) - user.email_user(subject, message) - return redirect('account_activation_sent') + + res = send_mail( + 'Subject here', + 'Here is the message.', + 'signup.basta@gmail.com', + ['mgoetz1995@gmail.com'], + fail_silently=False, + ) + # res = send_mail(from_email="signup.basta@gmail.com", recipient_list=[user.username], subject=subject, message=message) + return HttpResponse('%s' % res) + # user.email_user(subject, message) + # return redirect('account_activation_sent') else: form = SignUpForm() return render(request, 'registration/signup.jinja', {'form': form}) @@ -45,9 +57,9 @@ def activate(request, uidb64, token): user.profile.email_confirmed = True user.save() login(request, user) - return redirect('home') + return render(request, 'registration/account_activation_success.jinja') else: - return render(request, 'account_activation_invalid.html') + return render(request, 'registration/account_activation_invalid.jinja') def account_activation_sent(request): diff --git a/ofu_app/ofu_app/settings.py b/ofu_app/ofu_app/settings.py index b8dad97..205135c 100644 --- a/ofu_app/ofu_app/settings.py +++ b/ofu_app/ofu_app/settings.py @@ -39,6 +39,7 @@ INSTALLED_APPS = [ 'apps.food', 'apps.events', 'apps.donar', + 'apps.registration', 'rest_framework', ] @@ -165,7 +166,12 @@ MEDIA_URL = '/media/' LOGIN_REDIRECT_URL = 'home' -EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' +EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' +EMAIL_HOST = 'smtp.gmail.com' +EMAIL_HOST_USER = 'signup.basta@gmail.com' +EMAIL_HOST_PASSWORD = '1/SL^QzlSuP<`8gkP4Fd' +EMAIL_PORT = '587' +EMAIL_USE_TLS = True ACCOUNT_EMAIL_UNIQUE = True ACCOUNT_EMAIL_CONFIRMATION_REQUIRED = True diff --git a/ofu_app/templates/registration/account_activation_email.jinja b/ofu_app/templates/registration/account_activation_email.jinja index cb47f9e..b367c49 100644 --- a/ofu_app/templates/registration/account_activation_email.jinja +++ b/ofu_app/templates/registration/account_activation_email.jinja @@ -3,5 +3,5 @@ Hi {{ user.username }}, Please click on the link below to confirm your registration: -http://{{ domain }}{% url 'activate' uidb64=uid token=token %} +http://{{ domain }}{{ url('activate', args=[uid, token]) }} {% endautoescape %} \ No newline at end of file diff --git a/ofu_app/templates/registration/account_activation_invalid.jinja b/ofu_app/templates/registration/account_activation_invalid.jinja new file mode 100644 index 0000000..3a963c7 --- /dev/null +++ b/ofu_app/templates/registration/account_activation_invalid.jinja @@ -0,0 +1,11 @@ +{% extends 'base.jinja' %} + +{% block headline %}

BaStA Login

{% endblock %} + +{% block content %} +
+

Fail

+

Your user account couldn't be activated

+

Please try it again or inform the Administrator.

+
+{% endblock %} \ No newline at end of file diff --git a/ofu_app/templates/registration/account_activation_success.jinja b/ofu_app/templates/registration/account_activation_success.jinja new file mode 100644 index 0000000..20cb5ba --- /dev/null +++ b/ofu_app/templates/registration/account_activation_success.jinja @@ -0,0 +1,11 @@ +{% extends 'base.jinja' %} + +{% block headline %}

BaStA Login

{% endblock %} + +{% block content %} +
+

Success

+

Your user account is now activated.

+ Click here to show home +
+{% endblock %} \ No newline at end of file