Skip to content

Commit

Permalink
feat(nextcloud): Make server configurable via app.settings
Browse files Browse the repository at this point in the history
  • Loading branch information
pennersr committed Apr 22, 2024
1 parent 1dc9840 commit 0fa9090
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 8 deletions.
27 changes: 22 additions & 5 deletions allauth/socialaccount/providers/nextcloud/views.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import xml.etree.ElementTree as ET

from allauth.core import context
from allauth.socialaccount import app_settings
from allauth.socialaccount.adapter import get_adapter
from allauth.socialaccount.providers.oauth2.views import (
Expand All @@ -11,11 +12,27 @@

class NextCloudOAuth2Adapter(OAuth2Adapter):
provider_id = "nextcloud"
settings = app_settings.PROVIDERS.get(provider_id, {})
server = settings.get("SERVER", "https://nextcloud.example.org")
access_token_url = "{0}/apps/oauth2/api/v1/token".format(server)
authorize_url = "{0}/apps/oauth2/authorize".format(server)
profile_url = "{0}/ocs/v1.php/cloud/users/".format(server)

def _build_server_url(self, path):
settings = app_settings.PROVIDERS.get(self.provider_id, {})
server = settings.get("SERVER", "https://nextcloud.example.org")
# Prefer app based setting.
app = get_adapter().get_app(context.request, provider=self.provider_id)
server = app.settings.get("server", server)
ret = f"{server}{path}"
return ret

@property
def access_token_url(self):
return self._build_server_url("/apps/oauth2/api/v1/token")

@property
def authorize_url(self):
return self._build_server_url("/apps/oauth2/authorize")

@property
def profile_url(self):
return self._build_server_url("/ocs/v1.php/cloud/users/")

def complete_login(self, request, app, token, **kwargs):
extra_data = self.get_user_info(token, kwargs["response"]["user_id"])
Expand Down
14 changes: 11 additions & 3 deletions docs/socialaccount/providers/nextcloud.rst
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,17 @@ The following NextCloud settings are available:
.. code-block:: python
SOCIALACCOUNT_PROVIDERS = {
'nextcloud': {
'SERVER': 'https://nextcloud.example.org',
}
"nextcloud": {
"APPS": [
{
"client_id": "<insert-id>",
"secret": "<insert-secret>",
"settings": {
"server": "https://nextcloud.example.org",
}
}
]
}
}
Expand Down

0 comments on commit 0fa9090

Please sign in to comment.