Хранить данные с помощью формы входа (для каждого пользователя) - Laravel 5.7 - PullRequest
1 голос
/ 05 апреля 2019

Я создаю веб-сайт с несколькими «зонами», чтобы его было легко понять.Пользователи будут выбирать любую зону, которую они хотят перейти в форме входа, они могут перейти в любую зону, которую они хотят, но могут выбрать только при входе.


Email: [__________]

Pass:  [__________]

Zone:  [_dropdown_]
         zone 1
         zone 2
          ...

И я хочу на самом делеСОХРАНИТЬ зону в таблице ПОЛЬЗОВАТЕЛЕЙ по умолчанию, когда они выполняют вход, в той же форме (хотя форма входа в систему ничего не хранит, насколько я знаю)

Я не знаю, какие файлы мне нужно редактировать, они должныбыть основными файлами ...

Я пытался изменить контроллеры по умолчанию, но не повезло.В прежних версиях laravel они кажутся менее скрытыми ...

Table users (default table used in Laravel for Users/Auth/Login)
-id
-name
-email
-password
-zone (NEW FIELD)

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

Ответы [ 2 ]

0 голосов
/ 05 апреля 2019

Если в раскрывающемся списке вашей зоны указано имя zone, то в app/Http/Controllers/Auth/LoginController.php вставьте следующее:

/**
 * Validate the user login request.
 *
 * @param  \Illuminate\Http\Request  $request
 * @return void
 *
 * @throws \Illuminate\Validation\ValidationException
 */
protected function validateLogin(Request $request)
{
    $request->validate([
        $this->username() => 'required|string',
        'password' => 'required|string',
        'zone' => 'required|in:zone_1,zone_2,zone_3', // all possible zones
    ]);
}

/**
 * The user has been authenticated.
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  mixed  $user
 * @return mixed
 */
protected function authenticated(Request $request, $user)
{
    $user->zone = $request->zone; // update zone in user
    $user->save(); // save user
}
0 голосов
/ 05 апреля 2019

в вашем app/Http/Controllers/Auth/RegisterController.php файле есть один

/**
 * Create a new user instance after a valid registration.
 *
 * @param  array  $data
 * @return \App\User
 */
protected function create(array $data)
{
    return User::create([
        'name' => $data['name'],
        'email' => $data['email'],
        'password' => Hash::make($data['password']),
        'zone' => $data['zone']
    ]);
}

Не забудьте включить zone в валидатор метода выше

protected function validator(array $data)
{
    return Validator::make($data, [
        'name' => ['required', 'string', 'max:255'],
        'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
        'password' => ['required', 'string', 'min:6', 'confirmed'],
    ]);
}

Затем, когда пользователь входит в систему, запускается метод authenticated.

protected function authenticated(Request $request, $user)
{
    // Store Zone In session HERE
}

надеюсь, это поможет. Не стесняйтесь, если вы найдете этот ответ полезным

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