64 lines
2.4 KiB
Python
64 lines
2.4 KiB
Python
from datetime import date
|
|
from typing import Optional
|
|
from app.utils.errors.users.user_register_errors import UserRegisterErrors
|
|
import re
|
|
class UserValidators:
|
|
|
|
@staticmethod
|
|
def is_valid_user_name(name: Optional[str], isLastname=False):
|
|
if(UserValidators.is_valid_str_and_pattern(name, '^[A-Za-z ]{2,255}$')):
|
|
return name
|
|
if(isLastname):
|
|
raise UserRegisterErrors("Invalid user lastname")
|
|
raise UserRegisterErrors("Invalid user name")
|
|
|
|
@staticmethod
|
|
def is_valid_birth_date(birth_date: Optional[str]):
|
|
if(UserValidators.is_valid_str_and_pattern(birth_date, '^\d{4}-\d{2}-\d{2}$')):
|
|
try:
|
|
birth_date = [int(n) for n in (str(birth_date)).split("-")]
|
|
return date(birth_date[0], birth_date[1], birth_date[2])
|
|
except:
|
|
raise UserRegisterErrors("Invalid user birthdate")
|
|
raise UserRegisterErrors("Invalid user birthdate")
|
|
|
|
@staticmethod
|
|
def is_valid_phone_number(phone_number: Optional[str]):
|
|
if(UserValidators.is_valid_str_and_pattern(phone_number, '^(\+\d{1,3}){0,1}[0-9]{7,255}$')):
|
|
return phone_number
|
|
raise UserRegisterErrors("Invalid user phone number")
|
|
|
|
@staticmethod
|
|
def is_valid_email(email: Optional[str]):
|
|
if(UserValidators.is_valid_str_and_pattern(email, '^[A-Za-z0-9._%+\-]+@[A-Za-z0-9.\-]+\.[A-Za-z]{2,}$')):
|
|
if(len(email) <= 255):
|
|
return email
|
|
raise UserRegisterErrors("Invalid user email")
|
|
|
|
@staticmethod
|
|
def is_valid_address(address: Optional[str]):
|
|
if(isinstance(address, str) and len(address) <= 255):
|
|
return address
|
|
raise UserRegisterErrors("Invalid user address")
|
|
|
|
@staticmethod
|
|
def is_valid_str_and_pattern(string: Optional[str], pattern: str):
|
|
if(isinstance(string, str)):
|
|
regex = re.compile(pattern)
|
|
if(regex.match(string) is not None):
|
|
return True
|
|
return False
|
|
|
|
@staticmethod
|
|
def is_valid_password(password: str):
|
|
if(isinstance(password, str)):
|
|
password_len = len(password)
|
|
if(password_len >= 6 and password_len <= 255):
|
|
return password
|
|
raise UserRegisterErrors("Invalid user password")
|
|
|
|
@staticmethod
|
|
def passwords_match(password: str, password_confirmation: str):
|
|
if(UserValidators.is_valid_password(password) == UserValidators.is_valid_password(password_confirmation)):
|
|
return password
|
|
raise UserRegisterErrors("User password and password confirmation don't match") |