1
1
import urllib .parse
2
+ from .idp import uw , federated
3
+ MOCK_LOGIN_URL = '/mock-login'
2
4
3
5
4
6
class SamlAuthenticator :
@@ -10,7 +12,7 @@ def __init__(self, request, old_settings, *args, **kwargs):
10
12
def login (self , ** kwargs ):
11
13
kwargs ['idp' ] = self .idp
12
14
qs = urllib .parse .urlencode (kwargs )
13
- return f'mock-login ?{ qs } '
15
+ return f'{ MOCK_LOGIN_URL } ?{ qs } '
14
16
15
17
def process_response (self ):
16
18
idp = self .request ['post_data' ].get ('idp' )
@@ -20,8 +22,16 @@ def process_response(self):
20
22
21
23
def get_attributes (self ):
22
24
"""Just reflect what's posted right back."""
23
- items = self .request ['post_data' ].items ()
24
- return dict ((key , [value ]) for key , value in items )
25
+ post = self .request ['post_data' ]
26
+ remote_user = post .get ('remote_user' , '' )
27
+ attributes = {}
28
+ if post .get ('idp' ) == uw .UwIdp .entity_id :
29
+ uwnetid = remote_user .split ('@washington.edu' )[0 ]
30
+ attributes ['uwnetid' ] = [uwnetid ]
31
+ elif post .get ('idp' ) == federated .CollegenetIdp .entity_id :
32
+ attributes ['collegenet_userid' ] = [remote_user ]
33
+ attributes .update ((key , [value ]) for key , value in post .items ())
34
+ return attributes
25
35
26
36
def get_errors (self ):
27
37
return self .errors
0 commit comments