From aa668e6980577024a504ddbc519a522ba1294199 Mon Sep 17 00:00:00 2001 From: Aamir Khan Date: Tue, 12 Jun 2012 18:35:33 -0400 Subject: Login authentication --- templates/base.html | 5 ++++- templates/login.html | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++ urls.py | 13 +++++++++-- views/accounts.py | 53 ++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 130 insertions(+), 3 deletions(-) create mode 100644 templates/login.html create mode 100644 views/accounts.py diff --git a/templates/base.html b/templates/base.html index 233d81b..d16564b 100644 --- a/templates/base.html +++ b/templates/base.html @@ -42,6 +42,8 @@ {% block userlinks %}{% endblock %} +
  • Logout + {% else %}
  • Login
  • {% endif %} {% endblock %} @@ -84,6 +86,7 @@ {% block content %} {% endblock %} - + {% block additionaljs %} + {% endblock %} diff --git a/templates/login.html b/templates/login.html new file mode 100644 index 0000000..9142d7a --- /dev/null +++ b/templates/login.html @@ -0,0 +1,62 @@ +{% extends "base.html" %} +{% load i18n %} + +{% block content %} + +

    Login with username and password

    + +
    {% csrf_token %} + {{ form.as_p }} +
    + +
    +
    + +
    + + + +

    Login using BrowserID

    + +
    {% csrf_token %} + + Login using BrowserID +
    +{% endblock %} + +{% block additionaljs %} + + + + + +{% endblock additionaljs %} diff --git a/urls.py b/urls.py index 665daf2..18af3f9 100644 --- a/urls.py +++ b/urls.py @@ -9,9 +9,14 @@ from django.contrib import admin admin.autodiscover() urlpatterns = patterns('', + # Account + url(r'^accounts/login/$', 'views.accounts.user_login', name='user_login'), + url(r'^accounts/logout/$', 'views.accounts.user_logout', name='user_logout'), + url(r'^accounts/profile/$', 'views.accounts.user_profile', name='user_profile'), + # Index - url(r'^/$', 'views.pages.index'), - url(r'^$', 'views.pages.index'), + url(r'^/$', 'views.pages.index', name='index'), + url(r'^$', 'views.pages.index', name='index'), # Archives url(r'^archives/(?P.*@.*)/(?P\d{4})/(?P\d\d?)/(?P\d\d?)/$', @@ -74,6 +79,10 @@ urlpatterns = patterns('', # Admin url(r'^admin/', include(admin.site.urls)), + + # Social Auth + url(r'', include('social_auth.urls')), + ) #) + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) urlpatterns += staticfiles_urlpatterns() diff --git a/views/accounts.py b/views/accounts.py new file mode 100644 index 0000000..e4a3e30 --- /dev/null +++ b/views/accounts.py @@ -0,0 +1,53 @@ +import re +import sys +import logging + + +from django.conf import settings +from django.contrib import messages +from django.contrib.auth import logout, authenticate, login +from django.contrib.auth.decorators import (login_required, + permission_required, + user_passes_test) +from django.contrib.auth.forms import AuthenticationForm +from django.contrib.auth.models import User +from django.core.urlresolvers import reverse +from django.http import HttpResponse, HttpResponseRedirect +from django.shortcuts import render_to_response, redirect +from django.template import Context, loader, RequestContext +from django.utils.translation import gettext as _ +from urllib2 import HTTPError + +logger = logging.getLogger(__name__) + +def user_logout(request): + logout(request) + return redirect('user_login') + +def user_login(request,template = 'login.html'): + if request.method == 'POST': + form = AuthenticationForm(request.POST) + user = authenticate(username=request.POST.get('username'), + password=request.POST.get('password')) + if user is not None: + logger.debug(user) + if user.is_active: + login(request,user) + return redirect(request.GET.get('next', 'index')) + else: + form = AuthenticationForm() + return render_to_response(template, {'form': form,}, + context_instance=RequestContext(request)) + +@login_required +def user_profile(request, user_email = None): + if not request.user.is_authenticated(): + return redirect('user_login') + #try: + # the_user = User.objects.get(email=user_email) + #except MailmanApiError: + # return utils.render_api_error(request) + return render_to_response('postorius/user_profile.html', + # {'mm_user': the_user}, + context_instance=RequestContext(request)) + -- cgit