mirror of
https://github.com/pinry/pinry.git
synced 2025-11-13 16:45:41 +01:00
Login newly registered user
Rewritten register view using CBV approach, and added a authenticate/login call after form has been validated and user created. Fixes #65
This commit is contained in:
@@ -3,6 +3,7 @@ from django.conf.urls import patterns, include, url
|
|||||||
from tastypie.api import Api
|
from tastypie.api import Api
|
||||||
|
|
||||||
from .api import ImageResource, ThumbnailResource, PinResource, UserResource
|
from .api import ImageResource, ThumbnailResource, PinResource, UserResource
|
||||||
|
from .views import CreateUser
|
||||||
|
|
||||||
|
|
||||||
v1_api = Api(api_name='v1')
|
v1_api = Api(api_name='v1')
|
||||||
@@ -25,5 +26,5 @@ urlpatterns = patterns('',
|
|||||||
url(r'^login/$', 'django.contrib.auth.views.login',
|
url(r'^login/$', 'django.contrib.auth.views.login',
|
||||||
{'template_name': 'user/login.html'}, name='login'),
|
{'template_name': 'user/login.html'}, name='login'),
|
||||||
url(r'^logout/$', 'pinry.core.views.logout_user', name='logout'),
|
url(r'^logout/$', 'pinry.core.views.logout_user', name='logout'),
|
||||||
url(r'^register/$', 'pinry.core.views.register', name='register'),
|
url(r'^register/$', CreateUser.as_view(), name='register'),
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -3,11 +3,17 @@ from django.template.response import TemplateResponse
|
|||||||
from django.http import HttpResponseRedirect
|
from django.http import HttpResponseRedirect
|
||||||
from django.core.urlresolvers import reverse
|
from django.core.urlresolvers import reverse
|
||||||
from django.contrib.auth.decorators import login_required
|
from django.contrib.auth.decorators import login_required
|
||||||
from django.contrib.auth import logout
|
from django.contrib.auth import logout, authenticate, login
|
||||||
from django.contrib import messages
|
from django.contrib import messages
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
from django.utils.functional import lazy
|
||||||
|
from django.views.generic import CreateView
|
||||||
|
|
||||||
from .forms import UserCreationForm
|
from .forms import UserCreationForm
|
||||||
|
from .models import User
|
||||||
|
|
||||||
|
|
||||||
|
reverse_lazy = lambda name=None, *args : lazy(reverse, str)(name, args=args)
|
||||||
|
|
||||||
|
|
||||||
def home(request):
|
def home(request):
|
||||||
@@ -18,24 +24,26 @@ def private(request):
|
|||||||
return TemplateResponse(request, 'user/private.html', None)
|
return TemplateResponse(request, 'user/private.html', None)
|
||||||
|
|
||||||
|
|
||||||
def register(request):
|
class CreateUser(CreateView):
|
||||||
if not settings.ALLOW_NEW_REGISTRATIONS:
|
template_name = 'user/register.html'
|
||||||
messages.error(request, "The admin of this service is not "
|
model = User
|
||||||
"allowing new registrations.")
|
form_class = UserCreationForm
|
||||||
return HttpResponseRedirect(reverse('pins:recent-pins'))
|
success_url = reverse_lazy('pins:recent-pins')
|
||||||
if request.method == 'POST':
|
|
||||||
form = UserCreationForm(request.POST)
|
|
||||||
if form.is_valid():
|
|
||||||
permissions = Permission.objects.filter(codename__in=['add_pin', 'add_image'])
|
|
||||||
user = form.save()
|
|
||||||
user.user_permissions = permissions
|
|
||||||
messages.success(request, 'Thank you for registering, you can now '
|
|
||||||
'login.')
|
|
||||||
return HttpResponseRedirect(reverse('core:login'))
|
|
||||||
else:
|
|
||||||
form = UserCreationForm()
|
|
||||||
|
|
||||||
return TemplateResponse(request, 'user/register.html', {'form': form})
|
def get(self, request, *args, **kwargs):
|
||||||
|
if not settings.ALLOW_NEW_REGISTRATIONS:
|
||||||
|
messages.error(request, "The admin of this service is not allowing new registrations.")
|
||||||
|
return HttpResponseRedirect(reverse('pins:recent-pins'))
|
||||||
|
return super(CreateUser, self).get(request, *args, **kwargs)
|
||||||
|
|
||||||
|
def form_valid(self, form):
|
||||||
|
redirect = super(CreateUser, self).form_valid(form)
|
||||||
|
permissions = Permission.objects.filter(codename__in=['add_pin', 'add_image'])
|
||||||
|
user = authenticate(username=form.cleaned_data['username'],
|
||||||
|
password=form.cleaned_data['password'])
|
||||||
|
user.user_permissions = permissions
|
||||||
|
login(self.request, user)
|
||||||
|
return redirect
|
||||||
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
|
|||||||
Reference in New Issue
Block a user