- Implemented endpoints for forgot password and reset password - Added PasswordResetToken model and relationships - Integrated email service using Resend for sending reset links - Updated configuration for email and frontend URL - Enhanced user model to include password reset tokens - Added necessary schemas for password reset requests - Updated requirements to include Resend SDK - Created comprehensive documentation for the new feature
26 lines
692 B
Python
26 lines
692 B
Python
from pydantic import BaseModel, EmailStr, field_validator
|
|
|
|
|
|
class ForgotPasswordRequest(BaseModel):
|
|
email: EmailStr
|
|
|
|
|
|
class ResetPasswordRequest(BaseModel):
|
|
token: str
|
|
password: str
|
|
password_confirmation: str
|
|
|
|
@field_validator("password")
|
|
@classmethod
|
|
def password_min_length(cls, v: str) -> str:
|
|
if len(v) < 8:
|
|
raise ValueError("Kata sandi minimal 8 karakter")
|
|
return v
|
|
|
|
@field_validator("password_confirmation")
|
|
@classmethod
|
|
def passwords_match(cls, v: str, info) -> str:
|
|
if "password" in info.data and v != info.data["password"]:
|
|
raise ValueError("Konfirmasi kata sandi tidak cocok")
|
|
return v
|