feat: auto-create organization when user registers

This commit is contained in:
Ricel Leite 2026-02-18 23:22:17 -03:00
parent 9f73a48e56
commit 4e44c8f7be
1 changed files with 29 additions and 0 deletions

View File

@ -6,11 +6,20 @@ from sqlalchemy import select
from app.core.database import get_db
from app.core.security import verify_password, get_password_hash, create_access_token, create_refresh_token, decode_token
from app.models.user import User
from app.models.organization import Organization, OrganizationMember, MemberRole
from app.schemas.user import UserCreate, UserRead, Token
from app.services.audit import AuditService
import re
router = APIRouter()
def slugify(text: str) -> str:
"""Convert text to URL-friendly slug."""
text = text.lower()
text = re.sub(r'[^\w\s-]', '', text)
text = re.sub(r'[-\s]+', '-', text)
return text.strip('-')
@router.post("/register", response_model=Token)
async def register(
user_in: UserCreate,
@ -35,6 +44,26 @@ async def register(
db.add(user)
await db.flush()
# Create default organization for user
org_name = user_in.full_name or user_in.email.split('@')[0]
org_slug = slugify(org_name) + f"-{user.id}"
organization = Organization(
name=f"{org_name}'s Organization",
slug=org_slug
)
db.add(organization)
await db.flush()
# Add user as organization owner
membership = OrganizationMember(
organization_id=organization.id,
user_id=user.id,
role=MemberRole.OWNER
)
db.add(membership)
await db.flush()
# Audit log
await AuditService.log(
db,