File tree Expand file tree Collapse file tree 3 files changed +27
-20
lines changed Expand file tree Collapse file tree 3 files changed +27
-20
lines changed Original file line number Diff line number Diff line change 1
1
const authModel = require ( '../models/auth' ) ;
2
- const error = require ( '../lib/error' ) ;
2
+ const error = require ( '../lib/error' ) ;
3
3
const speakeasy = require ( 'speakeasy' ) ;
4
4
5
5
module . exports = {
@@ -13,10 +13,10 @@ module.exports = {
13
13
throw new error . AuthError ( 'MFA is not enabled for this user.' ) ;
14
14
}
15
15
const verified = speakeasy . totp . verify ( {
16
- secret : auth . mfa_secret ,
16
+ secret : auth . mfa_secret ,
17
17
encoding : 'base32' ,
18
- token : token ,
19
- window : 2
18
+ token : token ,
19
+ window : 2
20
20
} ) ;
21
21
if ( ! verified ) {
22
22
throw new error . AuthError ( 'Invalid MFA token.' ) ;
@@ -58,10 +58,10 @@ module.exports = {
58
58
throw new error . AuthError ( 'MFA is not set up for this user.' ) ;
59
59
}
60
60
const verified = speakeasy . totp . verify ( {
61
- secret : auth . mfa_secret ,
61
+ secret : auth . mfa_secret ,
62
62
encoding : 'base32' ,
63
- token : token ,
64
- window : 2
63
+ token : token ,
64
+ window : 2
65
65
} ) ;
66
66
if ( ! verified ) {
67
67
throw new error . AuthError ( 'Invalid MFA token.' ) ;
Original file line number Diff line number Diff line change 1
- const express = require ( 'express' ) ;
2
- const jwtdecode = require ( '../lib/express/jwt-decode' ) ;
1
+ const express = require ( 'express' ) ;
2
+ const jwtdecode = require ( '../lib/express/jwt-decode' ) ;
3
3
const apiValidator = require ( '../lib/validator/api' ) ;
4
- const schema = require ( '../schema' ) ;
5
- const internalMfa = require ( '../internal/mfa' ) ;
6
- const qrcode = require ( 'qrcode' ) ;
7
- const speakeasy = require ( 'speakeasy' ) ;
8
- const userModel = require ( '../models/user' ) ;
4
+ const schema = require ( '../schema' ) ;
5
+ const internalMfa = require ( '../internal/mfa' ) ;
6
+ const qrcode = require ( 'qrcode' ) ;
7
+ const speakeasy = require ( 'speakeasy' ) ;
8
+ const userModel = require ( '../models/user' ) ;
9
9
10
10
let router = express . Router ( {
11
11
caseSensitive : true ,
12
- strict : true ,
13
- mergeParams : true
12
+ strict : true ,
13
+ mergeParams : true
14
14
} ) ;
15
15
16
16
router
35
35
. then ( ( { secret, user } ) => {
36
36
const otpAuthUrl = speakeasy . otpauthURL ( {
37
37
secret : secret . ascii ,
38
- label : user . email ,
38
+ label : user . email ,
39
39
issuer : 'Nginx Proxy Manager'
40
40
} ) ;
41
41
qrcode . toDataURL ( otpAuthUrl , ( err , dataUrl ) => {
Original file line number Diff line number Diff line change @@ -33,9 +33,9 @@ module.exports = Mn.View.extend({
33
33
let view = this ;
34
34
let data = this . ui . form . serializeJSON ( ) ;
35
35
36
- // Save "mfa_validation" value and remove it from data
37
36
let mfaToken = data . mfa_validation ;
38
37
delete data . mfa_validation ;
38
+ delete data . mfa_password ;
39
39
40
40
let show_password = this . model . get ( 'email' ) === '[email protected] ' ;
41
41
@@ -77,7 +77,12 @@ module.exports = Mn.View.extend({
77
77
78
78
if ( mfaToken ) {
79
79
return App . Api . Mfa . enable ( mfaToken )
80
- . then ( ( ) => result ) ;
80
+ . then ( ( ) => result )
81
+ . catch ( err => {
82
+ view . ui . mfaError . text ( err . message ) . show ( ) ;
83
+ err . mfaHandled = true ;
84
+ return Promise . reject ( err ) ;
85
+ } ) ;
81
86
}
82
87
return result ;
83
88
} )
@@ -92,7 +97,9 @@ module.exports = Mn.View.extend({
92
97
} ) ;
93
98
} )
94
99
. catch ( err => {
95
- this . ui . error . text ( err . message ) . show ( ) ;
100
+ if ( ! err . mfaHandled ) {
101
+ this . ui . error . text ( err . message ) . show ( ) ;
102
+ }
96
103
this . ui . buttons . prop ( 'disabled' , false ) . removeClass ( 'btn-disabled' ) ;
97
104
} ) ;
98
105
} ,
You can’t perform that action at this time.
0 commit comments