diff --git a/library.js b/library.js index d334d46..abc31eb 100644 --- a/library.js +++ b/library.js @@ -23,15 +23,15 @@ var samlObj; if (meta.config['sso:saml:idpentrypoint'] && meta.config['sso:saml:callbackpath']&& meta.config["sso:saml:metadata"] && meta.config["sso:saml:issuer"]) { - + samlObj = new passportSAML({ path: meta.config['sso:saml:callbackpath'], entryPoint: meta.config['sso:saml:idpentrypoint'], - issuer: 'passport-saml', + issuer: meta.config['sso:saml:issuer'], callbackUrl: nconf.get('url') + meta.config['sso:saml:callbackpath'] }, function(profile, done) { - + var user = { nameID: profile.nameID, nameIDFormat: profile.nameIDFormat, @@ -40,10 +40,10 @@ mail: profile.mail, eduPersonAffiliation: profile.eduPersonAffiliation, email: profile.email, - username: profile.displayName + username: profile.eduPersonNickname }; - SAML.login(user.nameID,user.username,function(err, user) { + SAML.login(user,function(err, user) { if (err) { return done(err); } @@ -81,9 +81,18 @@ }); } - app.post(meta.config['sso:saml:callbackpath'], - passport.authenticate('saml', { successRedirect: '/',failureRedirect: '/', failureFlash: true }) + passport.authenticate('saml'), + function(req, res, next){ + if (meta.config['sso:saml:loginsuccessredirecturl']){ + res.redirect(meta.config['sso:saml:loginsuccessredirecturl']); + } + else{ + res.redirect("/"); + } + + } + ); } @@ -108,9 +117,9 @@ callback(null, strategies); }; - SAML.login = function(samlid,username, callback) { + SAML.login = function(userdata, callback) { - SAML.getUidBySAMLId(samlid, function(err, uid) { + SAML.getUidBySAMLId(userdata.username, function(err, uid) { if(err) { return callback(err); } @@ -122,14 +131,24 @@ }); } else { + console.log({ + username: userdata.username, + email: userdata.email, + fullname : userdata.cn + " " + userdata.sn + + }); // New User - user.create({username: username}, function(err, uid) { + user.create({ + username: userdata.username, + email: userdata.email, + fullname : userdata.cn + " " + userdata.sn + + }, function(err, uid) { if(err) { return callback(err); } - // Save twitter-specific information to the user - user.setUserField(uid, 'samlid', samlid); - db.setObjectField('samlid:uid', samlid, uid); + user.setUserField(uid, 'samlid', userdata.username); + db.setObjectField('samlid:uid', userdata.username, uid); callback(null, { uid: uid diff --git a/package.json b/package.json index 29743fc..6a2e8d5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "nodebb-plugin-sso-saml", - "version": "0.0.1", + "version": "0.0.3", "description": "NodeBB SAML SSO", "main": "library.js", "repository": { @@ -30,5 +30,5 @@ "passport-saml": "~0.5.3" }, "homepage": "https://github.com/GeographicaGS/nodebb-plugin-sso-saml.git", - "_id": "nodebb-plugin-sso-saml@0.0.1" + "_id": "nodebb-plugin-sso-saml@0.0.2" } diff --git a/templates/admin/plugins/sso-saml.tpl b/templates/admin/plugins/sso-saml.tpl index cb679f9..9f2e0fe 100644 --- a/templates/admin/plugins/sso-saml.tpl +++ b/templates/admin/plugins/sso-saml.tpl @@ -14,6 +14,9 @@ +
+ +