mirror of
https://git.linux-kernel.at/oliver/ivatar.git
synced 2025-11-18 05:58:02 +00:00
Login/Signup redirect to profile if logged in
This commit is contained in:
@@ -5,7 +5,7 @@ from django.urls import path
|
||||
from django.conf.urls import url
|
||||
|
||||
from django.views.generic import TemplateView
|
||||
from django.contrib.auth.views import LoginView, LogoutView
|
||||
from django.contrib.auth.views import LogoutView
|
||||
from django.contrib.auth.decorators import login_required
|
||||
|
||||
from . views import CreateView, PasswordSetView, AddEmailView
|
||||
@@ -18,14 +18,14 @@ from . views import AddOpenIDView, RedirectOpenIDView, ConfirmOpenIDView
|
||||
from . views import CropPhotoView
|
||||
from . views import UserPreferenceView, UploadLibravatarExportView
|
||||
from . views import ResendConfirmationMailView
|
||||
from . views import IvatarLoginView
|
||||
|
||||
# Define URL patterns, self documenting
|
||||
# To see the fancy, colorful evaluation of these use:
|
||||
# ./manager show_urls
|
||||
urlpatterns = [ # pylint: disable=invalid-name
|
||||
path('new/', CreateView.as_view(), name='new_account'),
|
||||
path('login/', LoginView.as_view(template_name='login.html'),
|
||||
name='login'),
|
||||
path('login/', IvatarLoginView.as_view(), name='login'),
|
||||
path(
|
||||
'logout/', LogoutView.as_view(next_page='/'),
|
||||
name='logout'),
|
||||
|
||||
@@ -19,6 +19,7 @@ from django.views.generic.base import View, TemplateView
|
||||
from django.views.generic.detail import DetailView
|
||||
from django.contrib.auth import authenticate, login
|
||||
from django.contrib.auth.forms import UserCreationForm, SetPasswordForm
|
||||
from django.contrib.auth.views import LoginView
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.http import HttpResponseRedirect, HttpResponse
|
||||
from django.urls import reverse_lazy, reverse
|
||||
@@ -73,6 +74,15 @@ class CreateView(SuccessMessageMixin, FormView):
|
||||
return HttpResponseRedirect(
|
||||
reverse_lazy('login')) # pragma: no cover
|
||||
|
||||
def get(self, request, *args, **kwargs):
|
||||
'''
|
||||
Handle get for create view
|
||||
'''
|
||||
if request.user:
|
||||
if request.user.is_authenticated:
|
||||
return HttpResponseRedirect(reverse_lazy('profile'))
|
||||
return super().get(self, request, args, kwargs)
|
||||
|
||||
|
||||
@method_decorator(login_required, name='dispatch')
|
||||
class PasswordSetView(SuccessMessageMixin, FormView):
|
||||
@@ -637,7 +647,7 @@ class ConfirmOpenIDView(View): # pragma: no cover
|
||||
if self.request.user.photo_set.count() == 1:
|
||||
confirmed.set_photo(self.request.user.photo_set.first())
|
||||
|
||||
# Also allow user to login using this OPenID (if not already taken)
|
||||
# Also allow user to login using this OpenID (if not already taken)
|
||||
if not UserOpenID.objects.filter(claimed_id=confirmed.openid).exists(): # pylint: disable=no-member
|
||||
user_openid = UserOpenID()
|
||||
user_openid.user = self.request.user
|
||||
@@ -700,7 +710,7 @@ class CropPhotoView(TemplateView):
|
||||
try:
|
||||
openid = ConfirmedOpenId.objects.get( # pylint: disable=no-member
|
||||
openid=request.POST['openid'])
|
||||
except ConfirmedOpenId.DoesNotExist:
|
||||
except ConfirmedOpenId.DoesNotExist: # pylint: disable=no-member
|
||||
pass # Ignore automatic assignment
|
||||
|
||||
return photo.perform_crop(request, dimensions, email, openid)
|
||||
@@ -809,7 +819,7 @@ class ResendConfirmationMailView(View):
|
||||
try:
|
||||
email = self.model.objects.get( # pylint: disable=no-member
|
||||
user=request.user, id=kwargs['email_id'])
|
||||
except self.model.DoesNotExist: # pragma: no cover # pylint: disable=no-member
|
||||
except self.model.DoesNotExist: # pragma: no cover pylint: disable=no-member
|
||||
messages.error(request, _('ID does not exist'))
|
||||
else:
|
||||
try:
|
||||
@@ -824,3 +834,19 @@ class ResendConfirmationMailView(View):
|
||||
(_('Unable to send confirmation email for'),
|
||||
email.email, exc))
|
||||
return HttpResponseRedirect(reverse_lazy('profile'))
|
||||
|
||||
class IvatarLoginView(LoginView):
|
||||
'''
|
||||
View class for login
|
||||
'''
|
||||
|
||||
template_name = 'login.html'
|
||||
|
||||
def get(self, request, *args, **kwargs):
|
||||
'''
|
||||
Handle get for login view
|
||||
'''
|
||||
if request.user:
|
||||
if request.user.is_authenticated:
|
||||
return HttpResponseRedirect(reverse_lazy('profile'))
|
||||
return super().get(self, request, args, kwargs)
|
||||
|
||||
Reference in New Issue
Block a user