Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions src/apps/profiles/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,3 +33,7 @@ class LoginForm(forms.Form):

username = forms.CharField(max_length=150)
password = forms.CharField(max_length=150, widget=forms.PasswordInput)


class ActivationForm(forms.Form):
email = forms.EmailField(max_length=254, required=True)
1 change: 1 addition & 0 deletions src/apps/profiles/urls_accounts.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@

urlpatterns = [
url(r'^signup', views.sign_up, name="signup"),
path('resend_activation/', views.resend_activation, name='resend_activation'),
path('login/', views.log_in, name='login'),
path('logout/', views.LogoutView.as_view(), name='logout'),
path('password_reset/', views.CustomPasswordResetView.as_view(), name='password_reset'),
Expand Down
33 changes: 29 additions & 4 deletions src/apps/profiles/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@

from api.serializers.profiles import UserSerializer, OrganizationDetailSerializer, OrganizationEditSerializer, \
UserNotificationSerializer
from .forms import SignUpForm, LoginForm
from .forms import SignUpForm, LoginForm, ActivationForm
from .models import User, Organization, Membership
from oidc_configurations.models import Auth_Organization
from .tokens import account_activation_token
Expand Down Expand Up @@ -82,8 +82,8 @@ def activate(request, uidb64, token):
messages.success(request, f'Your account is fully setup! Please login.')
return redirect('accounts:login')
else:
messages.error(request, f"Activation link is invalid. Please double check your link.")
return redirect('accounts:signup')
messages.error(request, f"Activation link is invalid or expired. Please double check your link.")
return redirect('accounts:resend_activation')
return redirect('pages:home')


Expand Down Expand Up @@ -135,6 +135,31 @@ def sign_up(request):
return render(request, 'registration/signup.html', context)


def resend_activation(request):
context = {}
if request.method == 'POST':
form = ActivationForm(request.POST)
if form.is_valid():

email = form.cleaned_data.get('email')
user = User.objects.filter(email=email).first()

if user and not user.is_active:
activateEmail(request, user, email)
return redirect('pages:home')
else:
if not user:
messages.error(request, "No account found with this email.")
elif user.is_active:
messages.error(request, "This account is already active.")
else:
context['form'] = form

if not context.get('form'):
context['form'] = ActivationForm()
return render(request, 'registration/resend_activation.html', context)


def log_in(request):

# Fectch next redirect page after login
Expand Down Expand Up @@ -173,7 +198,7 @@ def log_in(request):
else:
return redirect(next)
else:
messages.error(request, "Account is not active. Activate your account using the link sent to you by email.")
context['activation_error'] = "Your account is not activated. Please check your email for the activation link"
else:
messages.error(request, "Wrong Credentials!")
else:
Expand Down
5 changes: 5 additions & 0 deletions src/templates/registration/login.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,11 @@
<h2 class="ui blue centered header">
Login
</h2>
{% if activation_error %}
<div class="ui red message">
{{ activation_error }} or click <a href="{% url 'accounts:resend_activation' %}">here</a> to send the activation email again
</div>
{% endif %}
<div class="ui stacked segment">
<form class="ui form" method="POST">
{% csrf_token %}
Expand Down
33 changes: 33 additions & 0 deletions src/templates/registration/resend_activation.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
{% extends 'base.html' %}
{% load static %}

{% block content %}
<div class="six wide centered column">
<h2 class="ui blue centered header">
Resend Activation
</h2>
<div class="ui stacked segment">
<h5>Activation link expired?</h5>
<p>Enter your email in the form below and we'll send you a new activation link for your account.</p>
<div class="ui divider"></div>
<form class="ui form" method="post">
{% csrf_token %}

<div class="field">
<div class="ui left icon input">
<i class="envelope icon"></i>
<input type="email"
name="email"
placeholder="email"
id="id_email"
value="{{ form.email.value|default:''}}"
maxlength="{{ form.email.field.max_length }}"
required>
</div>
</div>
<button class="ui blue fluid submit button" type="submit">Resend Activation Email</button>
</form>
</div>

</div>
{% endblock %}