125 lines
4.5 KiB
PHP
125 lines
4.5 KiB
PHP
<?php
|
|
|
|
namespace Koneko\VuexyAdmin\Providers;
|
|
|
|
use Illuminate\Support\ServiceProvider;
|
|
use Illuminate\Cache\RateLimiting\Limit;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Config;
|
|
use Illuminate\Support\Facades\Hash;
|
|
use Illuminate\Support\Facades\RateLimiter;
|
|
use Illuminate\Support\Str;
|
|
use Laravel\Fortify\Fortify;
|
|
use Koneko\VuexyAdmin\Actions\Fortify\CreateNewUser;
|
|
use Koneko\VuexyAdmin\Actions\Fortify\ResetUserPassword;
|
|
use Koneko\VuexyAdmin\Actions\Fortify\UpdateUserPassword;
|
|
use Koneko\VuexyAdmin\Actions\Fortify\UpdateUserProfileInformation;
|
|
use Koneko\VuexyAdmin\Models\User;
|
|
use Koneko\VuexyAdmin\Services\AdminTemplateService;
|
|
|
|
class FortifyServiceProvider extends ServiceProvider
|
|
{
|
|
/**
|
|
* Register any application services.
|
|
*/
|
|
public function register(): void
|
|
{
|
|
//
|
|
}
|
|
|
|
/**
|
|
* Bootstrap any application services.
|
|
*/
|
|
public function boot(): void
|
|
{
|
|
Fortify::createUsersUsing(CreateNewUser::class);
|
|
Fortify::updateUserProfileInformationUsing(UpdateUserProfileInformation::class);
|
|
Fortify::updateUserPasswordsUsing(UpdateUserPassword::class);
|
|
Fortify::resetUserPasswordsUsing(ResetUserPassword::class);
|
|
|
|
RateLimiter::for('login', function (Request $request) {
|
|
$throttleKey = Str::transliterate(Str::lower($request->input(Fortify::username())) . '|' . $request->ip());
|
|
|
|
return Limit::perMinute(5)->by($throttleKey);
|
|
});
|
|
|
|
RateLimiter::for('two-factor', function (Request $request) {
|
|
return Limit::perMinute(5)->by($request->session()->get('login.id'));
|
|
});
|
|
|
|
Fortify::authenticateUsing(function (Request $request) {
|
|
$user = User::where('email', $request->email)
|
|
->where('status', User::STATUS_ENABLED)
|
|
->first();
|
|
|
|
if ($user && Hash::check($request->password, $user->password)) {
|
|
return $user;
|
|
}
|
|
});
|
|
|
|
// Simula lo que hace tu middleware y comparte `_admin`
|
|
$viewMode = Config::get('vuexy.custom.authViewMode');
|
|
$adminVars = app(AdminTemplateService::class)->getAdminVars();
|
|
|
|
// Configurar la vista del login
|
|
Fortify::loginView(function () use ($viewMode, $adminVars) {
|
|
$pageConfigs = ['myLayout' => 'blank'];
|
|
|
|
view()->share('_admin', $adminVars);
|
|
|
|
return view("vuexy-admin::auth.login-{$viewMode}", ['pageConfigs' => $pageConfigs]);
|
|
});
|
|
|
|
// Configurar la vista del registro (si lo necesitas)
|
|
Fortify::registerView(function () use ($viewMode, $adminVars) {
|
|
$pageConfigs = ['myLayout' => 'blank'];
|
|
|
|
view()->share('_admin', $adminVars);
|
|
|
|
return view("vuexy-admin::auth.register-{$viewMode}", ['pageConfigs' => $pageConfigs]);
|
|
});
|
|
|
|
// Configurar la vista de restablecimiento de contraseñas
|
|
Fortify::requestPasswordResetLinkView(function () use ($viewMode, $adminVars) {
|
|
$pageConfigs = ['myLayout' => 'blank'];
|
|
|
|
view()->share('_admin', $adminVars);
|
|
|
|
return view("vuexy-admin::auth.forgot-password-{$viewMode}", ['pageConfigs' => $pageConfigs]);
|
|
});
|
|
|
|
Fortify::resetPasswordView(function ($request) use ($viewMode, $adminVars) {
|
|
$pageConfigs = ['myLayout' => 'blank'];
|
|
|
|
view()->share('_admin', $adminVars);
|
|
|
|
return view("vuexy-admin::auth.reset-password-{$viewMode}", ['pageConfigs' => $pageConfigs, 'request' => $request]);
|
|
});
|
|
|
|
// Vista de verificación de correo electrónico
|
|
Fortify::verifyEmailView(function () use ($viewMode, $adminVars) {
|
|
view()->share('_admin', $adminVars);
|
|
|
|
return view("vuexy-admin::auth.verify-email-{$viewMode}");
|
|
});
|
|
|
|
// Vista de confirmación de contraseña
|
|
Fortify::confirmPasswordView(function () use ($viewMode, $adminVars) {
|
|
$pageConfigs = ['myLayout' => 'blank'];
|
|
|
|
view()->share('_admin', $adminVars);
|
|
|
|
return view("vuexy-admin::auth.confirm-password-{$viewMode}", ['pageConfigs' => $pageConfigs]);
|
|
});
|
|
|
|
// Configurar la vista para la verificación de dos factores
|
|
Fortify::twoFactorChallengeView(function () use ($viewMode, $adminVars) {
|
|
$pageConfigs = ['myLayout' => 'blank'];
|
|
|
|
view()->share('_admin', $adminVars);
|
|
|
|
return view("vuexy-admin::auth.two-factor-challenge-{$viewMode}", ['pageConfigs' => $pageConfigs]);
|
|
});
|
|
}
|
|
}
|