diff --git a/app/Http/Controllers/Auth/LoginController.php b/app/Http/Controllers/Auth/LoginController.php
index fc8a88c..e92ef4d 100644
--- a/app/Http/Controllers/Auth/LoginController.php
+++ b/app/Http/Controllers/Auth/LoginController.php
@@ -4,6 +4,9 @@ namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
+use App\Mail\LoginOtpMail;
+use Illuminate\Support\Facades\Hash;
+use Illuminate\Support\Facades\Mail;
class LoginController extends Controller
{
@@ -37,4 +40,36 @@ class LoginController extends Controller
$this->middleware('guest')->except('logout');
$this->middleware('auth')->only('logout');
}
+ public function authenticate(Request $request)
+ {
+ $request->validate([
+ 'email' => 'required|email',
+ 'password' => 'required',
+ ]);
+
+ $staff = StaffMember::where('email', $request->email)->where('status', 'ACTIVE')->first();
+
+ // 1. Check if staff exists and password is correct
+ if ($staff && Hash::check($request->password, $staff->password)) {
+
+ // 2. Generate 6-digit OTP
+ $otp = rand(100000, 999999);
+
+ // 3. Save to database with 10-minute expiration
+ $staff->update([
+ 'otp_code' => $otp,
+ 'otp_expires_at' => now()->addMinutes(10)
+ ]);
+
+ // 4. Send Email
+ Mail::to($staff->email)->send(new LoginOtpMail($otp));
+
+ // 5. Store staff ID in session
+ session(['otp_staff_id' => $staff->id]);
+
+ return redirect()->route('otp.verify');
+ }
+
+ return back()->withErrors(['email' => 'Invalid credentials or inactive account.']);
+ }
}
diff --git a/app/Http/Controllers/OfficeLocationController.php b/app/Http/Controllers/OfficeLocationController.php
new file mode 100644
index 0000000..7ecdb39
--- /dev/null
+++ b/app/Http/Controllers/OfficeLocationController.php
@@ -0,0 +1,118 @@
+orderBy('created_at', 'desc')
+ ->paginate(9);
+
+ $staffMembers = StaffMember::where('status', 'ACTIVE')->orderBy('name')->get();
+
+ $countries = DB::table('countries')->orderBy('en_short_name', 'asc')->get();
+
+ return view('offices.index', compact('locations', 'staffMembers', 'countries'));
+ }
+
+ public function store(Request $request)
+ {
+ $validated = $request->validate([
+ 'country' => 'required|string|max:191',
+ 'city' => 'required|string|max:191',
+ 'physical_address' => 'nullable|string',
+ 'postal_address' => 'nullable|string|max:191',
+ 'zip_code' => 'nullable|string|max:15',
+ 'office_phone' => 'nullable|string|max:20',
+ 'country_manager_id' => 'nullable|integer',
+ ]);
+
+ OfficeLocation::create($validated);
+
+ return response()->json(['success' => true, 'message' => 'Office location added successfully!']);
+ }
+
+ public function update(Request $request, $id)
+ {
+ $location = OfficeLocation::findOrFail($id);
+
+ $validated = $request->validate([
+ 'country' => 'required|string|max:191',
+ 'city' => 'required|string|max:191',
+ 'physical_address' => 'nullable|string',
+ 'postal_address' => 'nullable|string|max:191',
+ 'zip_code' => 'nullable|string|max:15',
+ 'office_phone' => 'nullable|string|max:20',
+ 'country_manager_id' => 'nullable|integer',
+ ]);
+
+ $location->update($validated);
+
+ return response()->json(['success' => true, 'message' => 'Office location updated successfully!']);
+ }
+
+ public function destroy($id)
+ {
+ OfficeLocation::findOrFail($id)->delete();
+ return response()->json(['success' => true, 'message' => 'Office location removed.']);
+ }
+
+ // --- ADD THESE METHODS TO OfficeLocationController.php ---
+
+ public function showDocuments($id)
+ {
+ $location = OfficeLocation::with('documents')->findOrFail($id);
+ return view('offices.documents', compact('location'));
+ }
+
+ public function storeDocument(Request $request, $id)
+ {
+ $location = OfficeLocation::findOrFail($id);
+
+ $validated = $request->validate([
+ 'name' => 'required|string|max:191',
+ 'file' => 'required|file|mimes:pdf,jpg,jpeg,png,doc,docx|max:10240',
+ 'validity_period' => 'required|string',
+ // Require a date UNLESS the period is 'On Demand'
+ 'next_renewal_date' => 'nullable|required_unless:validity_period,On Demand|date'
+ ]);
+
+ $file = $request->file('file');
+ $filename = time() . '_' . preg_replace('/\s+/', '_', $file->getClientOriginalName());
+ $filePath = $file->storeAs("office_documents/{$location->id}", $filename, 'public');
+
+ // Get current staff ID
+ $staff = \App\Models\StaffMember::where('email', auth()->user()->email)->first();
+
+ \App\Models\OfficeLocationDocument::create([
+ 'office_location_id' => $location->id,
+ 'name' => $request->name,
+ 'file_path' => $filePath,
+ 'file_extension' => $file->getClientOriginalExtension(),
+ 'validity_period' => $request->validity_period,
+ 'next_renewal_date' => $request->validity_period === 'On Demand' ? null : $request->next_renewal_date,
+ 'uploaded_by' => $staff ? $staff->id : null,
+ ]);
+
+ return response()->json(['success' => true, 'message' => 'Document archived successfully!']);
+ }
+
+ public function destroyDocument($docId)
+ {
+ $document = \App\Models\OfficeLocationDocument::findOrFail($docId);
+
+ if ($document->file_path && \Illuminate\Support\Facades\Storage::disk('public')->exists($document->file_path)) {
+ \Illuminate\Support\Facades\Storage::disk('public')->delete($document->file_path);
+ }
+
+ $document->delete();
+ return response()->json(['success' => true, 'message' => 'Document deleted.']);
+ }
+}
\ No newline at end of file
diff --git a/app/Http/Controllers/OtpController.php b/app/Http/Controllers/OtpController.php
new file mode 100644
index 0000000..4bc1589
--- /dev/null
+++ b/app/Http/Controllers/OtpController.php
@@ -0,0 +1,69 @@
+has('otp_staff_id')) {
+ return redirect()->route('login');
+ }
+ return view('auth.otp-verify');
+ }
+
+ public function verify(Request $request)
+ {
+ $request->validate(['otp' => 'required|numeric|digits:6']);
+
+ $staff = StaffMember::findOrFail(session('otp_staff_id'));
+
+ // Check if OTP matches and is not expired
+ if ($staff->otp_code == $request->otp && now()->lessThanOrEqualTo($staff->otp_expires_at)) {
+
+ // Clear the OTP data
+ $staff->update([
+ 'otp_code' => null,
+ 'otp_expires_at' => null
+ ]);
+
+ // Log the staff member in
+ // NOTE: If using a specific guard, use Auth::guard('staff')->login($staff);
+ Auth::login($staff);
+
+ // Clear the temp session
+ session()->forget('otp_staff_id');
+
+ return redirect()->intended('/');
+ }
+
+ return back()->withErrors(['otp' => 'The verification code is invalid or has expired.']);
+ }
+ public function resend(Request $request)
+ {
+ // Ensure the session still exists
+ if (!session()->has('otp_staff_id')) {
+ return redirect()->route('login')->withErrors(['email' => 'Session expired. Please log in again.']);
+ }
+
+ $staff = StaffMember::findOrFail(session('otp_staff_id'));
+
+ // Generate a new 6-digit OTP
+ $otp = rand(100000, 999999);
+
+ // Update database with new code and fresh 10-minute expiration
+ $staff->update([
+ 'otp_code' => $otp,
+ 'otp_expires_at' => now()->addMinutes(10)
+ ]);
+
+ // Send the new code via email
+ Mail::to($staff->email)->send(new LoginOtpMail($otp));
+
+ return back()->with('success', 'A new verification code has been sent to your email.');
+ }
+}
diff --git a/app/Mail/LoginOtpMail.php b/app/Mail/LoginOtpMail.php
new file mode 100644
index 0000000..e58e0cc
--- /dev/null
+++ b/app/Mail/LoginOtpMail.php
@@ -0,0 +1,25 @@
+otp = $otp;
+ }
+
+ public function build()
+ {
+ return $this->subject('Your Login Verification Code')
+ ->markdown('emails.auth.otp');
+ }
+}
\ No newline at end of file
diff --git a/app/Models/OfficeLocation.php b/app/Models/OfficeLocation.php
index 62f240d..d2b25f6 100644
--- a/app/Models/OfficeLocation.php
+++ b/app/Models/OfficeLocation.php
@@ -7,6 +7,7 @@ use Illuminate\Database\Eloquent\Model;
class OfficeLocation extends Model
{
protected $guarded = array('id');
+ protected $table = 'office_locations';
public function created_by_info(){
return $this->hasOne('App\Models\StaffMember', 'id', 'user_id');
@@ -15,4 +16,17 @@ class OfficeLocation extends Model
// return $this->hasOne('App\Models\StaffMember', 'id', 'country_manager_id');
return $this->hasOne('App\Models\StaffMember', 'id', 'country_manager_id');
}
+
+
+
+ public function manager()
+ {
+ return $this->belongsTo(StaffMember::class, 'country_manager_id');
+ }
+
+
+ public function documents()
+ {
+ return $this->hasMany(OfficeLocationDocument::class, 'office_location_id');
+ }
}
diff --git a/app/Models/OfficeLocationDocument.php b/app/Models/OfficeLocationDocument.php
new file mode 100644
index 0000000..465d72c
--- /dev/null
+++ b/app/Models/OfficeLocationDocument.php
@@ -0,0 +1,16 @@
+belongsTo(OfficeLocation::class, 'office_location_id');
+ }
+}
\ No newline at end of file
diff --git a/resources/views/auth/otp-verify.blade.php b/resources/views/auth/otp-verify.blade.php
new file mode 100644
index 0000000..d84b5f8
--- /dev/null
+++ b/resources/views/auth/otp-verify.blade.php
@@ -0,0 +1,48 @@
+@extends('layouts.app')
+
+@section('content')
+
+
+
+
+
+
+
Two-Step Verification
+
We've sent a 6-digit code to your email. Please enter it below to securely log in.
+
+
+ @if (session('success'))
+
+ {{ session('success') }}
+
+ @endif
+
+
+
+
+
+
+
Didn't receive the code?
+
+
+
+
+
+
+
+
+@endsection
\ No newline at end of file
diff --git a/resources/views/emails/auth/otp.blade.php b/resources/views/emails/auth/otp.blade.php
new file mode 100644
index 0000000..1870737
--- /dev/null
+++ b/resources/views/emails/auth/otp.blade.php
@@ -0,0 +1,10 @@
+@component('mail::message')
+# Verification Code
+
+Your one-time login code is: **{{ $otp }}**
+
+This code will expire in 10 minutes. Do not share this with anyone.
+
+Thanks,
+{{ config('app.name') }}
+@endcomponent
\ No newline at end of file
diff --git a/resources/views/layouts/partials/sidebar.blade.php b/resources/views/layouts/partials/sidebar.blade.php
index 0426b2f..1fb4813 100644
--- a/resources/views/layouts/partials/sidebar.blade.php
+++ b/resources/views/layouts/partials/sidebar.blade.php
@@ -14,7 +14,7 @@
diff --git a/resources/views/offices/documents.blade.php b/resources/views/offices/documents.blade.php
new file mode 100644
index 0000000..694b0ea
--- /dev/null
+++ b/resources/views/offices/documents.blade.php
@@ -0,0 +1,209 @@
+@extends('layouts.masterbeta')
+
+@section('title', 'Click ERP - Office Documents')
+
+@section('breadcrumbs')
+
+
+ Offices
+
+ {{ $location->city }} Documents
+@endsection
+
+@section('content')
+
+
+
{{ $location->city }}, {{ $location->country }}
+
Manage compliance files, leases, and local registrations.
+
+
+ Upload Document
+
+
+
+
+
+
+
+
+ Document Name
+ Format
+ Validity Period
+ Next Renewal
+ Actions
+
+
+
+ @forelse($location->documents as $doc)
+
+ {{ $doc->name }}
+ {{ $doc->file_extension }}
+
+ {{ $doc->validity_period }}
+
+
+ @if($doc->validity_period === 'On Demand')
+ N/A
+ @else
+ @php
+ // Highlight if renewal is approaching within 30 days or past due
+ $isUrgent = $doc->next_renewal_date && \Carbon\Carbon::parse($doc->next_renewal_date)->isPast() || \Carbon\Carbon::parse($doc->next_renewal_date)->diffInDays(now()) <= 30;
+ @endphp
+
+ @if($isUrgent) @endif
+ {{ $doc->next_renewal_date ? \Carbon\Carbon::parse($doc->next_renewal_date)->format('M d, Y') : 'Not Set' }}
+
+ @endif
+
+
+
+
+
+
+
+
+
+
+ @empty
+
+ No regional documents uploaded yet.
+
+ @endforelse
+
+
+
+
+@endsection
+
+@push('modals')
+
+
+@endpush
+
+@push('scripts')
+
+@endpush
\ No newline at end of file
diff --git a/resources/views/offices/index.blade.php b/resources/views/offices/index.blade.php
new file mode 100644
index 0000000..278ef61
--- /dev/null
+++ b/resources/views/offices/index.blade.php
@@ -0,0 +1,233 @@
+@extends('layouts.masterbeta')
+
+@section('title', 'Click ERP - Office Locations')
+@push('styles')
+
+
+
+@endpush
+
+@section('breadcrumbs')
+
+
+ Office Locations
+@endsection
+
+@section('content')
+
+
+
Global Offices
+
Manage regional branches and compliance documents.
+
+
+ Add Office
+
+
+
+
+ @forelse($locations as $office)
+
+
+
+
+
+ {{ $office->city ?? 'N/A' }}, {{ $office->country }}
+
+
+
+
+
+
{{ $office->physical_address ?? 'Address not set' }}
+
{{ $office->office_phone ?? 'Phone not set' }}
+
+
+
+
COUNTRY MANAGER
+
+
+ {{ $office->manager->name ?? 'Not Assigned' }}
+
+
+
+
+
+
+
+
+ @empty
+
+
No office locations configured yet.
+
+ @endforelse
+
+
+ {{ $locations->links('pagination::bootstrap-5') }}
+
+@endsection
+
+@push('modals')
+
+
+@endpush
+
+@push('scripts')
+
+
+@endpush
\ No newline at end of file
diff --git a/routes/web.php b/routes/web.php
index 5f9758e..b24e10e 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -9,8 +9,12 @@ Route::get('test', function () {
//bd8f75cc-0f63-4707-9a2e-361800a0d94c
-Auth::routes();
-
+Auth::routes([
+ 'register' => false,
+]);
+Route::get('/verify-otp', [App\Http\Controllers\OtpController::class, 'show'])->name('otp.verify');
+Route::post('/verify-otp', [App\Http\Controllers\OtpController::class, 'verify'])->name('otp.verify.post');
+Route::post('/resend-otp', [App\Http\Controllers\OtpController::class, 'resend'])->name('otp.resend');
Route::middleware(['auth'])->group(function () {
@@ -78,6 +82,17 @@ Route::middleware(['auth'])->group(function () {
Route::post('/store', [App\Http\Controllers\DocumentsController::class, 'store'])->name('store');
Route::delete('/{id}', [App\Http\Controllers\DocumentsController::class, 'destroy'])->name('destroy');
});
+
+ Route::prefix('offices')->name('offices.')->group(function () {
+ Route::get('/', [App\Http\Controllers\OfficeLocationController::class, 'index'])->name('index');
+ Route::post('/store', [App\Http\Controllers\OfficeLocationController::class, 'store'])->name('store');
+ Route::put('/{id}', [App\Http\Controllers\OfficeLocationController::class, 'update'])->name('update');
+ Route::delete('/{id}', [App\Http\Controllers\OfficeLocationController::class, 'destroy'])->name('destroy');
+
+ Route::get('/{id}/documents', [App\Http\Controllers\OfficeLocationController::class, 'showDocuments'])->name('documents');
+ Route::post('/{id}/documents/store', [App\Http\Controllers\OfficeLocationController::class, 'storeDocument'])->name('documents.store');
+ Route::delete('/documents/delete/{docId}', [App\Http\Controllers\OfficeLocationController::class, 'destroyDocument'])->name('documents.destroy');
+ });
Route::get('/api/services', [App\Http\Controllers\ServicesController::class, 'getServicesJson']);
Route::get('/api/countries', [App\Http\Controllers\HelperController::class, 'getCountriesJson']);
diff --git a/storage/laravel-2026-08-24.log b/storage/laravel-2026-08-24.log
new file mode 100644
index 0000000..103adb0
--- /dev/null
+++ b/storage/laravel-2026-08-24.log
@@ -0,0 +1,140 @@
+[2026-08-24 09:18:26] production.ERROR: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'remember_token' in 'field list' (Connection: mysql, SQL: update `staff_members` set `remember_token` = QQb7JC5lgnQvtn3wWpARI3zfttnNknSRmwOIF9RmnR4vP55DarNxkcvvIHOR where `id` = 20) {"userId":20,"exception":"[object] (Illuminate\\Database\\QueryException(code: 42S22): SQLSTATE[42S22]: Column not found: 1054 Unknown column 'remember_token' in 'field list' (Connection: mysql, SQL: update `staff_members` set `remember_token` = QQb7JC5lgnQvtn3wWpARI3zfttnNknSRmwOIF9RmnR4vP55DarNxkcvvIHOR where `id` = 20) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:825)
+[stacktrace]
+#0 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php(779): Illuminate\\Database\\Connection->runQueryCallback('update `staff_m...', Array, Object(Closure))
+#1 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php(584): Illuminate\\Database\\Connection->run('update `staff_m...', Array, Object(Closure))
+#2 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php(536): Illuminate\\Database\\Connection->affectingStatement('update `staff_m...', Array)
+#3 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php(3830): Illuminate\\Database\\Connection->update('update `staff_m...', Array)
+#4 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php(1175): Illuminate\\Database\\Query\\Builder->update(Object(Illuminate\\Support\\Collection))
+#5 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(1239): Illuminate\\Database\\Eloquent\\Builder->update(Array)
+#6 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(1156): Illuminate\\Database\\Eloquent\\Model->performUpdate(Object(Illuminate\\Database\\Eloquent\\Builder))
+#7 /var/www/html/vendor/laravel/framework/src/Illuminate/Auth/EloquentUserProvider.php(101): Illuminate\\Database\\Eloquent\\Model->save()
+#8 /var/www/html/vendor/laravel/framework/src/Illuminate/Auth/SessionGuard.php(701): Illuminate\\Auth\\EloquentUserProvider->updateRememberToken(Object(App\\Models\\StaffMember), Object(SensitiveParameterValue))
+#9 /var/www/html/vendor/laravel/framework/src/Illuminate/Auth/SessionGuard.php(591): Illuminate\\Auth\\SessionGuard->cycleRememberToken(Object(App\\Models\\StaffMember))
+#10 /var/www/html/vendor/laravel/framework/src/Illuminate/Auth/SessionGuard.php(556): Illuminate\\Auth\\SessionGuard->ensureRememberTokenIsSet(Object(App\\Models\\StaffMember))
+#11 /var/www/html/vendor/laravel/framework/src/Illuminate/Auth/SessionGuard.php(423): Illuminate\\Auth\\SessionGuard->login(Object(App\\Models\\StaffMember), true)
+#12 /var/www/html/vendor/laravel/framework/src/Illuminate/Support/Timebox.php(34): Illuminate\\Auth\\SessionGuard->Illuminate\\Auth\\{closure}(Object(Illuminate\\Support\\Timebox))
+#13 /var/www/html/vendor/laravel/framework/src/Illuminate/Auth/SessionGuard.php(412): Illuminate\\Support\\Timebox->call(Object(Closure), 200000)
+#14 /var/www/html/vendor/laravel/ui/auth-backend/AuthenticatesUsers.php(86): Illuminate\\Auth\\SessionGuard->attempt(Array, true)
+#15 /var/www/html/vendor/laravel/ui/auth-backend/AuthenticatesUsers.php(46): App\\Http\\Controllers\\Auth\\LoginController->attemptLogin(Object(Illuminate\\Http\\Request))
+#16 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): App\\Http\\Controllers\\Auth\\LoginController->login(Object(Illuminate\\Http\\Request))
+#17 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(44): Illuminate\\Routing\\Controller->callAction('login', Array)
+#18 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Route.php(266): Illuminate\\Routing\\ControllerDispatcher->dispatch(Object(Illuminate\\Routing\\Route), Object(App\\Http\\Controllers\\Auth\\LoginController), 'login')
+#19 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Route.php(212): Illuminate\\Routing\\Route->runController()
+#20 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(808): Illuminate\\Routing\\Route->run()
+#21 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(170): Illuminate\\Routing\\Router->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
+#22 /var/www/html/vendor/laravel/framework/src/Illuminate/Auth/Middleware/RedirectIfAuthenticated.php(35): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
+#23 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Auth\\Middleware\\RedirectIfAuthenticated->handle(Object(Illuminate\\Http\\Request), Object(Closure))
+#24 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(51): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
+#25 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Routing\\Middleware\\SubstituteBindings->handle(Object(Illuminate\\Http\\Request), Object(Closure))
+#26 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php(88): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
+#27 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Foundation\\Http\\Middleware\\VerifyCsrfToken->handle(Object(Illuminate\\Http\\Request), Object(Closure))
+#28 /var/www/html/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(49): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
+#29 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\View\\Middleware\\ShareErrorsFromSession->handle(Object(Illuminate\\Http\\Request), Object(Closure))
+#30 /var/www/html/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(121): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
+#31 /var/www/html/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(64): Illuminate\\Session\\Middleware\\StartSession->handleStatefulRequest(Object(Illuminate\\Http\\Request), Object(Illuminate\\Session\\Store), Object(Closure))
+#32 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Session\\Middleware\\StartSession->handle(Object(Illuminate\\Http\\Request), Object(Closure))
+#33 /var/www/html/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(37): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
+#34 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Cookie\\Middleware\\AddQueuedCookiesToResponse->handle(Object(Illuminate\\Http\\Request), Object(Closure))
+#35 /var/www/html/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(75): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
+#36 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Cookie\\Middleware\\EncryptCookies->handle(Object(Illuminate\\Http\\Request), Object(Closure))
+#37 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(127): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
+#38 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(807): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))
+#39 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(786): Illuminate\\Routing\\Router->runRouteWithinStack(Object(Illuminate\\Routing\\Route), Object(Illuminate\\Http\\Request))
+#40 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(750): Illuminate\\Routing\\Router->runRoute(Object(Illuminate\\Http\\Request), Object(Illuminate\\Routing\\Route))
+#41 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(739): Illuminate\\Routing\\Router->dispatchToRoute(Object(Illuminate\\Http\\Request))
+#42 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(201): Illuminate\\Routing\\Router->dispatch(Object(Illuminate\\Http\\Request))
+#43 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(170): Illuminate\\Foundation\\Http\\Kernel->Illuminate\\Foundation\\Http\\{closure}(Object(Illuminate\\Http\\Request))
+#44 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
+#45 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php(31): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle(Object(Illuminate\\Http\\Request), Object(Closure))
+#46 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull->handle(Object(Illuminate\\Http\\Request), Object(Closure))
+#47 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
+#48 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php(51): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle(Object(Illuminate\\Http\\Request), Object(Closure))
+#49 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Foundation\\Http\\Middleware\\TrimStrings->handle(Object(Illuminate\\Http\\Request), Object(Closure))
+#50 /var/www/html/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php(27): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
+#51 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Http\\Middleware\\ValidatePostSize->handle(Object(Illuminate\\Http\\Request), Object(Closure))
+#52 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(110): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
+#53 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance->handle(Object(Illuminate\\Http\\Request), Object(Closure))
+#54 /var/www/html/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php(49): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
+#55 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Http\\Middleware\\HandleCors->handle(Object(Illuminate\\Http\\Request), Object(Closure))
+#56 /var/www/html/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php(58): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
+#57 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Http\\Middleware\\TrustProxies->handle(Object(Illuminate\\Http\\Request), Object(Closure))
+#58 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/InvokeDeferredCallbacks.php(22): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
+#59 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Foundation\\Http\\Middleware\\InvokeDeferredCallbacks->handle(Object(Illuminate\\Http\\Request), Object(Closure))
+#60 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(127): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
+#61 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(176): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))
+#62 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(145): Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter(Object(Illuminate\\Http\\Request))
+#63 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1220): Illuminate\\Foundation\\Http\\Kernel->handle(Object(Illuminate\\Http\\Request))
+#64 /var/www/html/index.php(17): Illuminate\\Foundation\\Application->handleRequest(Object(Illuminate\\Http\\Request))
+#65 {main}
+
+[previous exception] [object] (PDOException(code: 42S22): SQLSTATE[42S22]: Column not found: 1054 Unknown column 'remember_token' in 'field list' at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:592)
+[stacktrace]
+#0 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php(592): PDO->prepare('update `staff_m...')
+#1 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php(812): Illuminate\\Database\\Connection->Illuminate\\Database\\{closure}('update `staff_m...', Array)
+#2 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php(779): Illuminate\\Database\\Connection->runQueryCallback('update `staff_m...', Array, Object(Closure))
+#3 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php(584): Illuminate\\Database\\Connection->run('update `staff_m...', Array, Object(Closure))
+#4 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php(536): Illuminate\\Database\\Connection->affectingStatement('update `staff_m...', Array)
+#5 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php(3830): Illuminate\\Database\\Connection->update('update `staff_m...', Array)
+#6 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php(1175): Illuminate\\Database\\Query\\Builder->update(Object(Illuminate\\Support\\Collection))
+#7 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(1239): Illuminate\\Database\\Eloquent\\Builder->update(Array)
+#8 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(1156): Illuminate\\Database\\Eloquent\\Model->performUpdate(Object(Illuminate\\Database\\Eloquent\\Builder))
+#9 /var/www/html/vendor/laravel/framework/src/Illuminate/Auth/EloquentUserProvider.php(101): Illuminate\\Database\\Eloquent\\Model->save()
+#10 /var/www/html/vendor/laravel/framework/src/Illuminate/Auth/SessionGuard.php(701): Illuminate\\Auth\\EloquentUserProvider->updateRememberToken(Object(App\\Models\\StaffMember), Object(SensitiveParameterValue))
+#11 /var/www/html/vendor/laravel/framework/src/Illuminate/Auth/SessionGuard.php(591): Illuminate\\Auth\\SessionGuard->cycleRememberToken(Object(App\\Models\\StaffMember))
+#12 /var/www/html/vendor/laravel/framework/src/Illuminate/Auth/SessionGuard.php(556): Illuminate\\Auth\\SessionGuard->ensureRememberTokenIsSet(Object(App\\Models\\StaffMember))
+#13 /var/www/html/vendor/laravel/framework/src/Illuminate/Auth/SessionGuard.php(423): Illuminate\\Auth\\SessionGuard->login(Object(App\\Models\\StaffMember), true)
+#14 /var/www/html/vendor/laravel/framework/src/Illuminate/Support/Timebox.php(34): Illuminate\\Auth\\SessionGuard->Illuminate\\Auth\\{closure}(Object(Illuminate\\Support\\Timebox))
+#15 /var/www/html/vendor/laravel/framework/src/Illuminate/Auth/SessionGuard.php(412): Illuminate\\Support\\Timebox->call(Object(Closure), 200000)
+#16 /var/www/html/vendor/laravel/ui/auth-backend/AuthenticatesUsers.php(86): Illuminate\\Auth\\SessionGuard->attempt(Array, true)
+#17 /var/www/html/vendor/laravel/ui/auth-backend/AuthenticatesUsers.php(46): App\\Http\\Controllers\\Auth\\LoginController->attemptLogin(Object(Illuminate\\Http\\Request))
+#18 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): App\\Http\\Controllers\\Auth\\LoginController->login(Object(Illuminate\\Http\\Request))
+#19 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(44): Illuminate\\Routing\\Controller->callAction('login', Array)
+#20 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Route.php(266): Illuminate\\Routing\\ControllerDispatcher->dispatch(Object(Illuminate\\Routing\\Route), Object(App\\Http\\Controllers\\Auth\\LoginController), 'login')
+#21 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Route.php(212): Illuminate\\Routing\\Route->runController()
+#22 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(808): Illuminate\\Routing\\Route->run()
+#23 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(170): Illuminate\\Routing\\Router->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
+#24 /var/www/html/vendor/laravel/framework/src/Illuminate/Auth/Middleware/RedirectIfAuthenticated.php(35): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
+#25 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Auth\\Middleware\\RedirectIfAuthenticated->handle(Object(Illuminate\\Http\\Request), Object(Closure))
+#26 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(51): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
+#27 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Routing\\Middleware\\SubstituteBindings->handle(Object(Illuminate\\Http\\Request), Object(Closure))
+#28 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php(88): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
+#29 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Foundation\\Http\\Middleware\\VerifyCsrfToken->handle(Object(Illuminate\\Http\\Request), Object(Closure))
+#30 /var/www/html/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(49): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
+#31 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\View\\Middleware\\ShareErrorsFromSession->handle(Object(Illuminate\\Http\\Request), Object(Closure))
+#32 /var/www/html/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(121): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
+#33 /var/www/html/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(64): Illuminate\\Session\\Middleware\\StartSession->handleStatefulRequest(Object(Illuminate\\Http\\Request), Object(Illuminate\\Session\\Store), Object(Closure))
+#34 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Session\\Middleware\\StartSession->handle(Object(Illuminate\\Http\\Request), Object(Closure))
+#35 /var/www/html/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(37): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
+#36 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Cookie\\Middleware\\AddQueuedCookiesToResponse->handle(Object(Illuminate\\Http\\Request), Object(Closure))
+#37 /var/www/html/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(75): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
+#38 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Cookie\\Middleware\\EncryptCookies->handle(Object(Illuminate\\Http\\Request), Object(Closure))
+#39 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(127): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
+#40 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(807): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))
+#41 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(786): Illuminate\\Routing\\Router->runRouteWithinStack(Object(Illuminate\\Routing\\Route), Object(Illuminate\\Http\\Request))
+#42 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(750): Illuminate\\Routing\\Router->runRoute(Object(Illuminate\\Http\\Request), Object(Illuminate\\Routing\\Route))
+#43 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(739): Illuminate\\Routing\\Router->dispatchToRoute(Object(Illuminate\\Http\\Request))
+#44 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(201): Illuminate\\Routing\\Router->dispatch(Object(Illuminate\\Http\\Request))
+#45 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(170): Illuminate\\Foundation\\Http\\Kernel->Illuminate\\Foundation\\Http\\{closure}(Object(Illuminate\\Http\\Request))
+#46 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
+#47 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php(31): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle(Object(Illuminate\\Http\\Request), Object(Closure))
+#48 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull->handle(Object(Illuminate\\Http\\Request), Object(Closure))
+#49 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
+#50 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php(51): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle(Object(Illuminate\\Http\\Request), Object(Closure))
+#51 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Foundation\\Http\\Middleware\\TrimStrings->handle(Object(Illuminate\\Http\\Request), Object(Closure))
+#52 /var/www/html/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php(27): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
+#53 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Http\\Middleware\\ValidatePostSize->handle(Object(Illuminate\\Http\\Request), Object(Closure))
+#54 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(110): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
+#55 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance->handle(Object(Illuminate\\Http\\Request), Object(Closure))
+#56 /var/www/html/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php(49): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
+#57 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Http\\Middleware\\HandleCors->handle(Object(Illuminate\\Http\\Request), Object(Closure))
+#58 /var/www/html/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php(58): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
+#59 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Http\\Middleware\\TrustProxies->handle(Object(Illuminate\\Http\\Request), Object(Closure))
+#60 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/InvokeDeferredCallbacks.php(22): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
+#61 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Foundation\\Http\\Middleware\\InvokeDeferredCallbacks->handle(Object(Illuminate\\Http\\Request), Object(Closure))
+#62 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(127): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
+#63 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(176): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))
+#64 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(145): Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter(Object(Illuminate\\Http\\Request))
+#65 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1220): Illuminate\\Foundation\\Http\\Kernel->handle(Object(Illuminate\\Http\\Request))
+#66 /var/www/html/index.php(17): Illuminate\\Foundation\\Application->handleRequest(Object(Illuminate\\Http\\Request))
+#67 {main}
+"}