diff options
author | Jeremy Benoist <jeremy.benoist@gmail.com> | 2019-01-18 22:46:44 +0100 |
---|---|---|
committer | Jeremy Benoist <jeremy.benoist@gmail.com> | 2019-01-23 13:28:24 +0100 |
commit | a0c5eb003f1cbeef10d5620e98870c7556e17c75 (patch) | |
tree | 52660ffe507ac294db3db387842eed43fad1c75a /src/Wallabag/CoreBundle/Resources/views/themes/material/Config | |
parent | 4c0e747940ac39630f1d2a6a14c628ba6729ecfd (diff) | |
download | wallabag-a0c5eb003f1cbeef10d5620e98870c7556e17c75.tar.gz wallabag-a0c5eb003f1cbeef10d5620e98870c7556e17c75.tar.zst wallabag-a0c5eb003f1cbeef10d5620e98870c7556e17c75.zip |
Change the way to enable 2FA
And add a step to validate a generated code from the OTP app
Diffstat (limited to 'src/Wallabag/CoreBundle/Resources/views/themes/material/Config')
-rw-r--r-- | src/Wallabag/CoreBundle/Resources/views/themes/material/Config/index.html.twig | 65 | ||||
-rw-r--r-- | src/Wallabag/CoreBundle/Resources/views/themes/material/Config/otp_app.html.twig | 63 |
2 files changed, 93 insertions, 35 deletions
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Config/index.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Config/index.html.twig index 5b00eb7b..412c18f4 100644 --- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Config/index.html.twig +++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/Config/index.html.twig | |||
@@ -196,45 +196,40 @@ | |||
196 | </div> | 196 | </div> |
197 | </div> | 197 | </div> |
198 | 198 | ||
199 | {{ form_widget(form.user.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }} | ||
200 | |||
199 | {% if twofactor_auth %} | 201 | {% if twofactor_auth %} |
202 | <br/> | ||
203 | <br/> | ||
200 | <div class="row"> | 204 | <div class="row"> |
201 | {{ 'config.form_user.two_factor_description'|trans }} | 205 | <h5>{{ 'config.otp.page_title'|trans }}</h5> |
202 | 206 | ||
203 | <div class="input-field col s11"> | 207 | <p>{{ 'config.form_user.two_factor_description'|trans }}</p> |
204 | {{ form_widget(form.user.emailTwoFactor) }} | 208 | |
205 | {{ form_label(form.user.emailTwoFactor) }} | 209 | <table> |
206 | {{ form_errors(form.user.emailTwoFactor) }} | 210 | <thead> |
207 | </div> | 211 | <tr> |
208 | <div class="input-field col s11"> | 212 | <th>{{ 'config.form_user.two_factor.table_method'|trans }}</th> |
209 | {{ form_widget(form.user.googleTwoFactor) }} | 213 | <th>{{ 'config.form_user.two_factor.table_state'|trans }}</th> |
210 | {{ form_label(form.user.googleTwoFactor) }} | 214 | <th>{{ 'config.form_user.two_factor.table_action'|trans }}</th> |
211 | {{ form_errors(form.user.googleTwoFactor) }} | 215 | </tr> |
212 | </div> | 216 | </thead> |
217 | |||
218 | <tbody> | ||
219 | <tr> | ||
220 | <td>{{ 'config.form_user.two_factor.emailTwoFactor_label'|trans }}</td> | ||
221 | <td>{% if app.user.isEmailTwoFactor %}<b>{{ 'config.form_user.two_factor.state_enabled'|trans }}</b>{% else %}{{ 'config.form_user.two_factor.state_disabled'|trans }}{% endif %}</td> | ||
222 | <td><a href="{{ path('config_otp_email') }}" class="waves-effect waves-light btn{% if app.user.isEmailTwoFactor %} disabled{% endif %}">{{ 'config.form_user.two_factor.action_email'|trans }}</a></td> | ||
223 | </tr> | ||
224 | <tr> | ||
225 | <td>{{ 'config.form_user.two_factor.googleTwoFactor_label'|trans }}</td> | ||
226 | <td>{% if app.user.isGoogleTwoFactor %}<b>{{ 'config.form_user.two_factor.state_enabled'|trans }}</b>{% else %}{{ 'config.form_user.two_factor.state_disabled'|trans }}{% endif %}</td> | ||
227 | <td><a href="{{ path('config_otp_app') }}" class="waves-effect waves-light btn{% if app.user.isGoogleTwoFactor %} disabled{% endif %}">{{ 'config.form_user.two_factor.action_app'|trans }}</a></td> | ||
228 | </tr> | ||
229 | </tbody> | ||
230 | </table> | ||
213 | </div> | 231 | </div> |
214 | |||
215 | {% for OtpQrCode in app.session.flashbag.get('OtpQrCode') %} | ||
216 | <div class="card-panel yellow darken-1 black-text"> | ||
217 | {{ 'config.form_user.two_factor_code_description_1'|trans }} | ||
218 | <br/> | ||
219 | {{ 'config.form_user.two_factor_code_description_2'|trans }} | ||
220 | <br/><br/> | ||
221 | <img id="2faQrcode" class="hide-on-med-and-down" /> | ||
222 | <script> | ||
223 | document.getElementById('2faQrcode').src = jrQrcode.getQrBase64('{{ OtpQrCode }}'); | ||
224 | </script> | ||
225 | <br/><br/> | ||
226 | {{ 'config.form_user.two_factor_code_description_3'|trans }} | ||
227 | <br/><br/> | ||
228 | <strong>{{ app.user.getGoogleAuthenticatorSecret }}</strong> | ||
229 | <br/><br/> | ||
230 | {{ 'config.form_user.two_factor_code_description_4'|trans }} | ||
231 | <br/><br/> | ||
232 | <strong>{{ app.user.getBackupCodes|join("\n")|nl2br }}</strong> | ||
233 | </div> | ||
234 | {% endfor %} | ||
235 | {% endif %} | 232 | {% endif %} |
236 | |||
237 | {{ form_widget(form.user.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }} | ||
238 | {{ form_widget(form.user._token) }} | 233 | {{ form_widget(form.user._token) }} |
239 | </form> | 234 | </form> |
240 | </div> | 235 | </div> |
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Config/otp_app.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Config/otp_app.html.twig new file mode 100644 index 00000000..6aef355e --- /dev/null +++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/Config/otp_app.html.twig | |||
@@ -0,0 +1,63 @@ | |||
1 | {% extends "WallabagCoreBundle::layout.html.twig" %} | ||
2 | |||
3 | {% block title %}{{ 'config.page_title'|trans }} > {{ 'config.otp.page_title'|trans }}{% endblock %} | ||
4 | |||
5 | {% block content %} | ||
6 | <div class="row"> | ||
7 | <div class="col s12"> | ||
8 | <div class="card-panel settings"> | ||
9 | <div class="row"> | ||
10 | <h5>{{ 'config.otp.page_title'|trans }}</h5> | ||
11 | |||
12 | <ol> | ||
13 | <li> | ||
14 | <p>{{ 'config.otp.app.two_factor_code_description_1'|trans }}</p> | ||
15 | <p>{{ 'config.otp.app.two_factor_code_description_2'|trans }}</p> | ||
16 | |||
17 | <p> | ||
18 | <img id="2faQrcode" class="hide-on-med-and-down" /> | ||
19 | <script> | ||
20 | document.getElementById('2faQrcode').src = jrQrcode.getQrBase64('{{ qr_code }}'); | ||
21 | </script> | ||
22 | </p> | ||
23 | </li> | ||
24 | <li> | ||
25 | <p>{{ 'config.otp.app.two_factor_code_description_3'|trans }}</p> | ||
26 | |||
27 | <p><strong>{{ app.user.getBackupCodes|join("\n")|nl2br }}</strong></p> | ||
28 | </li> | ||
29 | <li> | ||
30 | <p>{{ 'config.otp.app.two_factor_code_description_4'|trans }}</p> | ||
31 | |||
32 | {% for flashMessage in app.session.flashbag.get("two_factor") %} | ||
33 | <div class="card-panel red darken-1 black-text"> | ||
34 | {{ flashMessage|trans }} | ||
35 | </div> | ||
36 | {% endfor %} | ||
37 | |||
38 | <form class="form" action="{{ path("config_otp_app_check") }}" method="post"> | ||
39 | <div class="card-content"> | ||
40 | <div class="row"> | ||
41 | <div class="input-field col s12"> | ||
42 | <label for="_auth_code">{{ "scheb_two_factor.auth_code"|trans }}</label> | ||
43 | <input id="_auth_code" type="text" autocomplete="off" name="_auth_code" /> | ||
44 | </div> | ||
45 | </div> | ||
46 | </div> | ||
47 | <div class="card-action"> | ||
48 | <a href="{{ path('config_otp_app_cancel') }}" class="waves-effect waves-light grey btn"> | ||
49 | {{ 'config.otp.app.cancel'|trans }} | ||
50 | </a> | ||
51 | <button class="btn waves-effect waves-light" type="submit" name="send"> | ||
52 | {{ 'config.otp.app.enable'|trans }} | ||
53 | <i class="material-icons right">send</i> | ||
54 | </button> | ||
55 | </div> | ||
56 | </form> | ||
57 | </li> | ||
58 | </ol> | ||
59 | </div> | ||
60 | </div> | ||
61 | </div> | ||
62 | </div> | ||
63 | {% endblock %} | ||