Move UN / PW validation to helper _assert methods.
This commit is contained in:
		
							parent
							
								
									173c07a0bf
								
							
						
					
					
						commit
						16ac6f8b85
					
				
					 1 changed files with 27 additions and 18 deletions
				
			
		|  | @ -785,6 +785,30 @@ class PDBUserMixin: | |||
|         super().__init__() | ||||
|         self._user_cache = cacheclass.Cache() | ||||
| 
 | ||||
|     def _assert_valid_password(self, password): | ||||
|         if len(password) < self.config['user']['min_password_length']: | ||||
|             raise exceptions.PasswordTooShort(min_length=self.config['user']['min_password_length']) | ||||
| 
 | ||||
|     def _assert_valid_username(self, username): | ||||
|         ''' | ||||
|         If something is wrong, raise an exception. Otherwise do nothing. | ||||
|         ''' | ||||
|         if len(username) < self.config['user']['min_length']: | ||||
|             raise exceptions.UsernameTooShort( | ||||
|                 username=username, | ||||
|                 min_length=self.config['user']['min_length'] | ||||
|             ) | ||||
| 
 | ||||
|         if len(username) > self.config['user']['max_length']: | ||||
|             raise exceptions.UsernameTooLong( | ||||
|                 username=username, | ||||
|                 max_length=self.config['user']['max_length'] | ||||
|             ) | ||||
| 
 | ||||
|         badchars = [c for c in username if c not in self.config['user']['valid_chars']] | ||||
|         if badchars: | ||||
|             raise exceptions.InvalidUsernameChars(username=username, badchars=badchars) | ||||
| 
 | ||||
|     def generate_user_id(self): | ||||
|         ''' | ||||
|         User IDs are randomized instead of integers like the other objects, | ||||
|  | @ -874,28 +898,13 @@ class PDBUserMixin: | |||
| 
 | ||||
|     @decorators.required_feature('user.new') | ||||
|     @decorators.transaction | ||||
|     def register_user(self, username, password, commit=True): | ||||
|         if len(username) < self.config['user']['min_length']: | ||||
|             raise exceptions.UsernameTooShort( | ||||
|                 username=username, | ||||
|                 min_length=self.config['user']['min_length'] | ||||
|             ) | ||||
| 
 | ||||
|         if len(username) > self.config['user']['max_length']: | ||||
|             raise exceptions.UsernameTooLong( | ||||
|                 username=username, | ||||
|                 max_length=self.config['user']['max_length'] | ||||
|             ) | ||||
| 
 | ||||
|         badchars = [c for c in username if c not in self.config['user']['valid_chars']] | ||||
|         if badchars: | ||||
|             raise exceptions.InvalidUsernameChars(username=username, badchars=badchars) | ||||
|     def register_user(self, username, password, *, commit=True): | ||||
|         self._assert_valid_username(username) | ||||
| 
 | ||||
|         if not isinstance(password, bytes): | ||||
|             password = password.encode('utf-8') | ||||
| 
 | ||||
|         if len(password) < self.config['user']['min_password_length']: | ||||
|             raise exceptions.PasswordTooShort(min_length=self.config['user']['min_password_length']) | ||||
|         self._assert_valid_password(password) | ||||
| 
 | ||||
|         try: | ||||
|             existing_user = self.get_user(username=username) | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue