Improve auth process 4
This commit is contained in:
@@ -119,6 +119,37 @@ fi
|
||||
|
||||
echo ""
|
||||
|
||||
|
||||
# ================================================================
|
||||
# STEP 5: TENANT REGISTRATION (OPTIONAL)
|
||||
# ================================================================
|
||||
|
||||
log_step "Step 5: Registering a bakery/tenant"
|
||||
|
||||
BAKERY_RESPONSE=$(curl -s -X POST "$API_BASE/api/v1/tenants/bakeries" \
|
||||
-H "Authorization: Bearer $ACCESS_TOKEN" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "{
|
||||
\"name\": \"Test Bakery $(date +%H%M)\",
|
||||
\"business_type\": \"bakery\",
|
||||
\"address\": \"Calle Test 123\",
|
||||
\"city\": \"Madrid\",
|
||||
\"postal_code\": \"28001\",
|
||||
\"phone\": \"+34600123456\"
|
||||
}")
|
||||
|
||||
echo "Bakery Registration Response:"
|
||||
echo "$BAKERY_RESPONSE" | jq '.'
|
||||
|
||||
if echo "$BAKERY_RESPONSE" | jq -e '.id' > /dev/null; then
|
||||
TENANT_ID=$(echo "$BAKERY_RESPONSE" | jq -r '.id')
|
||||
log_success "Bakery registration successful! Tenant ID: $TENANT_ID"
|
||||
else
|
||||
log_warning "Bakery registration endpoint may not be fully implemented"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
|
||||
# ================================================================
|
||||
# STEP 2: USER LOGIN
|
||||
# ================================================================
|
||||
@@ -237,36 +268,6 @@ fi
|
||||
|
||||
echo ""
|
||||
|
||||
# ================================================================
|
||||
# STEP 5: TENANT REGISTRATION (OPTIONAL)
|
||||
# ================================================================
|
||||
|
||||
log_step "Step 5: Registering a bakery/tenant"
|
||||
|
||||
BAKERY_RESPONSE=$(curl -s -X POST "$API_BASE/api/v1/tenants/bakeries" \
|
||||
-H "Authorization: Bearer $ACCESS_TOKEN" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "{
|
||||
\"name\": \"Test Bakery $(date +%H%M)\",
|
||||
\"business_type\": \"bakery\",
|
||||
\"address\": \"Calle Test 123\",
|
||||
\"city\": \"Madrid\",
|
||||
\"postal_code\": \"28001\",
|
||||
\"phone\": \"+34600123456\"
|
||||
}")
|
||||
|
||||
echo "Bakery Registration Response:"
|
||||
echo "$BAKERY_RESPONSE" | jq '.'
|
||||
|
||||
if echo "$BAKERY_RESPONSE" | jq -e '.id' > /dev/null; then
|
||||
TENANT_ID=$(echo "$BAKERY_RESPONSE" | jq -r '.id')
|
||||
log_success "Bakery registration successful! Tenant ID: $TENANT_ID"
|
||||
else
|
||||
log_warning "Bakery registration endpoint may not be fully implemented"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
|
||||
# ================================================================
|
||||
# STEP 6: TOKEN REFRESH
|
||||
# ================================================================
|
||||
|
||||
@@ -113,9 +113,16 @@ class AuthService:
|
||||
tenant_memberships = await AuthService._get_user_tenants(str(user.id))
|
||||
|
||||
# Create tokens
|
||||
access_token = SecurityManager.create_access_token(user)
|
||||
access_token = SecurityManager.create_access_token(
|
||||
user_data={
|
||||
"user_id": str(user.id),
|
||||
"email": user.email,
|
||||
"full_name": user.full_name,
|
||||
"tenants": tenant_memberships # Include tenant info in token
|
||||
}
|
||||
)
|
||||
|
||||
refresh_token_value = SecurityManager.create_refresh_token(data={"user_id": str(user.id)})
|
||||
refresh_token_value = SecurityManager.create_refresh_token(user_data={"user_id": str(user.id)})
|
||||
|
||||
# Store refresh token in database
|
||||
refresh_token = RefreshToken(
|
||||
@@ -198,7 +205,14 @@ class AuthService:
|
||||
tenant_memberships = await AuthService._get_user_tenants(str(user.id))
|
||||
|
||||
# Create new access token
|
||||
access_token = SecurityManager.create_access_token(user)
|
||||
access_token = SecurityManager.create_access_token(
|
||||
user_data={
|
||||
"user_id": str(user.id),
|
||||
"email": user.email,
|
||||
"full_name": user.full_name,
|
||||
"tenants": tenant_memberships
|
||||
}
|
||||
)
|
||||
|
||||
return {
|
||||
"access_token": access_token,
|
||||
|
||||
@@ -8,7 +8,7 @@ from fastapi import FastAPI
|
||||
from fastapi.middleware.cors import CORSMiddleware
|
||||
|
||||
from app.core.config import settings
|
||||
from app.core.database import engine
|
||||
from app.core.database import database_manager
|
||||
from app.api import tenants
|
||||
from shared.monitoring.logging import setup_logging
|
||||
from shared.monitoring.metrics import MetricsCollector
|
||||
@@ -51,7 +51,7 @@ async def startup_event():
|
||||
async def shutdown_event():
|
||||
"""Cleanup on shutdown"""
|
||||
logger.info("Shutting down Tenant Service...")
|
||||
await engine.dispose()
|
||||
await database_manager.engine.dispose()
|
||||
|
||||
@app.get("/health")
|
||||
async def health_check():
|
||||
|
||||
@@ -4,7 +4,7 @@ Tenant models for bakery management - FIXED
|
||||
Removed cross-service User relationship to eliminate circular dependencies
|
||||
"""
|
||||
|
||||
from sqlalchemy import Column, String, Boolean, DateTime, Float, ForeignKey, Text
|
||||
from sqlalchemy import Column, String, Boolean, DateTime, Float, ForeignKey, Text, Integer
|
||||
from sqlalchemy.dialects.postgresql import UUID
|
||||
from sqlalchemy.orm import relationship
|
||||
from datetime import datetime, timezone
|
||||
|
||||
@@ -2,17 +2,19 @@
|
||||
"""
|
||||
Tenant service messaging for event publishing
|
||||
"""
|
||||
|
||||
from shared.messaging.rabbitmq import RabbitMQClient
|
||||
from app.core.config import settings
|
||||
import structlog
|
||||
from shared.messaging.rabbitmq import RabbitMQPublisher
|
||||
|
||||
logger = structlog.get_logger()
|
||||
|
||||
# Single global instance
|
||||
data_publisher = RabbitMQClient(settings.RABBITMQ_URL, "data-service")
|
||||
|
||||
async def publish_tenant_created(tenant_id: str, owner_id: str, tenant_name: str):
|
||||
"""Publish tenant created event"""
|
||||
try:
|
||||
publisher = RabbitMQPublisher()
|
||||
await publisher.publish_event(
|
||||
await data_publisher.publish_event(
|
||||
"tenant.created",
|
||||
{
|
||||
"tenant_id": tenant_id,
|
||||
@@ -27,8 +29,7 @@ async def publish_tenant_created(tenant_id: str, owner_id: str, tenant_name: str
|
||||
async def publish_member_added(tenant_id: str, user_id: str, role: str):
|
||||
"""Publish member added event"""
|
||||
try:
|
||||
publisher = RabbitMQPublisher()
|
||||
await publisher.publish_event(
|
||||
await data_publisher.publish_event(
|
||||
"tenant.member.added",
|
||||
{
|
||||
"tenant_id": tenant_id,
|
||||
|
||||
@@ -13,7 +13,7 @@ import uuid
|
||||
import json
|
||||
|
||||
from app.models.tenants import Tenant, TenantMember
|
||||
from app.schemas.tenants import BakeryRegistration, TenantResponse, TenantAccessResponse, TenantUpdate
|
||||
from app.schemas.tenants import BakeryRegistration, TenantResponse, TenantAccessResponse, TenantUpdate, TenantMemberResponse
|
||||
from app.services.messaging import publish_tenant_created, publish_member_added
|
||||
|
||||
logger = structlog.get_logger()
|
||||
|
||||
Reference in New Issue
Block a user