diff --git a/app/services/nextcloud.py b/app/services/nextcloud.py index 8a1f612..d081534 100644 --- a/app/services/nextcloud.py +++ b/app/services/nextcloud.py @@ -218,13 +218,17 @@ class NextcloudClient: # OCS User Management Methods + @property + def _ocs_headers(self): + return {'OCS-APIRequest': 'true'} + def ocs_get_users(self) -> Dict[str, Any]: """Get list of all users via OCS API.""" url = f"{self.ocs_root}/cloud/users" params = {'format': 'json'} - + try: - response = self._make_request('GET', url, params=params) + response = self._make_request('GET', url, params=params, headers=self._ocs_headers) data = response.json() if data.get('ocs', {}).get('meta', {}).get('statuscode') != 100: @@ -247,9 +251,9 @@ class NextcloudClient: """Get detailed info for a specific user.""" url = f"{self.ocs_root}/cloud/users/{username}" params = {'format': 'json'} - + try: - response = self._make_request('GET', url, params=params) + response = self._make_request('GET', url, params=params, headers=self._ocs_headers) data = response.json() if data.get('ocs', {}).get('meta', {}).get('statuscode') != 100: @@ -267,26 +271,26 @@ class NextcloudClient: except Exception: return None - def ocs_create_user(self, username: str, password: str, email: str = None, + def ocs_create_user(self, username: str, password: str, email: str = None, displayname: str = None, groups: list = None) -> Dict[str, Any]: """Create a new user via OCS API.""" url = f"{self.ocs_root}/cloud/users" params = {'format': 'json'} - + data = { 'userid': username, 'password': password } - + if email: data['email'] = email if displayname: data['displayName'] = displayname if groups: data['groups'] = groups - + try: - response = self._make_request('POST', url, params=params, data=data) + response = self._make_request('POST', url, params=params, data=data, headers=self._ocs_headers) result = response.json() meta = result.get('ocs', {}).get('meta', {}) @@ -302,9 +306,9 @@ class NextcloudClient: """Enable a user account.""" url = f"{self.ocs_root}/cloud/users/{username}/enable" params = {'format': 'json'} - + try: - response = self._make_request('PUT', url, params=params) + response = self._make_request('PUT', url, params=params, headers=self._ocs_headers) result = response.json() meta = result.get('ocs', {}).get('meta', {}) @@ -319,9 +323,9 @@ class NextcloudClient: """Disable a user account.""" url = f"{self.ocs_root}/cloud/users/{username}/disable" params = {'format': 'json'} - + try: - response = self._make_request('PUT', url, params=params) + response = self._make_request('PUT', url, params=params, headers=self._ocs_headers) result = response.json() meta = result.get('ocs', {}).get('meta', {}) @@ -336,9 +340,9 @@ class NextcloudClient: """Delete a user account.""" url = f"{self.ocs_root}/cloud/users/{username}" params = {'format': 'json'} - + try: - response = self._make_request('DELETE', url, params=params) + response = self._make_request('DELETE', url, params=params, headers=self._ocs_headers) result = response.json() meta = result.get('ocs', {}).get('meta', {})