Введите данные и войдите в laravel - PullRequest
0 голосов
/ 08 октября 2018

Я работаю над заданием в laravel, где у меня есть бланк заявления.Я хочу отправить заявку с электронной почтой, mobileNo, customerId и т. Д.

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

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

Может кто-нибудь помочь мне в достижении вышеуказанных функций.Заранее спасибо.

** Данные: **

email='user@gmail.com'

mobile = '9875425698'

customerId= 'CI10001';

Контроллер ApplicationForm Где я успешно получаю данные

class ApplicationForm extends Controller
{
    public function saveApplicationForm(Request $request){
      return $request;
    }
}

Ответы [ 2 ]

0 голосов
/ 08 октября 2018

После моего комментария:

В RegisterController (App \ Http \ Controllers \ Auth)

protected function create(array $data)
{

    return User::create([
        'name' => $data['name'],
        'email' => $data['email'],
        'institution' => $data['institution'],
        'password' => 'NOT_SET',
    ]);
}

Затем создайте промежуточное программное обеспечение (например, php artisan make: middleware Must_have_password)

namespace App\Http\Middleware;

use Closure;
use Auth;

class Must_have_password
{
    /**
     * Verify if password is set, otherwise redirect to password-set page.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        $user = Auth::user();

        if ($user && $user->password !== 'NOT_SET') {
            return $next($request);
        }

        else return redirect('/set-password');
    }
}

Конечно, вам нужно создать представление настройки пароля и подключить его к маршруту / set-password.Как я сказал в комментарии, вы хотите убедиться, что маршрут / set-password хорошо защищен, потому что вы не хотите, чтобы люди таким образом взламывали учетные записи.Хорошая вещь об этом подходе (с использованием NOT_SET) заключается в том, что люди всегда могут использовать инфраструктуру password_reset для сброса своего пароля, если они не делают этого изначально.

Это немного глупо, но потому что Laravel всегда шифруетпароли, значение не может стать NOT_SET другим способом.В качестве альтернативы, вы можете добавить логическое значение к вашей пользовательской модели (что-то вроде Must_Reset), которое перенаправляет на страницу сброса пароля.

Вы также можете подключить функцию сброса пароля в Laravel, ищите «Один раз».Пароль Laravel '(например, здесь ).

0 голосов
/ 08 октября 2018

Добавить пользователя, отправив форму

$password = bcrypt('secret'); //add here random password

$user = new User();
$user->email = 'xyz@gmail.com';
$user->mobileNo = '123456789';
$user->customerId = '1245';
$user->password = $password;  
$user->save();

после того, как вы вставите raw в таблицу пользователей, войдите в систему по идентификатору пользователя без пароля

Auth::loginUsingId($user->id);
Auth::loginUsingId($user->id,true); // Login and "remember" the given user...

, в противном случае войдите с помощью электронной почты и пароля

Auth::attempt(['email' => $user->email, 'password' => $password], $remember);

все действия выполняются одним методом (действием)

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