@@ -13,21 +13,21 @@ def __init__(self, *args, **kwargs):
1313 super ().__init__ (* args , ** kwargs )
1414 for plugin in ['Api' , 'Db' , 'Duo' , 'Users' ]:
1515 setattr (self ,
16- plugin .lower (),
17- self .registry .get (plugin )(self .state ))
16+ '_' + plugin .lower (),
17+ self ._registry .get (plugin )(self ._state ))
1818
1919 def get_api_token (self ):
2020 """Log in to get a new API token."""
21- if self .users .get_profile ():
22- return self .state .api_token
21+ if self ._users .get_profile ():
22+ return self ._state .api_token
2323 csrf = self .get_login_csrf ()
2424 duo_auth_url = None
2525 grant_token = None
2626 if csrf :
2727 auth_response = self .get_authentication_response (csrf )
2828 duo_auth_url = auth_response .get ('duo_auth_url' , '' )
2929 if duo_auth_url :
30- grant_token = self .duo .get_grant_token (duo_auth_url )
30+ grant_token = self ._duo .get_grant_token (duo_auth_url )
3131 if grant_token :
3232 url = 'https://platform.synack.com/'
3333 headers = {
@@ -36,20 +36,19 @@ def get_api_token(self):
3636 query = {
3737 "grant_token" : grant_token
3838 }
39- res = self .api .request ('GET' ,
39+ res = self ._api .request ('GET' ,
4040 url + 'token' ,
4141 headers = headers ,
4242 query = query )
4343 if res .status_code == 200 :
4444 j = res .json ()
45- self .db .api_token = j .get ('access_token' )
46- self .state .api_token = j .get ('access_token' )
45+ self ._db .api_token = j .get ('access_token' )
4746 self .set_login_script ()
4847 return j .get ('access_token' )
4948
5049 def get_login_csrf (self ):
5150 """Get the CSRF Token from the login page"""
52- res = self .api .request ('GET' , 'https://login.synack.com' )
51+ res = self ._api .request ('GET' , 'https://login.synack.com' )
5352 m = re .search ('<meta name="csrf-token" content="([^"]*)"' ,
5453 res .text )
5554 return m .group (1 )
@@ -60,10 +59,10 @@ def get_authentication_response(self, csrf):
6059 'X-CSRF-Token' : csrf
6160 }
6261 data = {
63- 'email' : self .state .email ,
64- 'password' : self .state .password
62+ 'email' : self ._state .email ,
63+ 'password' : self ._state .password
6564 }
66- res = self .api .login ('POST' ,
65+ res = self ._api .login ('POST' ,
6766 'authenticate' ,
6867 headers = headers ,
6968 data = data )
@@ -76,13 +75,17 @@ def get_authentication_response(self, csrf):
7675
7776 def get_notifications_token (self ):
7877 """Request a new Notifications Token"""
79- res = self .api .request ('GET' , 'users/notifications_token' )
78+ res = self ._api .request ('GET' , 'users/notifications_token' )
8079 if res .status_code == 200 :
8180 j = res .json ()
82- self .db .notifications_token = j ['token' ]
83- self .state .notifications_token = j ['token' ]
81+ self ._db .notifications_token = j ['token' ]
8482 return j ['token' ]
8583
84+ def set_api_token_invalid (self ):
85+ res = self ._api .request ('POST' , 'logout' )
86+ if res .status_code == 200 :
87+ self ._db .api_token = ''
88+
8689 def set_login_script (self ):
8790 script = "let forceLogin = () => {" + \
8891 "const loc = window.location;" + \
@@ -92,7 +95,7 @@ def set_login_script(self):
9295 "(function() {" + \
9396 "sessionStorage.setItem('shared-session-com.synack.accessToken'" + \
9497 ",'" + \
95- self .state .api_token + \
98+ self ._state .api_token + \
9699 "');" + \
97100 "setTimeout(forceLogin,60000);" + \
98101 "let btn = document.createElement('button');" + \
@@ -104,7 +107,7 @@ def set_login_script(self):
104107 "document.getElementsByClassName('onboarding-form')[0]" + \
105108 ".appendChild(btn)}" + \
106109 ")();"
107- with open (self .state .config_dir / 'login.js' , 'w' ) as fp :
110+ with open (self ._state .config_dir / 'login.js' , 'w' ) as fp :
108111 fp .write (script )
109112
110113 return script
0 commit comments