@@ -29,6 +29,7 @@ module.exports = function (options) {
29
29
seneca . add ( { role : plugin , cmd : 'load_dojo_admins_for_user' } , cmd_load_dojo_admins_for_user ) ;
30
30
seneca . add ( { role : plugin , cmd : 'record_login' } , cmd_record_login ) ;
31
31
seneca . add ( { role : 'user' , cmd : 'login' } , cmd_login ) ;
32
+ seneca . add ( { role : 'user' , cmd : 'cdf_login' } , cmd_cdf_login ) ;
32
33
seneca . add ( { role : plugin , cmd : 'load_prev_founder' } , cmd_load_prev_founder ) ;
33
34
seneca . add ( { role : plugin , cmd : 'kpi_number_of_youths_registered' } , cmd_kpi_number_of_youths_registered ) ;
34
35
seneca . add ( { role : plugin , cmd : 'kpi_number_of_champions_and_mentors_registered' } , cmd_kpi_number_of_champions_and_mentors_registered ) ;
@@ -527,6 +528,40 @@ module.exports = function (options) {
527
528
} ) ;
528
529
}
529
530
531
+ function cmd_cdf_login ( args , done ) {
532
+ async . waterfall ( [
533
+ login ,
534
+ verifyPermissions ,
535
+ recordLogin
536
+ ] , function ( err , loginResponse ) {
537
+ if ( err ) return done ( err ) ;
538
+ return done ( null , loginResponse ) ;
539
+ } ) ;
540
+
541
+ function login ( next ) {
542
+ seneca . act ( { role : 'user' , cmd : 'login' , email : args . email , password : args . password } , function ( err , loginResponse ) {
543
+ if ( err ) return done ( err ) ;
544
+ if ( ! loginResponse . ok || ! loginResponse . user ) return done ( null , loginResponse ) ;
545
+ return next ( null , loginResponse ) ;
546
+ } ) ;
547
+ }
548
+
549
+ function verifyPermissions ( loginResponse , next ) {
550
+ if ( loginResponse . user . roles . indexOf ( 'cdf-admin' ) > - 1 ) {
551
+ return next ( null , loginResponse ) ;
552
+ } else {
553
+ return done ( null , { ok : false , why : 'user not allowed' } ) ;
554
+ }
555
+ }
556
+
557
+ function recordLogin ( loginResponse , next ) {
558
+ seneca . act ( { role : plugin , cmd : 'record_login' } , { data : loginResponse } , function ( err , recorded ) {
559
+ if ( err ) return done ( err ) ;
560
+ return next ( null , loginResponse ) ;
561
+ } ) ;
562
+ }
563
+ }
564
+
530
565
function cmd_kpi_number_of_youths_registered ( args , done ) {
531
566
var seneca = this ;
532
567
var date18YearsAgo = moment ( ) . subtract ( 18 , 'years' ) ;
0 commit comments