From c089db68e45933252b86737b5edddafe6f936dec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Espino?= Date: Wed, 20 Mar 2013 21:54:34 +0100 Subject: [PATCH] Adding Login and Logout simple views to the api --- greenmine/base/api_actions.py | 40 +++++++++++++++++++++++++++++++++++ greenmine/urls.py | 6 +++++- 2 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 greenmine/base/api_actions.py diff --git a/greenmine/base/api_actions.py b/greenmine/base/api_actions.py new file mode 100644 index 00000000..9b89bbbf --- /dev/null +++ b/greenmine/base/api_actions.py @@ -0,0 +1,40 @@ +from django.views.generic.base import View +from django.views.decorators.csrf import csrf_exempt +from django.utils.decorators import method_decorator +from django.http import HttpResponse + +from django.contrib.auth import logout, login, authenticate +from django.contrib.auth.models import User + +import json + +class Login(View): + def post(self, request): + username = request.POST.get('username', None) + password = request.POST.get('password', None) + print username + print password + + try: + user = User.objects.get(username=username) + if user.check_password(password): + user = authenticate(username=username, password=password) + login(request, user) + return HttpResponse(json.dumps({'token': request.session.session_key, 'error': False})) + except User.DoesNotExist: + pass + + return HttpResponse(json.dumps({'error': True})) + + @method_decorator(csrf_exempt) + def dispatch(self, *args, **kwargs): + return super(Login, self).dispatch(*args, **kwargs) + +class Logout(View): + def post(self, request): + logout(request) + return HttpResponse() + + @method_decorator(csrf_exempt) + def dispatch(self, *args, **kwargs): + return super(Login, self).dispatch(*args, **kwargs) diff --git a/greenmine/urls.py b/greenmine/urls.py index a158126f..a22e478a 100644 --- a/greenmine/urls.py +++ b/greenmine/urls.py @@ -3,6 +3,8 @@ from django.conf.urls import patterns, include, url from django.contrib import admin admin.autodiscover() +from base.api_actions import Login, Logout + from tastypie.api import Api from scrum.api import * @@ -12,7 +14,7 @@ from profile.api import * from taggit.api import * from wiki.api import * -v1_api = Api(api_name='v1') +v1_api = Api(api_name='gm') v1_api.register(ProjectResource()) v1_api.register(ProjectUserRoleResource()) v1_api.register(MilestoneResource()) @@ -31,6 +33,8 @@ v1_api.register(WikiPageHistoryResource()) v1_api.register(WikiPageAttachmentResource()) urlpatterns = patterns('', + url(r'^api/gm/actions/login/', Login.as_view(), name="login"), + url(r'^api/gm/actions/logout/', Logout.as_view(), name="logout"), url(r'^api/', include(v1_api.urls)), url(r'^admin/', include(admin.site.urls)), url(r'^grappelli/', include('grappelli.urls')),