scoped_auth_client.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. from services.api_client import JsonTransport
  2. class ScopedAuthClient:
  3. def __init__(self, base_url, client_type, session_store, transport=None, timeout=10):
  4. self.base_url = (base_url or '').rstrip('/')
  5. self.client_type = client_type
  6. self.session_store = session_store
  7. self.transport = transport or JsonTransport()
  8. self.timeout = int(timeout)
  9. def exchange(self, gateway_session_id, auth_code):
  10. session_key = self.build_session_key(gateway_session_id)
  11. response = self.transport.post_json(
  12. self.base_url + '/mcp/auth/exchange',
  13. {
  14. 'auth_code': auth_code,
  15. 'client_type': self.client_type,
  16. 'session_key': session_key,
  17. },
  18. {},
  19. self.timeout,
  20. )
  21. data = response.get('data') or {}
  22. token = data.get('mcp_token')
  23. if (response.get('code') or '') == 'MCP_0000' and token:
  24. self.session_store.save(gateway_session_id, {
  25. 'session_key': session_key,
  26. 'mcp_token': token,
  27. 'admin_id': data.get('admin_id'),
  28. 'company_id': data.get('company_id'),
  29. 'client_type': self.client_type,
  30. 'expire_time': data.get('expire_time'),
  31. })
  32. return response
  33. @staticmethod
  34. def build_session_key(gateway_session_id):
  35. return 'gws_' + str(gateway_session_id or '').strip()