add validators
This commit is contained in:
		| @@ -103,6 +103,18 @@ class StepwiseMathWPOAuth2(BaseOAuth2): | ||||
|     def _urlopen(self, url): | ||||
|         return urlopen(url).read().decode("utf-8") | ||||
|  | ||||
|     def is_valid_user_details(self, response) -> bool: | ||||
|         if not type(response) == dict: return False | ||||
|         qc_keys = ['id', 'date_joined', 'email', 'first_name', 'fullname', 'is_staff', 'is_superuser', 'last_name', 'username'] | ||||
|         if all(key in response for key in qc_keys): return True | ||||
|         return False | ||||
|  | ||||
|     def is_wp_oauth_response(self, response) -> bool: | ||||
|         if not type(response) == dict: return False | ||||
|         qc_keys = ['ID' 'display_name', 'user_email', 'user_login', 'user_roles'] | ||||
|         if all(key in response for key in qc_keys): return True | ||||
|         return False | ||||
|  | ||||
|     # override Python Social Auth default end points. | ||||
|     # see https://wp-oauth.com/docs/general/endpoints/ | ||||
|     # | ||||
| @@ -135,13 +147,12 @@ class StepwiseMathWPOAuth2(BaseOAuth2): | ||||
|  | ||||
|     @user_details.setter | ||||
|     def user_details(self, value: dict): | ||||
|         self._user_details = value | ||||
|  | ||||
|     def is_valid_user_details(self, response) -> bool: | ||||
|         if not type(response) == dict: return False | ||||
|         qc_keys = ['id', 'date_joined', 'email', 'first_name', 'fullname', 'is_staff', 'is_superuser', 'last_name', 'username'] | ||||
|         if all(key in response for key in qc_keys): return True | ||||
|         return False | ||||
|         if self.is_valid_user_details(value): | ||||
|             self._user_details = value | ||||
|         else: | ||||
|             logger.error('user_details.setter: tried to pass an invalid object {value}'.format( | ||||
|                 value=json.dumps(value, sort_keys=True, indent=4) | ||||
|             )) | ||||
|  | ||||
|     # see https://python-social-auth.readthedocs.io/en/latest/backends/implementation.html | ||||
|     # Return user details from the Wordpress user account | ||||
| @@ -179,8 +190,7 @@ class StepwiseMathWPOAuth2(BaseOAuth2): | ||||
|             # otherwise we pobably received the default response from the oauth provider based on  | ||||
|             # the scopes 'basic' 'email' 'profile'. We'll check a few of the most important keys to see | ||||
|             # if they exist. | ||||
|             qc_keys = ['ID' 'display_name', 'user_email', 'user_login', 'user_roles'] | ||||
|             if not all(key in response for key in qc_keys): | ||||
|             if not self.is_wp_oauth_response(response): | ||||
|                 logger.warning('get_user_details() -  response object is missing one or more required keys: {response}'.format( | ||||
|                     response=json.dumps(response, sort_keys=True, indent=4) | ||||
|                 )) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user