Add Container field
This commit is contained in:
@@ -1,11 +1,22 @@
|
||||
<?php
|
||||
|
||||
|
||||
use Illuminate\Support\Facades\Broadcast;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
|
||||
use Illuminate\Support\Facades\Route;
|
||||
use App\Http\Controllers\RequestController;
|
||||
use App\Http\Controllers\UserAuthController;
|
||||
use App\Http\Controllers\MarkListController;
|
||||
use App\Http\Controllers\User\UserOrderController;
|
||||
use App\Http\Controllers\User\UserProfileController;
|
||||
use App\Http\Controllers\User\ChatController;
|
||||
|
||||
|
||||
|
||||
Broadcast::routes(['middleware' => ['auth:api']]);
|
||||
|
||||
|
||||
|
||||
//user send request
|
||||
@@ -46,4 +57,22 @@ Route::middleware(['auth:api'])->group(function () {
|
||||
Route::post('/user/profile-update-request', [UserProfileController::class, 'updateProfileRequest']);
|
||||
|
||||
// Route::post('/user/profile/update', [UserProfileController::class, 'updateProfile']);
|
||||
|
||||
// ===========================
|
||||
// CHAT SUPPORT ROUTES
|
||||
// ===========================
|
||||
Route::get('/user/chat/start', [ChatController::class, 'startChat']);
|
||||
Route::get('/user/chat/messages/{ticketId}', [ChatController::class, 'getMessages']);
|
||||
Route::post('/user/chat/send/{ticketId}', [ChatController::class, 'sendMessage']);
|
||||
|
||||
|
||||
});
|
||||
|
||||
|
||||
Route::post('/broadcasting/auth', function (Request $request) {
|
||||
if (!auth()->check()) {
|
||||
return response()->json(['message' => 'Unauthenticated'], 401);
|
||||
}
|
||||
|
||||
return Broadcast::auth($request);
|
||||
})->middleware('auth:api');
|
||||
|
||||
21
routes/broadcasting.php
Normal file
21
routes/broadcasting.php
Normal file
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
use Illuminate\Support\Facades\Broadcast;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
|
||||
Broadcast::routes(['middleware' => ['web']]);
|
||||
|
||||
// Force admin guard authentication
|
||||
Route::post('/broadcasting/auth', function () {
|
||||
|
||||
if (auth('admin')->check()) {
|
||||
return Broadcast::auth(request());
|
||||
}
|
||||
|
||||
// Fallback check for normal users
|
||||
if (auth('web')->check()) {
|
||||
return Broadcast::auth(request());
|
||||
}
|
||||
|
||||
return response()->json(['message' => 'Unauthenticated'], 403);
|
||||
|
||||
})->middleware(['web']);
|
||||
42
routes/channels.php
Normal file
42
routes/channels.php
Normal file
@@ -0,0 +1,42 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Broadcast;
|
||||
use App\Models\SupportTicket;
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Broadcast Channels
|
||||
|--------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
Broadcast::channel('ticket.{ticketId}', function ($user, $ticketId) {
|
||||
|
||||
\Log::info('🔐 Broadcasting Auth Check', [
|
||||
'ticketId' => $ticketId,
|
||||
'user_id' => $user->id ?? 'NULL',
|
||||
'user_table' => method_exists($user, 'getTable') ? $user->getTable() : 'unknown',
|
||||
'user_class' => get_class($user)
|
||||
]);
|
||||
|
||||
$ticket = SupportTicket::find($ticketId);
|
||||
|
||||
if (!$ticket) {
|
||||
\Log::warning('❌ Ticket not found', ['ticketId' => $ticketId]);
|
||||
return false;
|
||||
}
|
||||
|
||||
// ✅ Admin/Staff Check (Session Auth)
|
||||
if (get_class($user) === 'App\Models\Admin') {
|
||||
\Log::info('✅ Admin authorized for ticket', ['admin_id' => $user->id]);
|
||||
return true;
|
||||
}
|
||||
|
||||
// ✅ User Check (JWT Auth - must own ticket)
|
||||
if (get_class($user) === 'App\Models\User' && $ticket->user_id === $user->id) {
|
||||
\Log::info('✅ User authorized for own ticket', ['user_id' => $user->id]);
|
||||
return true;
|
||||
}
|
||||
|
||||
\Log::warning('❌ Authorization failed');
|
||||
return false;
|
||||
});
|
||||
54
routes/container.blade.php
Normal file
54
routes/container.blade.php
Normal file
@@ -0,0 +1,54 @@
|
||||
@extends('admin.layouts.app')
|
||||
|
||||
@section('page-title', 'Containers')
|
||||
|
||||
@section('content')
|
||||
<div class="card">
|
||||
<div class="card-header d-flex justify-content-between align-items-center">
|
||||
<h5 class="mb-0">Container List</h5>
|
||||
<a href="{{ route('containers.create') }}" class="btn btn-primary btn-sm">
|
||||
Add Container
|
||||
</a>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
@if(session('success'))
|
||||
<div class="alert alert-success">{{ session('success') }}</div>
|
||||
@endif
|
||||
|
||||
@if($containers->isEmpty())
|
||||
<p class="mb-0">No containers found.</p>
|
||||
@else
|
||||
<table class="table table-bordered table-striped align-middle">
|
||||
<thead class="table-light">
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>Customer Name</th>
|
||||
<th>Container Number</th>
|
||||
<th>Date</th>
|
||||
<th>Excel File</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($containers as $container)
|
||||
<tr>
|
||||
<td>{{ $loop->iteration }}</td>
|
||||
<td>{{ $container->customer_name }}</td>
|
||||
<td>{{ $container->container_number }}</td>
|
||||
<td>{{ $container->container_date?->format('d-m-Y') }}</td>
|
||||
<td>
|
||||
@if($container->excel_file)
|
||||
<a href="{{ Storage::url($container->excel_file) }}" target="_blank">
|
||||
Download
|
||||
</a>
|
||||
@else
|
||||
-
|
||||
@endif
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
113
routes/web.php
113
routes/web.php
@@ -11,6 +11,10 @@ use App\Http\Controllers\Admin\AdminCustomerController;
|
||||
use App\Http\Controllers\Admin\AdminAccountController;
|
||||
use App\Http\Controllers\Admin\AdminReportController;
|
||||
use App\Http\Controllers\Admin\AdminStaffController;
|
||||
use App\Http\Controllers\Admin\AdminChatController;
|
||||
use Illuminate\Support\Facades\Broadcast;
|
||||
use App\Http\Controllers\ContainerController;
|
||||
|
||||
|
||||
// ---------------------------
|
||||
// Public Front Page
|
||||
@@ -19,6 +23,41 @@ Route::get('/', function () {
|
||||
return view('welcome');
|
||||
});
|
||||
|
||||
|
||||
|
||||
// ADD THIS BEFORE YOUR ADMIN ROUTES (Around Line 20-25)
|
||||
|
||||
// ==========================================
|
||||
// BROADCASTING AUTH (FOR ADMIN SESSION)
|
||||
// ==========================================
|
||||
Broadcast::routes(['middleware' => ['web']]);
|
||||
|
||||
// Custom broadcasting auth for admin guard
|
||||
Route::post('/broadcasting/auth', function (\Illuminate\Http\Request $request) {
|
||||
|
||||
\Log::info('🎯 Broadcasting Auth Request', [
|
||||
'channel' => $request->input('channel_name'),
|
||||
'admin_check' => auth('admin')->check(),
|
||||
'web_check' => auth('web')->check(),
|
||||
]);
|
||||
|
||||
// ✅ Admin Guard (Session)
|
||||
if (auth('admin')->check()) {
|
||||
\Log::info('✅ Admin authenticated', ['id' => auth('admin')->id()]);
|
||||
return Broadcast::auth($request);
|
||||
}
|
||||
|
||||
// ✅ Web Guard (Fallback for Users)
|
||||
if (auth('web')->check()) {
|
||||
\Log::info('✅ Web user authenticated', ['id' => auth('web')->id()]);
|
||||
return Broadcast::auth($request);
|
||||
}
|
||||
|
||||
\Log::warning('❌ No authentication found');
|
||||
return response()->json(['message' => 'Unauthenticated'], 403);
|
||||
|
||||
})->middleware('web');
|
||||
|
||||
// ---------------------------
|
||||
// ADMIN LOGIN ROUTES
|
||||
// ---------------------------
|
||||
@@ -27,9 +66,15 @@ Route::prefix('admin')->group(function () {
|
||||
Route::get('/login', [AdminAuthController::class, 'showLoginForm'])->name('admin.login');
|
||||
Route::post('/login', [AdminAuthController::class, 'login'])->name('admin.login.submit');
|
||||
Route::post('/logout', [AdminAuthController::class, 'logout'])->name('admin.logout');
|
||||
|
||||
|
||||
});
|
||||
|
||||
//Broadcast::routes([
|
||||
//'middleware' => ['web', 'auth:admin'],
|
||||
//]);
|
||||
|
||||
Broadcast::routes(['middleware' => ['web']]);
|
||||
// ==========================================
|
||||
// PROTECTED ADMIN ROUTES (session protected)
|
||||
// ==========================================
|
||||
@@ -56,6 +101,33 @@ Route::prefix('admin')
|
||||
->name('admin.profile');
|
||||
|
||||
|
||||
|
||||
//---------------------------
|
||||
// CONTAINER ROUTES
|
||||
//---------------------------
|
||||
|
||||
Route::get('/containers', [ContainerController::class, 'index'])
|
||||
->name('containers.index');
|
||||
|
||||
// Container create form
|
||||
Route::get('/containers/create', [ContainerController::class, 'create'])
|
||||
->name('containers.create');
|
||||
|
||||
// Container store
|
||||
Route::post('/containers', [ContainerController::class, 'store'])
|
||||
->name('containers.store');
|
||||
|
||||
// Container delete
|
||||
Route::resource('containers', ContainerController::class);
|
||||
|
||||
//status update
|
||||
Route::post('containers/{container}/status', [ContainerController::class, 'updateStatus'])
|
||||
->name('containers.update-status');
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// ---------------------------
|
||||
// USER REQUESTS
|
||||
// ---------------------------
|
||||
@@ -195,8 +267,13 @@ Route::prefix('admin')
|
||||
|
||||
|
||||
|
||||
Route::delete('/installment/{id}', [AdminInvoiceController::class, 'deleteInstallment'])
|
||||
->name('admin.invoice.installment.delete');
|
||||
Route::delete('/installment/{id}', [AdminInvoiceController::class, 'deleteInstallment'])
|
||||
->name('admin.invoice.installment.delete');
|
||||
|
||||
|
||||
Route::put('admin/invoices/{invoice}/items', [AdminInvoiceController::class, 'updateItems'])
|
||||
->name('admin.invoices.items.update');
|
||||
|
||||
|
||||
|
||||
//Add New Invoice
|
||||
@@ -220,6 +297,19 @@ Route::prefix('admin')
|
||||
|
||||
Route::post('/customers/{id}/status', [AdminCustomerController::class, 'toggleStatus'])
|
||||
->name('admin.customers.status');
|
||||
|
||||
|
||||
// Chat list page
|
||||
Route::get('/chat-support', [AdminChatController::class, 'index'])
|
||||
->name('admin.chat_support');
|
||||
|
||||
// Chat window (open specific user's chat)
|
||||
Route::get('/chat-support/{ticketId}', [AdminChatController::class, 'openChat'])
|
||||
->name('admin.chat.open');
|
||||
|
||||
// Admin sending message
|
||||
Route::post('/chat-support/{ticketId}/send', [AdminChatController::class, 'sendMessage'])
|
||||
->name('admin.chat.send');
|
||||
});
|
||||
|
||||
// ==========================================
|
||||
@@ -302,3 +392,22 @@ Route::prefix('admin')
|
||||
// staff resource
|
||||
Route::resource('staff', AdminStaffController::class);
|
||||
});
|
||||
|
||||
// routes/web.php Line 57 (admin routes PREFIX ANTA)
|
||||
Route::prefix('admin')->middleware('auth:admin')->group(function () {
|
||||
// ... your routes
|
||||
});
|
||||
|
||||
Route::post('/admin/broadcasting/auth', function () {
|
||||
return Broadcast::auth(request());
|
||||
})->middleware('auth:admin');
|
||||
|
||||
|
||||
// Container row update route
|
||||
Route::post('/containers/{container}/update-rows', [ContainerController::class, 'updateRows'])
|
||||
->name('containers.rows.update');
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user