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.conf.urls import url
|
||||||
|
|
||||||
from django.views.generic import TemplateView
|
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 django.contrib.auth.decorators import login_required
|
||||||
|
|
||||||
from . views import CreateView, PasswordSetView, AddEmailView
|
from . views import CreateView, PasswordSetView, AddEmailView
|
||||||
@@ -18,14 +18,14 @@ from . views import AddOpenIDView, RedirectOpenIDView, ConfirmOpenIDView
|
|||||||
from . views import CropPhotoView
|
from . views import CropPhotoView
|
||||||
from . views import UserPreferenceView, UploadLibravatarExportView
|
from . views import UserPreferenceView, UploadLibravatarExportView
|
||||||
from . views import ResendConfirmationMailView
|
from . views import ResendConfirmationMailView
|
||||||
|
from . views import IvatarLoginView
|
||||||
|
|
||||||
# Define URL patterns, self documenting
|
# Define URL patterns, self documenting
|
||||||
# To see the fancy, colorful evaluation of these use:
|
# To see the fancy, colorful evaluation of these use:
|
||||||
# ./manager show_urls
|
# ./manager show_urls
|
||||||
urlpatterns = [ # pylint: disable=invalid-name
|
urlpatterns = [ # pylint: disable=invalid-name
|
||||||
path('new/', CreateView.as_view(), name='new_account'),
|
path('new/', CreateView.as_view(), name='new_account'),
|
||||||
path('login/', LoginView.as_view(template_name='login.html'),
|
path('login/', IvatarLoginView.as_view(), name='login'),
|
||||||
name='login'),
|
|
||||||
path(
|
path(
|
||||||
'logout/', LogoutView.as_view(next_page='/'),
|
'logout/', LogoutView.as_view(next_page='/'),
|
||||||
name='logout'),
|
name='logout'),
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ from django.views.generic.base import View, TemplateView
|
|||||||
from django.views.generic.detail import DetailView
|
from django.views.generic.detail import DetailView
|
||||||
from django.contrib.auth import authenticate, login
|
from django.contrib.auth import authenticate, login
|
||||||
from django.contrib.auth.forms import UserCreationForm, SetPasswordForm
|
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.utils.translation import ugettext_lazy as _
|
||||||
from django.http import HttpResponseRedirect, HttpResponse
|
from django.http import HttpResponseRedirect, HttpResponse
|
||||||
from django.urls import reverse_lazy, reverse
|
from django.urls import reverse_lazy, reverse
|
||||||
@@ -73,6 +74,15 @@ class CreateView(SuccessMessageMixin, FormView):
|
|||||||
return HttpResponseRedirect(
|
return HttpResponseRedirect(
|
||||||
reverse_lazy('login')) # pragma: no cover
|
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')
|
@method_decorator(login_required, name='dispatch')
|
||||||
class PasswordSetView(SuccessMessageMixin, FormView):
|
class PasswordSetView(SuccessMessageMixin, FormView):
|
||||||
@@ -637,7 +647,7 @@ class ConfirmOpenIDView(View): # pragma: no cover
|
|||||||
if self.request.user.photo_set.count() == 1:
|
if self.request.user.photo_set.count() == 1:
|
||||||
confirmed.set_photo(self.request.user.photo_set.first())
|
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
|
if not UserOpenID.objects.filter(claimed_id=confirmed.openid).exists(): # pylint: disable=no-member
|
||||||
user_openid = UserOpenID()
|
user_openid = UserOpenID()
|
||||||
user_openid.user = self.request.user
|
user_openid.user = self.request.user
|
||||||
@@ -700,7 +710,7 @@ class CropPhotoView(TemplateView):
|
|||||||
try:
|
try:
|
||||||
openid = ConfirmedOpenId.objects.get( # pylint: disable=no-member
|
openid = ConfirmedOpenId.objects.get( # pylint: disable=no-member
|
||||||
openid=request.POST['openid'])
|
openid=request.POST['openid'])
|
||||||
except ConfirmedOpenId.DoesNotExist:
|
except ConfirmedOpenId.DoesNotExist: # pylint: disable=no-member
|
||||||
pass # Ignore automatic assignment
|
pass # Ignore automatic assignment
|
||||||
|
|
||||||
return photo.perform_crop(request, dimensions, email, openid)
|
return photo.perform_crop(request, dimensions, email, openid)
|
||||||
@@ -809,7 +819,7 @@ class ResendConfirmationMailView(View):
|
|||||||
try:
|
try:
|
||||||
email = self.model.objects.get( # pylint: disable=no-member
|
email = self.model.objects.get( # pylint: disable=no-member
|
||||||
user=request.user, id=kwargs['email_id'])
|
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'))
|
messages.error(request, _('ID does not exist'))
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
@@ -824,3 +834,19 @@ class ResendConfirmationMailView(View):
|
|||||||
(_('Unable to send confirmation email for'),
|
(_('Unable to send confirmation email for'),
|
||||||
email.email, exc))
|
email.email, exc))
|
||||||
return HttpResponseRedirect(reverse_lazy('profile'))
|
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