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,21 @@
from allauth.socialaccount.providers.base import ProviderAccount
from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider
class BoxOAuth2Account(ProviderAccount):
pass
class BoxOAuth2Provider(OAuth2Provider):
id = "box"
name = "Box"
account_class = BoxOAuth2Account
def extract_uid(self, data):
return data["id"]
def extract_common_fields(self, data):
return dict(name=data.get("display_name"), email=data.get("email"))
provider_classes = [BoxOAuth2Provider]

View File

@@ -0,0 +1,36 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from allauth.socialaccount.tests import OAuth2TestsMixin
from allauth.tests import MockedResponse, TestCase
from .provider import BoxOAuth2Provider
class BoxOAuth2Tests(OAuth2TestsMixin, TestCase):
provider_id = BoxOAuth2Provider.id
def get_mocked_response(self):
return [
MockedResponse(
200,
"""{
"type": "user",
"id": "1185237519",
"name": "Balls Johnson",
"login": "balls@example.com",
"created_at": "2017-02-18T21:16:39-08:00",
"modified_at": "2017-02-18T21:19:11-08:00",
"language": "en",
"timezone": "America/Los_Angeles",
"space_amount": 10737418240,
"space_used": 0,
"max_upload_size": 2147483648,
"status": "active",
"job_title": "",
"phone": "123-345-5555",
"address": "",
"avatar_url": "https://app.box.com/api/avatar/large/1185237519"
}""",
)
]

View File

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

View File

@@ -0,0 +1,32 @@
import requests
from allauth.socialaccount.providers.oauth2.views import (
OAuth2Adapter,
OAuth2CallbackView,
OAuth2LoginView,
)
from .provider import BoxOAuth2Provider
class BoxOAuth2Adapter(OAuth2Adapter):
provider_id = BoxOAuth2Provider.id
access_token_url = "https://api.box.com/oauth2/token"
authorize_url = "https://account.box.com/api/oauth2/authorize"
profile_url = "https://api.box.com/2.0/users/me"
redirect_uri_protocol = None
def complete_login(self, request, app, token, **kwargs):
extra_data = requests.get(
self.profile_url, params={"access_token": token.token}
)
# This only here because of weird response from the test suite
if isinstance(extra_data, list):
extra_data = extra_data[0]
return self.get_provider().sociallogin_from_response(request, extra_data.json())
oauth_login = OAuth2LoginView.adapter_view(BoxOAuth2Adapter)
oauth_callback = OAuth2CallbackView.adapter_view(BoxOAuth2Adapter)