Enable OTP 2FA

- Update SchebTwoFactorBundle to version 3
- Enable Google 2fa on the bundle
- Disallow ability to use both email and google as 2fa
- Update Ocramius Proxy Manager to handle typed function & attributes (from PHP 7)
- use `$this->addFlash` shortcut instead of `$this->get('session')->getFlashBag()->add`
- update admin to be able to create/reset the 2fa
This commit is contained in:
Jeremy Benoist
2018-12-02 12:43:05 +01:00
parent acd4412080
commit a6b242a1fd
36 changed files with 554 additions and 178 deletions

View File

@ -1,7 +1,8 @@
{# Override `vendor/scheb/two-factor-bundle/Resources/views/Authentication/form.html.twig` #}
{% extends "WallabagUserBundle::layout.html.twig" %}
{% block fos_user_content %}
<form class="form" action="" method="post">
<form class="form" action="{{ path("2fa_login_check") }}" method="post">
<div class="card-content">
<div class="row">
@ -9,14 +10,19 @@
<p class="error">{{ flashMessage|trans }}</p>
{% endfor %}
{# Authentication errors #}
{% if authenticationError %}
<p class="error">{{ authenticationError|trans(authenticationErrorData) }}</p>
{% endif %}
<div class="input-field col s12">
<label for="_auth_code">{{ "scheb_two_factor.auth_code"|trans }}</label>
<input id="_auth_code" type="text" autocomplete="off" name="_auth_code" />
<input id="_auth_code" type="text" autocomplete="off" name="{{ authCodeParameterName }}" />
</div>
{% if useTrustedOption %}
{% if displayTrustedOption %}
<div class="input-field col s12">
<input id="_trusted" type="checkbox" name="_trusted" />
<input id="_trusted" type="checkbox" name="{{ trustedParameterName }}" />
<label for="_trusted">{{ "scheb_two_factor.trusted"|trans }}</label>
</div>
{% endif %}

View File

@ -50,10 +50,21 @@
{% if twofactor_auth %}
<div class="row">
<div class="input-field col s12">
{{ form_widget(edit_form.twoFactorAuthentication) }}
{{ form_label(edit_form.twoFactorAuthentication) }}
{{ form_errors(edit_form.twoFactorAuthentication) }}
{{ form_widget(edit_form.emailTwoFactor) }}
{{ form_label(edit_form.emailTwoFactor) }}
{{ form_errors(edit_form.emailTwoFactor) }}
</div>
<div class="input-field col s12">
{{ form_widget(edit_form.googleTwoFactor) }}
{{ form_label(edit_form.googleTwoFactor) }}
{{ form_errors(edit_form.googleTwoFactor) }}
</div>
{% if user.isGoogleAuthenticatorEnabled %}
<div class="input-field col s12">
<p><strong>OTP Secret</strong>: {{ user.googleAuthenticatorSecret }}</p>
</div>
{% endif %}
</div>
{% endif %}