Update user status default to INACTIVE, add email verification check in login, and set email_verified_at for admin user in seeder
This commit is contained in:
parent
4458d352a2
commit
4fa2db2a3c
1
DBML.md
1
DBML.md
@ -1,4 +1,5 @@
|
|||||||
Enum user_status {
|
Enum user_status {
|
||||||
|
INACTIVE
|
||||||
ONBOARDING
|
ONBOARDING
|
||||||
ACTIVE
|
ACTIVE
|
||||||
SUSPENDED
|
SUSPENDED
|
||||||
|
|||||||
@ -17,7 +17,7 @@ class User(Base):
|
|||||||
password: Mapped[str] = mapped_column(String(255))
|
password: Mapped[str] = mapped_column(String(255))
|
||||||
email_verified_at: Mapped[datetime | None] = mapped_column(DateTime, nullable=True)
|
email_verified_at: Mapped[datetime | None] = mapped_column(DateTime, nullable=True)
|
||||||
tenant_id: Mapped[str | None] = mapped_column(CHAR(36), nullable=True)
|
tenant_id: Mapped[str | None] = mapped_column(CHAR(36), nullable=True)
|
||||||
status: Mapped[str] = mapped_column(String(20), default="ONBOARDING")
|
status: Mapped[str] = mapped_column(String(20), default="INACTIVE")
|
||||||
created_at: Mapped[datetime] = mapped_column(DateTime, default=datetime.now)
|
created_at: Mapped[datetime] = mapped_column(DateTime, default=datetime.now)
|
||||||
updated_at: Mapped[datetime | None] = mapped_column(DateTime, nullable=True, onupdate=datetime.now)
|
updated_at: Mapped[datetime | None] = mapped_column(DateTime, nullable=True, onupdate=datetime.now)
|
||||||
deleted_at: Mapped[datetime | None] = mapped_column(DateTime, nullable=True)
|
deleted_at: Mapped[datetime | None] = mapped_column(DateTime, nullable=True)
|
||||||
|
|||||||
@ -23,6 +23,12 @@ def login(data: LoginRequest, db: Session = Depends(get_db)):
|
|||||||
detail={"message": "Kredensial autentikasi tidak ada atau tidak valid."},
|
detail={"message": "Kredensial autentikasi tidak ada atau tidak valid."},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if user.email_verified_at is None:
|
||||||
|
raise HTTPException(
|
||||||
|
status_code=status.HTTP_401_UNAUTHORIZED,
|
||||||
|
detail={"message": "Email belum diverifikasi. Silakan verifikasi email terlebih dahulu."},
|
||||||
|
)
|
||||||
|
|
||||||
access_token = create_access_token({"sub": user.id})
|
access_token = create_access_token({"sub": user.id})
|
||||||
return LoginResponse(
|
return LoginResponse(
|
||||||
access_token=access_token,
|
access_token=access_token,
|
||||||
|
|||||||
@ -23,12 +23,15 @@ def seed_users(db, count: int = 5, tenant_ids: list[str] | None = None):
|
|||||||
admin = db.query(User).filter(
|
admin = db.query(User).filter(
|
||||||
(User.email == "project.pangestuyoga@gmail.com") | (User.username == "pangestu")
|
(User.email == "project.pangestuyoga@gmail.com") | (User.username == "pangestu")
|
||||||
).first()
|
).first()
|
||||||
|
from datetime import datetime, timezone
|
||||||
|
|
||||||
if not admin:
|
if not admin:
|
||||||
admin = User(
|
admin = User(
|
||||||
email="project.pangestuyoga@gmail.com",
|
email="project.pangestuyoga@gmail.com",
|
||||||
username="pangestu",
|
username="pangestu",
|
||||||
password=hash_password("Minimal8@"),
|
password=hash_password("Minimal8@"),
|
||||||
status="ACTIVE",
|
status="ACTIVE",
|
||||||
|
email_verified_at=datetime.now(timezone.utc),
|
||||||
)
|
)
|
||||||
db.add(admin)
|
db.add(admin)
|
||||||
db.flush()
|
db.flush()
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user