feat: update auth for b2b

This commit is contained in:
2026-06-02 23:43:44 +03:00
parent caf7f003fa
commit e9b99535b9
6 changed files with 655 additions and 1 deletions

View File

@@ -1,5 +1,7 @@
from __future__ import annotations
from datetime import datetime
from sqlalchemy import Boolean, Date, String, DateTime, Text
from sqlalchemy.orm import Mapped,mapped_column
from src.infrastructure.database.models.base import Base
@@ -28,3 +30,7 @@ class UserModel(Base, UlidPrimaryKeyMixin, AuditTimestampsMixin, SoftDeleteMixin
kyc_verified: Mapped[bool] = mapped_column(Boolean, nullable=False, server_default='false', default=False)
kyc_verified_at: Mapped[DateTime | None] = mapped_column(DateTime(timezone=True), nullable=True)
account_type: Mapped[str] = mapped_column(String(20), nullable=False, server_default='individual', default='individual')
provisioned_by: Mapped[str | None] = mapped_column(String(26), nullable=True)
provisioned_at: Mapped[DateTime | None] = mapped_column(DateTime(timezone=True), nullable=True)

View File

@@ -7,6 +7,7 @@ from src.application.contracts import ILogger
from src.application.domain.exceptions import ApplicationException
from src.application.abstractions.repositories import IUserRepository
from src.application.domain.entities import UserEntity
from src.application.domain.enums.account_type import AccountType
from src.infrastructure.database.models import UserModel
@@ -16,7 +17,11 @@ class UserRepository(IUserRepository):
self._logger = logger
async def create_user(self, email: str, password_hash: str) -> UserEntity:
user = UserModel(email=email, password_hash=password_hash)
user = UserModel(
email=email,
password_hash=password_hash,
account_type=AccountType.INDIVIDUAL,
)
self._session.add(user)
try:
await self._session.flush()
@@ -27,6 +32,7 @@ class UserRepository(IUserRepository):
kyc_verified=user.kyc_verified,
is_deleted=user.is_deleted,
avatar_link=user.avatar_link,
account_type=user.account_type,
)
except IntegrityError:
@@ -79,6 +85,9 @@ class UserRepository(IUserRepository):
created_at=user.created_at,
updated_at=user.updated_at,
kyc_verified_at=user.kyc_verified_at,
account_type=user.account_type,
provisioned_by=user.provisioned_by,
provisioned_at=user.provisioned_at,
)
except ApplicationException: