import secrets from sqlalchemy.ext.asyncio import AsyncSession from core.security import hash_password from domains.users.models import User from domains.users.repo import create_user from core.config import settings def generate_user_secret(): return secrets.token_urlsafe(settings.SECRET_PASS_LENGTH) async def create_user_by_admin( db: AsyncSession, username: str, role: str ): secret = generate_user_secret() user = User( username=username, role=role, secret_hash=hash_password(secret) ) await create_user(db, user) return user, secret async def get_user(db: AsyncSession, user_id): from domains.users.repo import get_user_by_id return await get_user_by_id(db, user_id) async def reset_user_secret(db: AsyncSession, user: User): new_secret = generate_user_secret() user.secret_hash = hash_password(new_secret) await db.commit() return new_secret