Skip to content
This repository was archived by the owner on Dec 14, 2023. It is now read-only.

Commit 3522564

Browse files
WardormeurDanielBrierton
authored andcommitted
Enhancement/cdf login (#221)
* Add support for cdf-only login * Refine error message for cdf-login * remove extra console
1 parent de4cc62 commit 3522564

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

users.js

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ module.exports = function (options) {
2929
seneca.add({role: plugin, cmd: 'load_dojo_admins_for_user'}, cmd_load_dojo_admins_for_user);
3030
seneca.add({role: plugin, cmd: 'record_login'}, cmd_record_login);
3131
seneca.add({role: 'user', cmd: 'login'}, cmd_login);
32+
seneca.add({role: 'user', cmd: 'cdf_login'}, cmd_cdf_login);
3233
seneca.add({role: plugin, cmd: 'load_prev_founder'}, cmd_load_prev_founder);
3334
seneca.add({role: plugin, cmd: 'kpi_number_of_youths_registered'}, cmd_kpi_number_of_youths_registered);
3435
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) {
527528
});
528529
}
529530

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+
530565
function cmd_kpi_number_of_youths_registered (args, done) {
531566
var seneca = this;
532567
var date18YearsAgo = moment().subtract(18, 'years');

0 commit comments

Comments
 (0)