Allow to add more than one OAuth provider

This commit is contained in:
Yohan Boniface 2023-08-21 17:08:57 +02:00
parent 2b471be171
commit 25b3a66351
2 changed files with 32 additions and 1 deletions

View file

@ -19,5 +19,30 @@
<input type="submit" value="{% trans 'Save' %}" /> <input type="submit" value="{% trans 'Save' %}" />
</form> </form>
</div> </div>
<div class="row">
<h3>{% trans "Your current providers" %}</h3>
<ul>
{% for name in providers %}<li>{{ name|title }}</li>{% endfor %}
</ul>
</div>
<div class="row">
<h3>{% trans "Connect to another provider" %}</h3>
<p>
{% blocktrans %}It's a good habit to connect your account to more than one provider, in case one provider becomes unavailable, temporarily or even permanently.{% endblocktrans %}
</p>
<div>
<ul class="login-grid block-grid">
{% for name in backends.backends %}
{% if name not in providers %}
<li>
<a href="{% url "social:begin" name %}"
class="umap-login-popup login-{{ name }}"
title="{{ name|title }}"></a>
</li>
{% endif %}
{% endfor %}
</ul>
</div>
</div>
</div> </div>
{% endblock maincontent %} {% endblock maincontent %}

View file

@ -168,11 +168,17 @@ about = About.as_view()
class UserProfile(UpdateView): class UserProfile(UpdateView):
model = User model = User
form_class = UserProfileForm form_class = UserProfileForm
success_url = reverse_lazy('user_profile') success_url = reverse_lazy("user_profile")
def get_object(self): def get_object(self):
return self.get_queryset().get(pk=self.request.user.pk) return self.get_queryset().get(pk=self.request.user.pk)
def get_context_data(self, **kwargs):
kwargs.update(
{"providers": self.object.social_auth.values_list("provider", flat=True)}
)
return super().get_context_data(**kwargs)
user_profile = UserProfile.as_view() user_profile = UserProfile.as_view()