Skip to content
This repository was archived by the owner on Jun 25, 2024. It is now read-only.

Commit 759855b

Browse files
author
Billy Clark
committed
users with TOTP MFA could not utilize material theme yet.
1 parent b44572c commit 759855b

File tree

6 files changed

+136
-4
lines changed

6 files changed

+136
-4
lines changed

README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,9 @@ If configured, an alert will be shown to the user filled with the content of tha
169169
5. Click **hub-discovery**
170170
6. Click **idp4**
171171
7. Login as a "totp" user: `username=`**has_totp** `password=`**a**
172-
7. TODO: add remaining steps
172+
8. Setup an app using this secret, `GFDHSMZ6EVBFGRB4`, [QR Code](data:image/png;base64,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)
173+
9. Enter code from app to verify
174+
10. Click **Logout**
173175

174176
#### Key (U2F)
175177
1. Goto [http://ssp-hub.local](http://ssp-hub.local)

development/idp4/m991231_235959_insert_mfa_test_users.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,10 @@ public function safeUp()
3939
$this->batchInsert('{{mfa}}',
4040
['id','user_id','type' ,'external_uuid' ,'verified','created_utc' ],[
4141
[ 1 , 3 ,'backupcode',NULL , 1 , MySqlDateTime::now()],
42-
[ 2 , 4 ,'totp' ,'' , 1 , MySqlDateTime::now()],
42+
[ 2 , 4 ,'totp' ,'2f062961-00af-4abf-a7ad-5986778789c1', 1 , MySqlDateTime::now()], // GFDHSMZ6EVBFGRB4
4343
[ 3 , 5 ,'u2f' ,'c4f7d437-ad38-4393-a226-22f35cb1bcce', 1 , MySqlDateTime::now()],
4444
[ 4 , 6 ,'backupcode',NULL , 1 , MySqlDateTime::now()],
45-
[ 5 , 6 ,'totp' ,'' , 1 , MySqlDateTime::now()],
45+
[ 5 , 6 ,'totp' ,'2f062961-00af-4abf-a7ad-5986778789c1', 1 , MySqlDateTime::now()], // GFDHSMZ6EVBFGRB4
4646
[ 6 , 6 ,'u2f' ,'c4f7d437-ad38-4393-a226-22f35cb1bcce', 1 , MySqlDateTime::now()],
4747
]);
4848

dictionaries/mfa.definition.json

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,30 @@
3636
"fr": "TODO",
3737
"ko": "TODO"
3838
},
39+
"totp_header": {
40+
"en": "Verification app",
41+
"es": "TODO",
42+
"fr": "TODO",
43+
"ko": "TODO"
44+
},
45+
"totp_icon": {
46+
"en": "Verification app icon",
47+
"es": "TODO",
48+
"fr": "TODO",
49+
"ko": "TODO"
50+
},
51+
"totp_instructions": {
52+
"en": "You will need to check your verification app for the current code.",
53+
"es": "TODO",
54+
"fr": "TODO",
55+
"ko": "TODO"
56+
},
57+
"totp_input": {
58+
"en": "Enter 6-digit code",
59+
"es": "TODO",
60+
"fr": "TODO",
61+
"ko": "TODO"
62+
},
3963
"button_verify": {
4064
"en": "Verify",
4165
"es": "TODO",

themes/material/mfa/prompt-for-mfa-backupcode.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
</h1>
3737
</div>
3838

39-
<div class="mdl-card__title" >
39+
<div class="mdl-card__title center" >
4040
<p class="mdl-card__subtitle-text">
4141
<?= $this->t('{material:mfa:backup_code_reminder}') ?>
4242
</p>
Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
<!DOCTYPE html>
2+
<html>
3+
<head>
4+
<title><?= $this->t('{material:mfa:title}') ?></title>
5+
6+
<?php include __DIR__ . '/../common-head-elements.php' ?>
7+
</head>
8+
<body class="gradient-bg">
9+
<div class="mdl-layout mdl-layout--fixed-header fill-viewport">
10+
<header class="mdl-layout__header">
11+
<div class="mdl-layout__header-row">
12+
<span class="mdl-layout-title">
13+
<?= $this->t('{material:mfa:header}') ?>
14+
</span>
15+
</div>
16+
</header>
17+
<main class="mdl-layout__content" layout-children="column">
18+
<form layout-children="column" method="POST">
19+
<?php
20+
foreach ($this->data['formData'] as $name => $value) {
21+
?>
22+
<input type="hidden" name="<?= htmlentities($name); ?>"
23+
value="<?= htmlentities($value); ?>"/>
24+
<?php
25+
}
26+
?>
27+
<div class="mdl-card mdl-shadow--8dp">
28+
<div class="mdl-card__media white-bg margin" layout-children="column">
29+
<img src="/module.php/material/mfa-totp-app.svg"
30+
alt="<?= $this->t('{material:mfa:totp_icon}') ?>">
31+
</div>
32+
33+
<div class="mdl-card__title center">
34+
<h1 class="mdl-card__title-text">
35+
<?= $this->t('{material:mfa:totp_header}') ?>
36+
</h1>
37+
</div>
38+
39+
<div class="mdl-card__title center" >
40+
<p class="mdl-card__subtitle-text">
41+
<?= $this->t('{material:mfa:totp_instructions}') ?>
42+
</p>
43+
</div>
44+
45+
<div class="mdl-card__supporting-text" layout-children="column">
46+
<div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label">
47+
<label for="mfaSubmission" class="mdl-textfield__label">
48+
<?= $this->t('{material:mfa:totp_input}') ?>
49+
</label>
50+
<input name="mfaSubmission" class="mdl-textfield__input" autofocus
51+
id="mfaSubmission"/>
52+
</div>
53+
</div>
54+
55+
<?php
56+
$message = $this->data['errorMessage'];
57+
58+
if (! empty($message)) {
59+
?>
60+
<div class="mdl-card__supporting-text" layout-children="column">
61+
<p class="mdl-color-text--red error">
62+
<i class="material-icons">error</i>
63+
64+
<span class="mdl-typography--caption">
65+
<?= htmlentities($message) ?>
66+
</span>
67+
</p>
68+
</div>
69+
70+
<script>
71+
ga('send','event','error','totp', <?= $message ?>');
72+
</script>
73+
<?php
74+
}
75+
?>
76+
77+
<div class="mdl-card__actions" layout-children="row">
78+
<span flex></span>
79+
<button type="submit" name="submitMfa"
80+
class="mdl-button mdl-button--raised mdl-button--primary">
81+
<?= $this->t('{material:mfa:button_verify}') ?>
82+
</button>
83+
</div>
84+
</div>
85+
86+
<div>
87+
<label class="mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect">
88+
<span class="mdl-checkbox__label">
89+
<?= $this->t('{material:mfa:remember_this}') ?>
90+
</span>
91+
<input type="checkbox" name="rememberMe" value="true" checked
92+
class="mdl-checkbox__input"/>
93+
</label>
94+
</div>
95+
</form>
96+
</main>
97+
</div>
98+
</body>
99+
</html>

www/mfa-totp-app.svg

Lines changed: 7 additions & 0 deletions
Loading

0 commit comments

Comments
 (0)