1
1
var express = require ( "express" ) ;
2
+ const bcrypt = require ( 'bcrypt' )
2
3
var router = express . Router ( ) ;
3
4
const { User } = require ( "../database/models" ) ;
4
5
@@ -21,14 +22,21 @@ router.get("/", async (req, res, next) => {
21
22
/* GET a user with specific credentials. */
22
23
router . get ( "/:username/:password" , async ( req , res , next ) => {
23
24
try {
25
+ // Getting user from database by username
24
26
const user = await User . findOne ( {
25
27
where : {
26
28
username : req . params . username ,
27
- password : req . params . password ,
28
29
} ,
29
30
} ) ;
30
- console . log ( user ) ;
31
- res . status ( 200 ) . json ( user ) ;
31
+
32
+ // Verifying password matches hashed
33
+ bcrypt . compare ( req . params . password , user . password , function ( err , response ) {
34
+ if ( response ) {
35
+ res . status ( 200 ) . json ( user ) ;
36
+ } else {
37
+ res . status ( 401 ) . json ( ) ;
38
+ }
39
+ } )
32
40
} catch ( err ) {
33
41
next ( err ) ;
34
42
}
@@ -39,24 +47,30 @@ router.get("/:username/:password", async (req, res, next) => {
39
47
router . post ( "/" , async ( req , res , next ) => {
40
48
// Take the form data from the request body
41
49
const { firstName, lastName, email, username, password } = req . body ;
42
- // Create a user object
43
- const userObj = {
44
- firstName : firstName ,
45
- lastName : lastName ,
46
- email : email ,
47
- username : username ,
48
- password : password ,
49
- } ;
50
50
51
- try {
52
- // Create a new user on the database
53
- const newUser = await User . create ( userObj ) ;
54
- // The database would return a user
55
- // send that user as a json to the client
56
- res . status ( 201 ) . send ( newUser ) ;
57
- } catch ( err ) {
58
- next ( err ) ;
59
- }
51
+ // Hashing password
52
+ bcrypt . hash ( password , 10 , async function ( err , hash ) {
53
+ if ( err ) next ( err ) ;
54
+
55
+ // Create a user object
56
+ const userObj = {
57
+ firstName : firstName ,
58
+ lastName : lastName ,
59
+ email : email ,
60
+ username : username ,
61
+ password : hash ,
62
+ } ;
63
+
64
+ try {
65
+ // Create a new user on the database
66
+ const newUser = await User . create ( userObj ) ;
67
+ // The database would return a user
68
+ // send that user as a json to the client
69
+ res . status ( 201 ) . send ( newUser ) ;
70
+ } catch ( err ) {
71
+ next ( err ) ;
72
+ }
73
+ } ) ;
60
74
} ) ;
61
75
62
76
module . exports = router ;
0 commit comments