Fix: socket permissions para nginx
This commit is contained in:
@@ -1,8 +1,20 @@
|
||||
<?php
|
||||
|
||||
use App\Http\Controllers\WhatsAppAnalyticsController;
|
||||
use App\Http\Controllers\WhatsAppWebhookController;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
|
||||
Route::get('/user', function (Request $request) {
|
||||
return $request->user();
|
||||
})->middleware('auth:sanctum');
|
||||
|
||||
// Webhook de Meta (sin auth)
|
||||
Route::get('/webhook/whatsapp', [WhatsAppWebhookController::class, 'verify']);
|
||||
Route::post('/webhook/whatsapp', [WhatsAppWebhookController::class, 'handle']);
|
||||
|
||||
// API para n8n (sin auth de usuario — proteger con token en n8n si se desea)
|
||||
Route::middleware('auth:sanctum')->group(function () {
|
||||
Route::get('/whatsapp/stats', [WhatsAppAnalyticsController::class, 'stats']);
|
||||
Route::get('/whatsapp/logs', [WhatsAppAnalyticsController::class, 'logs']);
|
||||
});
|
||||
|
||||
@@ -13,3 +13,17 @@ Broadcast::channel('chat.{receiverId}', function ($user, $receiverId) {
|
||||
Broadcast::channel('notifications.{userId}', function ($user, $userId) {
|
||||
return (int) $user->id === (int) $userId;
|
||||
});
|
||||
|
||||
// WhatsApp chat — solo usuarios del mismo plantel que el prospecto pueden escuchar
|
||||
Broadcast::channel('whatsapp-chat.{alumnoId}', function ($user, $alumnoId) {
|
||||
$alumno = \App\Models\Alumno::find($alumnoId);
|
||||
if (!$alumno) {
|
||||
return false;
|
||||
}
|
||||
$plantelesAlumno = $alumno->alumnos()
|
||||
->with('plantelUsuarios')
|
||||
->get()
|
||||
->flatMap(fn($u) => $u->plantelUsuarios->pluck('id'));
|
||||
$plantelesUsuario = $user->plantelUsuarios->pluck('id');
|
||||
return $plantelesAlumno->intersect($plantelesUsuario)->isNotEmpty();
|
||||
});
|
||||
|
||||
@@ -36,7 +36,10 @@ use App\Http\Controllers\PermissionController;
|
||||
use App\Http\Controllers\PlanController;
|
||||
use App\Http\Controllers\PlaneController;
|
||||
use App\Http\Controllers\PlantelController;
|
||||
use App\Http\Controllers\PromocionController;
|
||||
use App\Http\Controllers\RoleController;
|
||||
use App\Http\Controllers\WhatsAppAnalyticsController;
|
||||
use App\Http\Controllers\WhatsAppChatController;
|
||||
use App\Http\Controllers\StripeWebhookController;
|
||||
use App\Http\Controllers\TurnoController;
|
||||
use App\Http\Controllers\UnsubscribeController;
|
||||
@@ -165,4 +168,30 @@ Route::middleware(['auth:sanctum',config('jetstream.auth_session'),'verified',
|
||||
Route::resource('/mail',MailController::class);
|
||||
Route::get('/mailme/{user}',[MailController::class,'mailme'])->name('mailme');
|
||||
|
||||
// Promociones WhatsApp
|
||||
Route::resource('/promocion', PromocionController::class)->middleware([
|
||||
'index' => 'can:promocion.index',
|
||||
'create' => 'can:promocion.create',
|
||||
'store' => 'can:promocion.create',
|
||||
'edit' => 'can:promocion.edit',
|
||||
'update' => 'can:promocion.edit',
|
||||
'destroy' => 'can:promocion.destroy',
|
||||
]);
|
||||
Route::patch('/promocion/{promocion}/toggle', [PromocionController::class, 'toggleStatus'])
|
||||
->name('promocion.toggle')->middleware('can:promocion.edit');
|
||||
Route::post('/promocion/{promocion}/enviar', [PromocionController::class, 'enviar'])
|
||||
->name('promocion.enviar')->middleware('can:promocion.enviar');
|
||||
|
||||
// Chat WhatsApp
|
||||
Route::get('/promociones/chat', [WhatsAppChatController::class, 'index'])
|
||||
->name('promocion.chat')->middleware('can:promocion.chat');
|
||||
Route::get('/promociones/chat/{alumno}', [WhatsAppChatController::class, 'show'])
|
||||
->name('promocion.chat.show')->middleware('can:promocion.chat');
|
||||
Route::post('/promociones/chat/send', [WhatsAppChatController::class, 'send'])
|
||||
->name('promocion.chat.send')->middleware('can:promocion.chat');
|
||||
|
||||
// Analytics WhatsApp
|
||||
Route::get('/promociones/analytics', [WhatsAppAnalyticsController::class, 'index'])
|
||||
->name('promocion.analytics')->middleware('can:promocion.analytics');
|
||||
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user