This commit is contained in:
Iliyan Angelov
2025-09-14 23:24:25 +03:00
commit c67067a2a4
71311 changed files with 6800714 additions and 0 deletions

View File

@@ -0,0 +1,22 @@
from allauth.socialaccount.providers.base import ProviderAccount
from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider
class DaumAccount(ProviderAccount):
def get_avatar_url(self):
return self.account.extra_data.get("bigImagePath")
def to_str(self):
return self.account.extra_data.get("nickname", self.account.uid)
class DaumProvider(OAuth2Provider):
id = "Daum"
name = "Daum"
account_class = DaumAccount
def extract_uid(self, data):
return str(data.get("id"))
provider_classes = [DaumProvider]

View File

@@ -0,0 +1,23 @@
import json
from allauth.socialaccount.tests import OAuth2TestsMixin
from allauth.tests import MockedResponse, TestCase
from .provider import DaumProvider
class DaumTests(OAuth2TestsMixin, TestCase):
provider_id = DaumProvider.id
def get_mocked_response(self):
result = {}
result["userid"] = "38DTh"
result["id"] = 46287445
result["nickname"] = "xncbf"
result["bigImagePath"] = "https://img1.daumcdn.net/thumb/"
result["openProfile"] = "https://img1.daumcdn.net/thumb/"
body = {}
body["code"] = 200
body["message"] = "OK"
body["result"] = result
return MockedResponse(200, json.dumps(body))

View File

@@ -0,0 +1,6 @@
from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns
from .provider import DaumProvider
urlpatterns = default_urlpatterns(DaumProvider)

View File

@@ -0,0 +1,25 @@
import requests
from allauth.socialaccount.providers.oauth2.views import (
OAuth2Adapter,
OAuth2CallbackView,
OAuth2LoginView,
)
from .provider import DaumProvider
class DaumOAuth2Adapter(OAuth2Adapter):
provider_id = DaumProvider.id
access_token_url = "https://apis.daum.net/oauth2/token"
authorize_url = "https://apis.daum.net/oauth2/authorize"
profile_url = "https://apis.daum.net/user/v1/show.json"
def complete_login(self, request, app, token, **kwargs):
resp = requests.get(self.profile_url, params={"access_token": token.token})
extra_data = resp.json().get("result")
return self.get_provider().sociallogin_from_response(request, extra_data)
oauth2_login = OAuth2LoginView.adapter_view(DaumOAuth2Adapter)
oauth2_callback = OAuth2CallbackView.adapter_view(DaumOAuth2Adapter)