@@ -2,21 +2,22 @@ const express = require('express');
22const router = express . Router ( ) ;
33const debugRoute = require ( 'debug' ) ( 'app:route' ) ;
44const speakeasy = require ( 'speakeasy' ) ;
5+ //Services
6+ const dbAdapter = require ( '../services/dbAdapter' ) ;
57//Models
68const { generateAuthToken} = require ( '../models/User' ) ;
79//Middleware
810const auth = require ( '../middleware/auth' ) ;
911
1012router . get ( '/generate' , auth , async ( req , res ) => {
11- //TODO get user from database
12- let user = { } ;
13+ let user = await dbAdapter . getUserById ( req . user . id ) ;
1314
1415 if ( ! user ) {
1516 debugRoute ( "GET /api/otp/generate - 404 - User not found" ) ;
1617 return res . status ( 404 ) . send ( 'User not found.' ) ;
1718 }
1819
19- if ( user . otp_enabled && user . otp_verified ) {
20+ if ( user . totp_secret !== undefined && user . totp_confirmed ) {
2021 debugRoute ( "GET /api/otp/generate - 400 - OTP already enabled" ) ;
2122 return res . status ( 400 ) . send ( 'OTP already enabled.' ) ;
2223 }
@@ -25,7 +26,7 @@ router.get('/generate', auth, async (req, res) => {
2526 let secret = speakeasy . generateSecret ( ) . base32 ;
2627 user . totp_secret = secret ;
2728
28- //TODO save user
29+ await dbAdapter . updateUser ( user ) ;
2930
3031 debugRoute ( "GET /api/otp/generate - 200 - OTP generated" ) ;
3132
@@ -38,8 +39,7 @@ router.post('/verify', auth, async (req, res) => {
3839 return res . status ( 400 ) . send ( "Token required" ) ;
3940 }
4041
41- //TODO get user from database and change me
42- let user = { totp_secret : "someting" } ;
42+ let user = await dbAdapter . getUserById ( req . user . id ) ;
4343
4444 if ( ! user ) {
4545 debugRoute ( "POST /api/otp/verify - 404 - User not found" ) ;
@@ -52,13 +52,11 @@ router.post('/verify', auth, async (req, res) => {
5252 }
5353
5454 let verified = speakeasy . totp . verify ( {
55- secret : user . otp_secret ,
55+ secret : user . totp_secret ,
5656 encoding : 'base32' ,
5757 token : req . body . token ,
5858 window : 1
5959 } ) ;
60- //TODO change me
61- verified = true ;
6260
6361 if ( ! verified ) {
6462 debugRoute ( "POST /api/otp/verify - 400 - Invalid token" ) ;
@@ -67,8 +65,8 @@ router.post('/verify', auth, async (req, res) => {
6765
6866 if ( ! user . totp_confirmed ) {
6967 user . totp_confirmed = true ;
70- user . lastSecurityUpdate = Date . now ( ) ;
71- //TODO save User
68+ user . last_security_change = Date . now ( ) ;
69+ await dbAdapter . updateUser ( user ) ;
7270 }
7371
7472 debugRoute ( "POST /api/otp/verify - 200 - OTP verified" ) ;
@@ -77,30 +75,27 @@ router.post('/verify', auth, async (req, res) => {
7775} ) ;
7876
7977router . post ( '/disable' , auth , async ( req , res ) => {
80- //TODO get user from database
78+ let user = dbAdapter . getUserById ( req . user . id ) ;
8179
82- let user = { } ;
8380 if ( ! user ) {
8481 debugRoute ( "POST /api/otp/disable - 404 - User not found" ) ;
8582 return res . status ( 404 ) . send ( 'User not found.' ) ;
8683 }
8784
88- //TODO change me
89- user . totp_confirmed = true ;
9085 if ( ! user . totp_confirmed ) {
9186 debugRoute ( "POST /api/otp/disable - 400 - OTP not enabled" ) ;
9287 return res . status ( 400 ) . send ( 'OTP not enabled.' ) ;
9388 }
9489
9590 user . totp_secret = undefined ;
9691 user . totp_confirmed = false ;
97- user . lastSecurityUpdate = Date . now ( ) ;
92+ user . last_security_change = Date . now ( ) ;
9893
99- //save user
94+ await dbAdapter . updateUser ( user ) ;
10095
10196 debugRoute ( "POST /api/otp/disable - 200 - OTP disabled" ) ;
10297
103- res . send ( generateAuthToken ( false , false ) ) ;
98+ res . send ( generateAuthToken ( user . id , user . admin , false , false ) ) ;
10499} ) ;
105100
106101module . exports = router ;
0 commit comments