Adding Login and Logout simple views to the api

remotes/origin/enhancement/email-actions
Jesús Espino 2013-03-20 21:54:34 +01:00
parent bbd6f33d8b
commit c089db68e4
2 changed files with 45 additions and 1 deletions

View File

@ -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)

View File

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