@@ -7,6 +7,8 @@ var moment = require('moment');
77var pg = require ( 'pg' ) ;
88var crypto = require ( 'crypto' ) ;
99
10+ var profileUtils = require ( './lib/profile-utils' ) ;
11+
1012module . exports = function ( options ) {
1113 var seneca = this ;
1214 var plugin = 'cd-users' ;
@@ -30,6 +32,7 @@ module.exports = function (options) {
3032 seneca . add ( { role : plugin , cmd : 'load_champions_for_user' } , cmd_load_champions_for_user ) ;
3133 seneca . add ( { role : plugin , cmd : 'load_dojo_admins_for_user' } , cmd_load_dojo_admins_for_user ) ;
3234 seneca . add ( { role : plugin , cmd : 'record_login' } , cmd_record_login ) ;
35+ seneca . add ( { role : plugin , cmd : 'update_profile_password' } , cmd_update_profile_password ) ;
3336 seneca . add ( { role : 'user' , cmd : 'login' } , cmd_login ) ;
3437 seneca . add ( { role : 'user' , cmd : 'cdf_login' } , cmd_cdf_login ) ;
3538 seneca . add ( { role : plugin , cmd : 'load_prev_founder' } , cmd_load_prev_founder ) ;
@@ -65,6 +68,13 @@ module.exports = function (options) {
6568 } ) ;
6669 }
6770
71+ function cmd_update_profile_password ( args , done ) {
72+ profileUtils . encodePassword ( args . password ) . then ( ( profileHash ) => {
73+ const updatedUser = Object . assign ( { } , args . user , { profilePassword : profileHash } ) ;
74+ seneca . act ( { role : plugin , cmd : 'update' } , { id : args . user . id , user : updatedUser } , done ) ;
75+ } ) ;
76+ }
77+
6878 function cmd_load ( args , done ) {
6979 var seneca = this ;
7080 var id = args . id ;
@@ -130,6 +140,13 @@ module.exports = function (options) {
130140 }
131141 } ;
132142
143+ function addProfilePassword ( data , done ) {
144+ profileUtils . encodePassword ( user . password ) . then ( ( profileHash ) => {
145+ user . profilePassword = profileHash ;
146+ done ( null , data ) ;
147+ } ) ;
148+ }
149+
133150 function verifyCaptcha ( done ) {
134151 request . post ( postData , function ( err , response , body ) {
135152 if ( err ) {
@@ -221,6 +238,7 @@ module.exports = function (options) {
221238 async . waterfall ( [
222239 verifyCaptcha ,
223240 checkPermissions ,
241+ addProfilePassword ,
224242 registerUser ,
225243 sendWelcomeEmail
226244 ] , function ( err , results ) {
@@ -428,6 +446,8 @@ module.exports = function (options) {
428446 out . reset = reset ;
429447 if ( ! out . ok ) { return done ( null , out ) ; }
430448
449+ seneca . act ( { role : plugin , cmd : 'update_profile_password' } , { password : args . password , user : user } ) ;
450+
431451 reset . active = false ;
432452 reset . save$ ( function ( err , reset ) {
433453 if ( err ) { return done ( err ) ; }
@@ -503,17 +523,28 @@ module.exports = function (options) {
503523 if ( err ) return done ( err ) ;
504524 if ( ! loginResponse . ok || ! loginResponse . user ) return done ( null , loginResponse ) ;
505525
506- async . series ( [
526+ const handlers = [
507527 verifyPermissions ,
508528 recordLogin
509- ] , function ( err ) {
529+ ] ;
530+
531+ if ( ! loginResponse . user . profilePassword ) {
532+ handlers . push ( updateProfilePassword ) ;
533+ }
534+
535+ async . series ( handlers , function ( err ) {
510536 if ( err ) {
511537 return done ( err ) ;
512538 }
513539
514540 return done ( null , loginResponse ) ;
515541 } ) ;
516542
543+ function updateProfilePassword ( next ) {
544+ seneca . act ( { role : plugin , cmd : 'update_profile_password' } , { password : args . password , user : loginResponse . user } ) ;
545+ next ( ) ;
546+ }
547+
517548 function verifyPermissions ( next ) {
518549 var userRole ;
519550
0 commit comments