Laravel Остановить регистрацию из панели администратора

Я создаю страницу настроек, где администратор может изменить некоторые настройки на веб-сайте. Я хочу добавить опцию остановки регистрации.

Например:

если регистрация отключена и пользователь пытается перейти на страницу регистрации, он автоматически перенаправляет на 404

Таблица настроек:

Имя: Название параметра или настройки.

Значение: значение (если это значение = 0, это означает, что этот параметр отключен, а если он 1, это означает, что он включен)

Я уже добавил столбец в таблицу настроек "stop_register"

то, что я хочу, - это когда значение этого столбца равно 0, тогда регистрация отключена, а когда оно равно 1, регистрация включена


person Hamad Essa    schedule 06.03.2020    source источник
comment
то, что я хочу, - это когда значение этого столбца равно 0, тогда регистрация отключена, а когда оно равно 1, то регистрация включена Вы имеете в виду другой способ   -  person brombeer    schedule 06.03.2020
comment
@kerbholz как еще?   -  person Hamad Essa    schedule 06.03.2020
comment
Если stop_register равен 1 / true, регистрация выключена, а не включена.   -  person brombeer    schedule 06.03.2020
comment
@kerbholz да это именно то, что я хочу   -  person Hamad Essa    schedule 06.03.2020
comment
Возможно, вы сможете изменить свои маршруты в зависимости от этого параметра: Auth::routes(['register' => false]); включит аутентификацию маршрутов без маршрута регистрации. Это также должно удалить ссылку "Регистрация" на панели навигации (по умолчанию).   -  person brombeer    schedule 06.03.2020


Ответы (3)


попробуйте эту версию:

public function Register()
{
  $stop_reg = DB::table('settingstable')->value('stop_register');
  if( $stop_reg==1 )
   {
     return view('register_page');
   }
  elseif( $stop_reg==0 )
   {
     return view('404_page');
   }

}
person Julius Fasema    schedule 06.03.2020

Вы можете использовать middleware для выполнения этой задачи,

Чтобы создать новое промежуточное ПО, используйте Artisan-команду make: middleware:

php artisan make:middleware CheckRegistration

Приведенная выше команда создаст класс CheckRegistration в каталоге app / Http / Middleware.

В этом промежуточном программном обеспечении вы можете применить свою логику, чтобы разрешить регистрационный маршрут или нет в зависимости от value

Промежуточное ПО:

<?php

namespace App\Http\Middleware;

use Closure;

use App/Registration;

class CheckRegistration
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        $value = Registration::select("value"); // assuming value is either 0 or 1

        if ($value == 0) {
            return redirect('404'); // view with 404 display error
        }

        return $next($request);
    }
}

Как и в приведенном выше коде, он будет перенаправлен на представление ошибки 404, если значение равно 0, в противном случае запрос будет передан в приложение.

Код не тестировался.

См. здесь

person akash_poojary    schedule 06.03.2020

попробуйте что-нибудь подобное на своем клинке. хотя я не тестировал код.

@php $stop_reg = DB::table('settingstable')->value('stop_register'); @endphp

@if($stop_reg==1)

    <a class="nav-link" href="{{ route('register') }}" style="font-size:11px">Register</a>

@elseif($stop_reg==0)

    <a class="nav-link" href="{{ route('stop_register') }}" style="font-size:11px">Register</a>

@endif

в приведенном выше фрагменте кода объявите два маршрута; один для страницы регистрации и второй для страницы 404. На контроллере есть две функции: страница регистрации и страница 404.

person Julius Fasema    schedule 06.03.2020
comment
это не работает, если пользователь переходит к маршруту «Регистрация» напрямую - person Hamad Essa; 06.03.2020
comment
вы все еще можете реализовать это на своем контроллере - person Julius Fasema; 06.03.2020