Skip to content
This repository has been archived by the owner on Nov 15, 2022. It is now read-only.

Commit

Permalink
Add get_destroy_other_sessions_url() method.
Browse files Browse the repository at this point in the history
  • Loading branch information
josiah-wolf-oberholtzer committed Jan 17, 2017
1 parent ac7c15f commit 84fabb6
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 20 deletions.
62 changes: 42 additions & 20 deletions cas_client/cas_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,26 @@ def acquire_auth_token_ticket(self):
auth_token_ticket))
return auth_token_ticket

def create_session(self, ticket, payload=None, expires=None):
'''
Create a session record from a service ticket.
'''
assert isinstance(self.session_storage_adapter, CASSessionAdapter)
logging.debug('[CAS] Creating session for ticket {}'.format(ticket))
self.session_storage_adapter.create(
ticket,
payload=payload,
expires=expires,
)

def delete_session(self, ticket):
'''
Delete a session record associated with a service ticket.
'''
assert isinstance(self.session_storage_adapter, CASSessionAdapter)
logging.debug('[CAS] Deleting session for ticket {}'.format(ticket))
self.session_storage_adapter.delete(ticket)

def get_auth_token_login_url(
self,
auth_token_ticket,
Expand Down Expand Up @@ -94,6 +114,28 @@ def get_auth_token_login_url(
logging.debug('[CAS] AuthToken Login URL: {}'.format(url))
return url

def get_destroy_other_sessions_url(self, service_url=None):
'''
Get the URL for a remote CAS `destroy-other-sessions` endpoint.
::
>>> from cas_client import CASClient
>>> client = CASClient('https://logmein.com')
>>> service_url = 'http://myservice.net'
>>> client.get_destroy_other_sessions_url(service_url)
'https://logmein.com/cas/destroy-other-sessions?service=http://myservice.net'
'''
template = '{server_url}{auth_prefix}/destroy-other-sessions?service={service_url}'
url = template.format(
server_url=self.server_url,
auth_prefix=self.auth_prefix,
service_url=service_url or self.service_url,
)
logging.debug('[CAS] Login URL: {}'.format(url))
return url

def get_login_url(self, service_url=None):
'''
Get the URL for a remote CAS `login` endpoint.
Expand Down Expand Up @@ -209,26 +251,6 @@ def parse_logout_request(self, message_text):
))
return result

def create_session(self, ticket, payload=None, expires=None):
'''
Create a session record from a service ticket.
'''
assert isinstance(self.session_storage_adapter, CASSessionAdapter)
logging.debug('[CAS] Creating session for ticket {}'.format(ticket))
self.session_storage_adapter.create(
ticket,
payload=payload,
expires=expires,
)

def delete_session(self, ticket):
'''
Delete a session record associated with a service ticket.
'''
assert isinstance(self.session_storage_adapter, CASSessionAdapter)
logging.debug('[CAS] Deleting session for ticket {}'.format(ticket))
self.session_storage_adapter.delete(ticket)

def session_exists(self, ticket):
'''
Test if a session records exists for a service ticket.
Expand Down
6 changes: 6 additions & 0 deletions test.py
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,12 @@ def test_perform_service_validate(self):
self.assertEqual(response.response_type, 'authenticationSuccess')
self.assertEqual(response.user, 'jott')

def test_get_destroy_other_sessions_url(self):
cas_client = CASClient('dummy.url')
service_url = 'app.url'
url = cas_client.get_destroy_other_sessions_url(service_url=service_url)
self.assertEqual(url, 'dummy.url/cas/destroy-other-sessions?service=app.url')

def test_get_login_url(self):
cas_client = CASClient('dummy.url')
service_url = 'app.url'
Expand Down

0 comments on commit 84fabb6

Please sign in to comment.