@@ -7,18 +7,14 @@ async function hashPassword(pass) {
77 return hash . toString ( 'base64' ) ;
88}
99
10- function updatePassword ( user , next ) {
10+ async function updatePassword ( password ) {
1111 // "binary to ASCII" aka base64
1212 // btoa('scrypt') = c2NyeXB0
13- if ( user . password && user . password . length > 1 && user . password . substr ( 0 , 8 ) !== 'c2NyeXB0' ) {
14- return hashPassword ( user . password ) . then ( ( hash ) => {
15- user . password = hash ;
16-
17- return next ( ) ;
18- } ) ;
13+ if ( password && password . length > 1 && password . substr ( 0 , 8 ) !== 'c2NyeXB0' ) {
14+ password = await hashPassword ( password ) ;
1915 }
2016
21- return next ( ) ;
17+ return password ;
2218}
2319
2420module . exports = {
@@ -68,7 +64,7 @@ module.exports = {
6864 columnType : 'varchar(191)' ,
6965 // see: https://sailsjs.com/documentation/reference/waterline-orm/queries/decrypt
7066 // You will need to "decrypt" the user object before you can check if the password is valid.
71- encrypt : true
67+ // encrypt: true // currently, does not work as intended, as password is encrypted before we can hash it
7268 } ,
7369
7470 verificationKey : {
@@ -118,7 +114,6 @@ module.exports = {
118114 return _ . omit ( this , [
119115 'password' ,
120116 'verificationKey' ,
121- 'email' ,
122117 'deletedAt' ,
123118 'deletedBy'
124119 ] ) ;
@@ -134,26 +129,34 @@ module.exports = {
134129 return scrypt . verify ( hashBuffer , raw ) . then ( ( isAMatch ) => isAMatch ) ;
135130 } ,
136131
137- beforeCreate : ( user , next ) => {
132+ beforeCreate : async function ( user , next ) {
138133 const email = user . email . toLowerCase ( ) . trim ( ) ;
139134
135+ console . log ( user . password ) ;
136+
140137 user . email = email ;
141138 user . avatar = 'https://www.gravatar.com/avatar/' + md5 ( email ) ;
142- user . firstName = user . firstName . charAt ( 0 ) . toUpperCase ( ) + user . firstName . slice ( 1 ) . trim ( ) ;
143- user . lastName = user . lastName . charAt ( 0 ) . toUpperCase ( ) + user . lastName . slice ( 1 ) . trim ( ) ;
139+ user . firstName = user . firstName . trim ( ) . charAt ( 0 ) . toUpperCase ( ) + user . firstName . slice ( 1 ) . trim ( ) ;
140+ user . lastName = user . lastName . trim ( ) . charAt ( 0 ) . toUpperCase ( ) + user . lastName . slice ( 1 ) . trim ( ) ;
144141 user . id = sails . helpers . generateUuid ( ) ;
145142
146- return updatePassword ( user , next ) ;
143+ user . password = await updatePassword ( user . password ) ;
144+
145+ return next ( ) ;
147146 } ,
148147
149- beforeUpdate : ( user , next ) => {
148+ beforeUpdate : async function ( user , next ) {
150149 const email = user . email . toLowerCase ( ) . trim ( ) ;
151150
152151 user . email = email ;
153152 user . avatar = 'https://www.gravatar.com/avatar/' + md5 ( email ) ;
154- user . firstName = user . firstName . charAt ( 0 ) . toUpperCase ( ) + user . firstName . slice ( 1 ) . trim ( ) ;
155- user . lastName = user . lastName . charAt ( 0 ) . toUpperCase ( ) + user . lastName . slice ( 1 ) . trim ( ) ;
153+ user . firstName = user . firstName . trim ( ) . charAt ( 0 ) . toUpperCase ( ) + user . firstName . slice ( 1 ) . trim ( ) ;
154+ user . lastName = user . lastName . trim ( ) . charAt ( 0 ) . toUpperCase ( ) + user . lastName . slice ( 1 ) . trim ( ) ;
155+
156+ if ( user . password ) {
157+ user . password = await updatePassword ( user . password ) ;
158+ }
156159
157- return updatePassword ( user , next ) ;
160+ return next ( ) ;
158161 }
159162} ;
0 commit comments