Я пытаюсь получить логин с mfa для работы. Я использую пакет https://github.com/antonioribeiro/google2fa.Laravel 5.1 логин с mfa token
В основном пользователь-миграция выглядит следующим образом
class CreateUsersTable extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up() {
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('email')->unique();
$table->string('password', 60);
$table->rememberToken();
$table->string('google2fa_secret');
$table->boolean('useMfa')->default(false);;
$table->timestamps();
});
}
...
Если пользователь еще не активированный MFA создать новый секретный каждый раз, когда пользователь открывает страницу профиля.
if(!$user->useMfaToken()){
$google2fa = new Google2FA();
$user->google2fa_secret = $google2fa->generateSecretKey();
$user->save();
$google2fa_url = $google2fa->getQRCodeGoogleUrl(
'DatenPro.de',
$user->email,
$user->google2fa_secret
);
}
Если пользователь вводит секрет для завершения активации MFA это будет выполняться:
public function saveMfa(){
$user = \Auth::user();
$secret = \Input::get('secret');
$google2fa = new Google2FA();
$valid = $google2fa->verifyKey($user->google2fa_secret, $secret);
if($valid){
$user->useMfa = true;
$user->save();
return redirect()->back()->withMessage('mfa sucessfully activated');
}
...
Сейчас я работаю на входе в систему с MFA-маркером. Я хочу, чтобы у пользователя была возможность ввести токен на странице входа в систему, если он уже активировал его, иначе, если mfa-Checkbox не выбран, секретный ввод текста скрыт.
Email: __________
Password: __________
Use Mfa: [x]
Secret: __________
Где я могу поставить чеки на токен mfa? Я прочитал об этом, чтобы проверить его с помощью промежуточного программного обеспечения и переменной сеанса, но это кажется неправильным.