STABLE: Final schema sync, optimized gitignore

This commit is contained in:
Kincses
2026-02-26 08:19:25 +01:00
parent 893f39fa15
commit 505543330a
203 changed files with 11590 additions and 9542 deletions

View File

@@ -1,3 +1,4 @@
# /opt/docker/dev/service_finder/backend/app/services/social_auth_service.py
import uuid
import logging
from sqlalchemy.ext.asyncio import AsyncSession
@@ -9,84 +10,34 @@ logger = logging.getLogger(__name__)
class SocialAuthService:
@staticmethod
async def get_or_create_social_user(
db: AsyncSession,
provider: str,
social_id: str,
email: str,
first_name: str,
last_name: str
):
async def get_or_create_social_user(db: AsyncSession, provider: str, social_id: str, email: str, first_name: str, last_name: str):
"""
LOGIKA MEGŐRIZVE: Step 1 regisztráció slug és flotta nélkül.
"""
Social Step 1: Csak alapregisztráció.
Nincs slug generálás, nincs flotta. Megáll a KYC kapujában.
"""
# 1. Meglévő Social kapcsolat ellenőrzése
stmt = select(SocialAccount).where(
SocialAccount.provider == provider,
SocialAccount.social_id == social_id
)
result = await db.execute(stmt)
social_acc = result.scalar_one_or_none()
# 1. Meglévő fiók ellenőrzése
stmt = select(SocialAccount).where(SocialAccount.provider == provider, SocialAccount.social_id == social_id)
social_acc = (await db.execute(stmt)).scalar_one_or_none()
if social_acc:
stmt = select(User).where(User.id == social_acc.user_id)
user_result = await db.execute(stmt)
return user_result.scalar_one_or_none()
return (await db.execute(select(User).where(User.id == social_acc.user_id))).scalar_one_or_none()
# 2. Felhasználó keresése email alapján
stmt = select(User).where(User.email == email)
user_result = await db.execute(stmt)
user = user_result.scalar_one_or_none()
# 2. Új Identity és User (Step 1)
stmt_u = select(User).where(User.email == email)
user = (await db.execute(stmt_u)).scalar_one_or_none()
if not user:
try:
# Person rekord létrehozása a Google-től kapott nevekkel
new_person = Person(
id_uuid=uuid.uuid4(),
first_name=first_name or "Google",
last_name=last_name or "User",
is_active=False
)
db.add(new_person)
await db.flush()
new_person = Person(first_name=first_name or "Social", last_name=last_name or "User", is_active=False)
db.add(new_person)
await db.flush()
# User rekord (folder_slug nélkül!)
user = User(
email=email,
hashed_password=None,
person_id=new_person.id,
role=UserRole.user,
is_active=False,
is_deleted=False,
preferred_language="hu",
region_code="HU"
)
db.add(user)
await db.flush()
user = User(email=email, person_id=new_person.id, role=UserRole.user, is_active=False)
db.add(user)
await db.flush()
await security_service.log_event(
db,
user_id=user.id,
action="USER_REGISTER_SOCIAL",
severity="info",
target_type="User",
target_id=str(user.id),
new_data={"email": email, "provider": provider}
)
except Exception as e:
await db.rollback()
logger.error(f"Social Registration Error: {str(e)}")
raise e
await security_service.log_event(db, user.id, "USER_REGISTER_SOCIAL", "info", target_type="User", target_id=str(user.id))
# 3. Összekötés
new_social = SocialAccount(
user_id=user.id,
provider=provider,
social_id=social_id,
email=email
)
db.add(new_social)
# 3. Kapcsolat rögzítése
db.add(SocialAccount(user_id=user.id, provider=provider, social_id=social_id, email=email))
await db.commit()
await db.refresh(user)
return user