1515 LoginType ,
1616 get_login_type ,
1717 get_mergin_sso_email ,
18- json_response ,
1918 get_stored_mergin_server_url ,
2019 get_mergin_username_password ,
2120 login_sso ,
2423 set_mergin_auth_password ,
2524 validate_sso_login ,
2625 sso_oauth_client_id ,
27- validate_mergin_url ,
26+ sso_login_allowed ,
27+ sso_ask_for_email ,
2828)
2929from .utils import (
3030 MERGIN_URL ,
@@ -157,22 +157,12 @@ def test_connection(self):
157157 def allow_sso_login (self ) -> None :
158158 self .ui .button_sign_sso .setVisible (False )
159159
160- if validate_mergin_url (self .server_url ()) is not None :
160+ allowed , msg = sso_login_allowed (self .server_url ())
161+ if msg :
162+ QMessageBox .critical (self , "SSO allowed check" , msg )
161163 return
162164
163- try :
164- server_config_data = json_response (f"{ self .server_url ()} /config" )
165- except URLError as e :
166- QMessageBox .critical (self , "SSO allowed check" , f"Could not connect to server: { str (e )} " )
167- return
168- except ValueError as e :
169- QMessageBox .critical (self , "SSO allowed check" , f"Could not parse server response: { str (e )} " )
170- return
171-
172- if "sso_enabled" in server_config_data :
173- sso_enabled = server_config_data ["sso_enabled" ]
174- if sso_enabled :
175- self .ui .button_sign_sso .setVisible (True )
165+ self .ui .button_sign_sso .setVisible (allowed )
176166
177167 def check_sso_availability (self ) -> None :
178168 self .sso_timer = QTimer (self )
@@ -195,27 +185,8 @@ def get_sso_email(self) -> typing.Optional[str]:
195185 return None
196186
197187 def sso_ask_for_email (self ) -> bool :
198-
199- try :
200- json_data = json_response (f"{ self .server_url ()} /v2/sso/config" )
201- except URLError as e :
202- QMessageBox .critical (self , "SSO configuration check" , f"Could not connect to server: { str (e )} " )
203- return True
204- except ValueError as e :
205- QMessageBox .critical (self , "SSO configuration check" , f"Could not parse server response: { str (e )} " )
206- return True
207-
208- if "tenant_flow_type" not in json_data :
209- QMessageBox .critical (
210- self , "Server Response Error" , "Server response did not contain required tenant_flow_type data"
211- )
212- return True
213-
214- if json_data ["tenant_flow_type" ] not in ["multi" , "single" ]:
215- QMessageBox .critical (self , "Server Response Error" , "SSO tenant_flow_type is not valid" )
216- return True
217-
218- if json_data ["tenant_flow_type" ] == "multi" :
219- return True
220-
221- return False
188+ ask_for_email , msg = sso_ask_for_email (self .server_url ())
189+ if msg :
190+ QMessageBox .critical (self , "SSO email check" , msg )
191+ return ask_for_email
192+ return ask_for_email
0 commit comments