O2Sound_ver2_final/backend/app/domain/value_object/password.py

17 lines
622 B
Python

import re
class Password(str):
def __new__(cls, value: str):
cls._validate(value)
return super().__new__(cls, value)
@classmethod
def _validate(cls, value: str):
if len(value) < 8:
raise ValueError("비밀번호는 8자 이상이어야 합니다.")
if not re.search(r"[A-Z]", value):
raise ValueError("비밀번호는 대문자 영어 1개 이상이어야 합니다.")
if not re.search(r'[!@#$%^&*(),.?":{}|<>]', value):
raise ValueError("비밀번호에는 특수문자가 1개 이상 포함되어야 합니다.")