- users active is recorded when users logges in - add active broker and active customer multi axis line chart - add filter option of 30 days and 7 days
62 lines
1.7 KiB
PHP
62 lines
1.7 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Auth;
|
|
|
|
use App\Actions\RecordUserPageVisitAction;
|
|
use App\Enums\UserStatus;
|
|
use App\Enums\UserTypes;
|
|
use App\Http\Controllers\Controller;
|
|
use App\Http\Requests\AuthenticateUserRequest;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Auth;
|
|
|
|
class AuthenticatedUserController extends Controller
|
|
{
|
|
public function create()
|
|
{
|
|
return view('auth.login');
|
|
}
|
|
|
|
public function store(AuthenticateUserRequest $request, RecordUserPageVisitAction $action)
|
|
{
|
|
$data = $request->validated();
|
|
if (Auth::attempt($data, $data['remember_me'] ?? false)) {
|
|
$user = Auth::user();
|
|
|
|
if ($user->status !== UserStatus::Active->value) {
|
|
Auth::logout();
|
|
|
|
return back()->with('error', 'Your account is not active.');
|
|
}
|
|
|
|
$request->session()->regenerate();
|
|
|
|
$route = match ($user->role) {
|
|
UserTypes::Admin->value => 'admin.dashboard',
|
|
UserTypes::Broker->value, UserTypes::User->value => 'explore',
|
|
};
|
|
|
|
try {
|
|
$action->execute($user, $route);
|
|
} catch (\Throwable $e) {
|
|
\Log::error('Error recording user page visit', [$e->getMessage()]);
|
|
}
|
|
|
|
return to_route($route);
|
|
} else {
|
|
return back()
|
|
->withInput()
|
|
->with('error', 'Invalid Credentials');
|
|
}
|
|
}
|
|
|
|
public function destroy(Request $request)
|
|
{
|
|
Auth::logout();
|
|
$request->session()->invalidate();
|
|
$request->session()->regenerateToken();
|
|
|
|
return to_route('home');
|
|
}
|
|
}
|