feat: Implement multi-tenancy support in middleware and security layers
- Enhanced TenantMiddleware to validate tenant information from JWT tokens. - Added LicenseValidationMiddleware to check tenant licenses before processing requests. - Updated security utilities to extract tenant information from tokens and validate company access. - Introduced CompanyStore to manage active company state and handle company switching in the frontend. - Modified API routes to include company_id in requests for better resource management. - Improved logging and error handling throughout the middleware and API layers. - Updated frontend components to reflect changes in company management and selection. - Added new API route for fetching user's companies with proper authentication handling.
This commit is contained in:
@@ -534,8 +534,8 @@ COMPANY_EXISTS=$(echo "$COMPANY_EXISTS" | xargs)
|
||||
|
||||
if [ "$COMPANY_EXISTS" = "0" ]; then
|
||||
PGPASSWORD="${POSTGRES_PASSWORD}" psql -h "${POSTGRES_HOST}" -p "${POSTGRES_PORT}" -U "${POSTGRES_USER}" -d "${POSTGRES_DB}" <<EOF
|
||||
INSERT INTO a76.company (tenant_id, name, rfc, is_service_company)
|
||||
VALUES (${TENANT_ID}, '${COMPANY_NAME}', '${COMPANY_RFC}', false);
|
||||
INSERT INTO a76.company (tenant_id, name, rfc, is_service_company, created_at, updated_at)
|
||||
VALUES (${TENANT_ID}, '${COMPANY_NAME}', '${COMPANY_RFC}', false, now(), now());
|
||||
EOF
|
||||
echo -e "${GREEN}✓ Company creada${NC}"
|
||||
else
|
||||
@@ -565,9 +565,9 @@ echo -e "${GREEN}✓ Atributo tenant_id asignado al usuario${NC}"
|
||||
echo -e "\n${YELLOW}Creando relación usuario-tenant en la base de datos...${NC}"
|
||||
|
||||
PGPASSWORD="${POSTGRES_PASSWORD}" psql -h "${POSTGRES_HOST}" -p "${POSTGRES_PORT}" -U "${POSTGRES_USER}" -d "${POSTGRES_DB}" <<EOF
|
||||
INSERT INTO a76.user_tenants (keycloak_user_id, tenant_id, role, is_active, created_at, updated_at)
|
||||
VALUES ('${USER_ID}', ${TENANT_ID}, 'admin', true, now(), now())
|
||||
ON CONFLICT (keycloak_user_id, tenant_id)
|
||||
INSERT INTO a76.user_tenants (keycloak_user_id, tenant_id, company_id, role, is_active, created_at, updated_at)
|
||||
VALUES ('${USER_ID}', ${TENANT_ID}, 1, 'admin', true, now(), now())
|
||||
ON CONFLICT (keycloak_user_id, tenant_id, company_id)
|
||||
DO UPDATE SET
|
||||
is_active = true,
|
||||
updated_at = CURRENT_TIMESTAMP;
|
||||
|
||||
Reference in New Issue
Block a user