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

Commit 84fabb6

Browse files
Add get_destroy_other_sessions_url() method.
1 parent ac7c15f commit 84fabb6

File tree

2 files changed

+48
-20
lines changed

2 files changed

+48
-20
lines changed

cas_client/cas_client.py

+42-20
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,26 @@ def acquire_auth_token_ticket(self):
5858
auth_token_ticket))
5959
return auth_token_ticket
6060

61+
def create_session(self, ticket, payload=None, expires=None):
62+
'''
63+
Create a session record from a service ticket.
64+
'''
65+
assert isinstance(self.session_storage_adapter, CASSessionAdapter)
66+
logging.debug('[CAS] Creating session for ticket {}'.format(ticket))
67+
self.session_storage_adapter.create(
68+
ticket,
69+
payload=payload,
70+
expires=expires,
71+
)
72+
73+
def delete_session(self, ticket):
74+
'''
75+
Delete a session record associated with a service ticket.
76+
'''
77+
assert isinstance(self.session_storage_adapter, CASSessionAdapter)
78+
logging.debug('[CAS] Deleting session for ticket {}'.format(ticket))
79+
self.session_storage_adapter.delete(ticket)
80+
6181
def get_auth_token_login_url(
6282
self,
6383
auth_token_ticket,
@@ -94,6 +114,28 @@ def get_auth_token_login_url(
94114
logging.debug('[CAS] AuthToken Login URL: {}'.format(url))
95115
return url
96116

117+
def get_destroy_other_sessions_url(self, service_url=None):
118+
'''
119+
Get the URL for a remote CAS `destroy-other-sessions` endpoint.
120+
121+
::
122+
123+
>>> from cas_client import CASClient
124+
>>> client = CASClient('https://logmein.com')
125+
>>> service_url = 'http://myservice.net'
126+
>>> client.get_destroy_other_sessions_url(service_url)
127+
'https://logmein.com/cas/destroy-other-sessions?service=http://myservice.net'
128+
129+
'''
130+
template = '{server_url}{auth_prefix}/destroy-other-sessions?service={service_url}'
131+
url = template.format(
132+
server_url=self.server_url,
133+
auth_prefix=self.auth_prefix,
134+
service_url=service_url or self.service_url,
135+
)
136+
logging.debug('[CAS] Login URL: {}'.format(url))
137+
return url
138+
97139
def get_login_url(self, service_url=None):
98140
'''
99141
Get the URL for a remote CAS `login` endpoint.
@@ -209,26 +251,6 @@ def parse_logout_request(self, message_text):
209251
))
210252
return result
211253

212-
def create_session(self, ticket, payload=None, expires=None):
213-
'''
214-
Create a session record from a service ticket.
215-
'''
216-
assert isinstance(self.session_storage_adapter, CASSessionAdapter)
217-
logging.debug('[CAS] Creating session for ticket {}'.format(ticket))
218-
self.session_storage_adapter.create(
219-
ticket,
220-
payload=payload,
221-
expires=expires,
222-
)
223-
224-
def delete_session(self, ticket):
225-
'''
226-
Delete a session record associated with a service ticket.
227-
'''
228-
assert isinstance(self.session_storage_adapter, CASSessionAdapter)
229-
logging.debug('[CAS] Deleting session for ticket {}'.format(ticket))
230-
self.session_storage_adapter.delete(ticket)
231-
232254
def session_exists(self, ticket):
233255
'''
234256
Test if a session records exists for a service ticket.

test.py

+6
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,12 @@ def test_perform_service_validate(self):
8383
self.assertEqual(response.response_type, 'authenticationSuccess')
8484
self.assertEqual(response.user, 'jott')
8585

86+
def test_get_destroy_other_sessions_url(self):
87+
cas_client = CASClient('dummy.url')
88+
service_url = 'app.url'
89+
url = cas_client.get_destroy_other_sessions_url(service_url=service_url)
90+
self.assertEqual(url, 'dummy.url/cas/destroy-other-sessions?service=app.url')
91+
8692
def test_get_login_url(self):
8793
cas_client = CASClient('dummy.url')
8894
service_url = 'app.url'

0 commit comments

Comments
 (0)