Meilleure détection de connexion par CAS
This commit is contained in:
parent
fd80f23112
commit
ffaf29145e
2 changed files with 10 additions and 4 deletions
|
@ -107,14 +107,20 @@ class User(AbstractUser):
|
||||||
def get_username(self):
|
def get_username(self):
|
||||||
return "__".join(self.username.split("__")[1:])
|
return "__".join(self.username.split("__")[1:])
|
||||||
|
|
||||||
def can_vote(self, election):
|
def can_vote(self, request, election):
|
||||||
# Si c'est un·e utilisateur·ice CAS, iel peut voter dans les élections
|
# Si c'est un·e utilisateur·ice CAS, iel peut voter dans les élections
|
||||||
# ouvertes à tou·te·s
|
# ouvertes à tou·te·s
|
||||||
if self.election is None:
|
if self.election is None:
|
||||||
return not election.restricted
|
# If the user is connected via CAS, request.session["CASCONNECTED"] is set
|
||||||
|
# to True by authens
|
||||||
|
return not election.restricted and request.session.get("CASCONNECTED")
|
||||||
|
|
||||||
# Pour les élections restreintes, il faut y être associé
|
# Pour les élections restreintes, il faut y être associé
|
||||||
return election.restricted and (self.election == election)
|
return election.restricted and (self.election == election)
|
||||||
|
|
||||||
|
def get_prefix(self):
|
||||||
|
return self.username.split("__")[0]
|
||||||
|
|
||||||
def connection_method(self):
|
def connection_method(self):
|
||||||
method = self.username.split("__")[0]
|
method = self.username.split("__")[0]
|
||||||
return CONNECTION_METHODS.get(method, _("identifiants spécifiques"))
|
return CONNECTION_METHODS.get(method, _("identifiants spécifiques"))
|
||||||
|
|
|
@ -351,7 +351,7 @@ class ElectionView(DetailView):
|
||||||
context = super().get_context_data(**kwargs)
|
context = super().get_context_data(**kwargs)
|
||||||
context["current_time"] = timezone.now()
|
context["current_time"] = timezone.now()
|
||||||
context["can_vote"] = user.is_authenticated and user.can_vote(
|
context["can_vote"] = user.is_authenticated and user.can_vote(
|
||||||
context["election"]
|
self.request, context["election"]
|
||||||
)
|
)
|
||||||
return context
|
return context
|
||||||
|
|
||||||
|
@ -392,7 +392,7 @@ class VoteView(OpenElectionOnlyMixin, DetailView):
|
||||||
question = super().get_object()
|
question = super().get_object()
|
||||||
# Seulement les utilisateur·ice·s ayant le droit de voter dans l'élection
|
# Seulement les utilisateur·ice·s ayant le droit de voter dans l'élection
|
||||||
# peuvent voir la page
|
# peuvent voir la page
|
||||||
if not self.request.user.can_vote(question.election):
|
if not self.request.user.can_vote(self.request, question.election):
|
||||||
raise Http404
|
raise Http404
|
||||||
return question
|
return question
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue