Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (function(module) {
- "use strict";
- var user = module.parent.require('./user.js'),
- db = module.parent.require('../src/database.js'),
- meta = module.parent.require('./meta'),
- passport = module.parent.require('passport'),
- passportOpenID = require('passport-openid').Strategy,
- fs = module.parent.require('fs'),
- path = module.parent.require('path'),
- winston = require('winston'),
- http = module.parent.require('http');
- var constants = Object.freeze({
- 'name': 'OpenID'
- });
- var OpenID = {};
- OpenID.getStrategy = function(strategies) {
- winston.info('[OpenID] getStrategy');
- passport.use(new passportOpenID({
- returnURL: module.parent.require('nconf').get('url') + '/auth/openid/callback',
- realm: module.parent.require('nconf').get('url'),
- profile: true
- }, function(identifier, profile, done) {
- process.nextTick(function () {
- winston.info('[OpenID] auth ', identifier);
- OpenID.login(identifier, profile, function(err, user) {
- if (err) {
- return done(err);
- }
- done(null, user);
- });
- });
- }));
- strategies.push({
- name: 'openid',
- url: '/auth/openid',
- callbackURL: '/auth/openid/callback',
- icon: 'check',
- scope: ''
- });
- winston.info('[OpenID] strategy pushed');
- return strategies;
- };
- OpenID.login = function(identifier, profile, callback) {
- winston.info('[OpenID] login ', identifier);
- OpenID.getUidByOpenID(identifier, function(err, uid) {
- winston.info('[OpenID] getUidByOpenID from login');
- winston.info(err);
- if(err) {
- return callback(err);
- }
- if (uid !== null) {
- // Existing User
- callback(null, {
- uid: uid
- });
- } else {
- // New User
- user.create({username: profile.username}, function(err, uid) {
- winston.info('[OpenID] create user');
- if (err !== null) {
- return callback(err);
- } else {
- // Save information to the user
- winston.info('[OpenID] save user');
- user.setUserField(uid, 'openid', identifier);
- db.setObjectField('openid:uid', identifier, uid);
- callback(null, {
- uid: uid
- });
- }
- });
- }
- });
- }
- OpenID.getUidByOpenID = function(identifier, callback) {
- winston.info('[OpenID] getUidByOpenID');
- db.getObjectField('openid:uid', identifier, function(err, uid) {
- if (err !== null) {
- return callback(err);
- }
- callback(null, uid);
- });
- };
- OpenID.addOpenIDLoginRoute = function(custom_routes, callback) {
- winston.info('[OpenID] adding form route: /auth/openid_form ');
- fs.readFile(path.resolve(__dirname, './static/openid_form.tpl'), function (err, template) {
- custom_routes.routes.push({
- "route": '/auth/openid_form',
- "method": "get",
- "options": function(req, res, callback) {
- callback({
- req: req,
- res: res,
- route: '/auth/openid_form',
- name: constants.name,
- content: template.toString().replace('{csrf}', res.locals.csrf_token)
- });
- }
- });
- callback(null, custom_routes);
- });
- };
- module.exports = OpenID;
- }(module));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement