feat: admin panel enrichment
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
import os
|
||||
|
||||
from allauth.account.adapter import DefaultAccountAdapter
|
||||
from allauth.socialaccount.adapter import DefaultSocialAccountAdapter
|
||||
from django.urls import reverse
|
||||
|
||||
from .models import ClientProfile
|
||||
|
||||
|
||||
class TecvicoAccountAdapter(DefaultAccountAdapter):
|
||||
def get_login_redirect_url(self, request):
|
||||
return reverse("projects:dashboard")
|
||||
|
||||
def get_signup_redirect_url(self, request):
|
||||
return reverse("projects:dashboard")
|
||||
|
||||
|
||||
class TecvicoSocialAccountAdapter(DefaultSocialAccountAdapter):
|
||||
def save_user(self, request, sociallogin, form=None):
|
||||
user = super().save_user(request, sociallogin, form)
|
||||
self._apply_profile_names(user, sociallogin)
|
||||
user.save()
|
||||
ClientProfile.objects.get_or_create(user=user)
|
||||
return user
|
||||
|
||||
def _apply_profile_names(self, user, sociallogin):
|
||||
extra_data = sociallogin.account.extra_data or {}
|
||||
if sociallogin.account.provider == "google":
|
||||
if not user.first_name:
|
||||
user.first_name = extra_data.get("given_name", "")
|
||||
if not user.last_name:
|
||||
user.last_name = extra_data.get("family_name", "")
|
||||
return
|
||||
if sociallogin.account.provider == "github" and not user.first_name:
|
||||
name = (extra_data.get("name") or "").strip()
|
||||
if name:
|
||||
parts = name.split(" ", 1)
|
||||
user.first_name = parts[0]
|
||||
user.last_name = parts[1] if len(parts) > 1 else ""
|
||||
Reference in New Issue
Block a user