Настраиваемое промежуточное программное обеспечение в laravel для получения информации о заказе

#laravel #middleware #laravel-middleware

#laravel #промежуточное программное обеспечение #laravel-промежуточное программное обеспечение

Вопрос:

Итак, у меня есть два поддомена orders.domain.com и admin.domain.com

вот мой web.php

 Route::group(['domain' => 'orders.domain.com'], function()
{

    Route::get('/', 'AppHttpControllersIsoreController@index')->name('view.klientas');
        // view authenticated coupon
        Route::get('{couponcode}/view', 'AppHttpControllersIsoreController@view')->name('view.show');
        // show coupon authenticate form
        Route::get('{couponcode}/auth','AppHttpControllersIsoreController@show_auth')->name('show.auth');
        // handle user input, authenticate coupon
        Route::post('{couponcode}/authenticate','AppHttpControllersIsoreController@post_auth')->name('post.auth');
});

Route::group(['domain' => 'admin.domain.com'], function()
{
    Auth::routes([
        'register' => false, // Register Route
        'reset' => false, // Reset Password Route
        'verify' => false, // Email Verification Route
      ]);
      Route::post('/atsijungti', 'AppHttpControllersHomeController@logout')->name('logout');
      Route::get('/', 'AppHttpControllersKuponaiController@index')->name('dashboard');
      Route::get('/kodas', 'AppHttpControllersKuponaiController@patvirtinimo_kodas')->name('patvirtinimo.kodas');
      
      //Prideti kuponus
      Route::get('/prideti/kuponus', 'AppHttpControllersKuponaiController@prideti_kupona_view')->name('prideti.view');
      Route::post('/', 'AppHttpControllersKuponaiController@prideti_kupona_post')->name('prideti.post');

});
  

Admin.domain.com предназначен для создания и администрирования функций, таких как добавление заказов и других вещей, список клиентов и так далее.

Clients.domain.com поддомен для клиентов, где они получат URL-адрес в почте, щелкните его и получите форму, в которой им нужно написать код подтверждения заказа, и там напишите, если идентификатор купона в ссылке и код подтверждения заказа совпадают с почтой, найденной в базе данных, и совпадают, тогда они будут перенаправлены на представление, где указаны все детали заказа.

Проблема в том, как проверить все в промежуточном программном обеспечении и не предоставлять доступ клиенту, если код подтверждения и почта не совпадают в БД. Потому что я могу что-то сделать в контроллере для проверки, но я не могу ограничить просмотр блейда заказа, если кто-то идет напрямую. PS код подтверждения — bcrypt

Другой вопрос, как ограничить запросы авторизации формы для одного заказа по идентификатору, например, 5 неудачных попыток за 30 минут.

Ответ №1:

Для запросов на ограничение вы можете использовать промежуточное программное обеспечение throttle.

Для проверки наличия электронной почты и кода купона в базе данных или нет, вы можете создать промежуточное программное обеспечение

 class AuthenticateCouponCode {

    /**
     * Handle an incoming request.
     *
     * @param  IlluminateHttpRequest  $request
     * @param  Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next) {
        if (!CouponCode::where('coupon_code', $request-coupon_code)->where('email', $request->email)->exists()) {
            // Do redirection or thow some error to user here.
        }
        return $next($request);
    }

}
  

А затем добавьте это промежуточное программное обеспечение в маршруты заказов.

Комментарии:

1. и куда я должен передавать эти запросы в промежуточном ПО? что я должен написать в своих контроллерах