UNPKG

periodicjs.ext.login

Version:

An authentication extension for periodicjs that uses passport to authenticate user sessions.

149 lines (121 loc) 6.28 kB
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>JSDoc: Source: index.js</title> <script src="scripts/prettify/prettify.js"> </script> <script src="scripts/prettify/lang-css.js"> </script> <!--[if lt IE 9]> <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> <link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css"> <link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css"> </head> <body> <div id="main"> <h1 class="page-title">Source: index.js</h1> <section> <article> <pre class="prettyprint source"><code>'use strict'; var path = require('path'), fs = require('fs-extra'), extend = require('utils-merge'), loginExtSettings, appenvironment, settingJSON, Extensions = require('periodicjs.core.extensions'), CoreExtension = new Extensions({ extensionFilePath: path.resolve(process.cwd(), './content/config/extensions.json') }), loginExtSettingsFile = path.resolve(CoreExtension.getconfigdir({ extname: 'periodicjs.ext.login' }), './settings.json'), defaultExtSettings = require('./controller/default_config'); /** * An authentication extension that uses passport to authenticate user sessions. * @{@link https://github.com/typesettin/periodicjs.ext.login} * @author Yaw Joseph Etse * @copyright Copyright (c) 2014 Typesettin. All rights reserved. * @license MIT * @exports periodicjs.ext.login * @requires module:passport * @param {object} periodic variable injection of resources from current periodic instance */ module.exports = function (periodic) { // periodic = express,app,logger,config,db,mongoose //console.log('before defaultExtSettings', defaultExtSettings); appenvironment = periodic.settings.application.environment; settingJSON = fs.readJsonSync(loginExtSettingsFile); //console.log('before settingJSON[appenvironment]', settingJSON[appenvironment]); loginExtSettings = (settingJSON[appenvironment]) ? extend(defaultExtSettings, settingJSON[appenvironment]) : defaultExtSettings; //console.log('after defaultExtSettings', defaultExtSettings); //console.log('after settingJSON[appenvironment]', settingJSON[appenvironment]); periodic.app.controller.extension.login = { loginExtSettings: loginExtSettings }; periodic.app.controller.extension.login.auth = require('./controller/auth')(periodic); periodic.app.controller.extension.login.user = require('./controller/user')(periodic); var passport = periodic.app.controller.extension.login.auth.passport, authRouter = periodic.express.Router(), authController = periodic.app.controller.extension.login.auth, userRouter = periodic.express.Router(), userController = periodic.app.controller.extension.login.user, socialPassportController = require('./controller/social_controller')(periodic, { passport: passport, loginExtSettings: periodic.app.controller.extension.login.auth.loginExtSettings }), tokenController = require('./controller/token_controller')(periodic, { passport: passport, loginExtSettings: periodic.app.controller.extension.login.auth.loginExtSettings }); periodic.app.controller.extension.login.token = tokenController; periodic.app.controller.extension.login.social = socialPassportController; //tokenRouter = periodic.express.Router(), //tokenController = periodic.app.controller.extension.login.token //socialRouter = periodic.express.Router(), //socialController = periodic.app.controller.extension.login.social, authRouter.get('*', global.CoreCache.disableCache); authRouter.post('*', global.CoreCache.disableCache); userRouter.get('*', global.CoreCache.disableCache); userRouter.post('*', global.CoreCache.disableCache); authRouter.get('/login', userController.login); authRouter.post('/login', authController.login); authRouter.get('/logout', authController.logout); //token controller & router authRouter.get('/forgot', userController.forgot); authRouter.post('/forgot', tokenController.forgot); authRouter.get('/reset/:token', tokenController.get_token, tokenController.reset); authRouter.post('/reset/:token', tokenController.get_token, tokenController.token); //social controller & router authRouter.get('/facebook', socialPassportController.facebook); authRouter.get('/facebook/callback', socialPassportController.facebookcallback); authRouter.get('/instagram', socialPassportController.instagram); authRouter.get('/instagram/callback', socialPassportController.instagramcallback); authRouter.get('/twitter', socialPassportController.twitter); authRouter.get('/twitter/callback', socialPassportController.twittercallback); userRouter.get('/new|/register', userController.newuser); userRouter.get('/finishregistration', userController.finishregistration); userRouter.post('/new', userController.create); userRouter.post('/finishregistration', userController.updateuserregistration); periodic.app.use(authController.rememberme); periodic.app.use(passport.initialize()); periodic.app.use(passport.session()); periodic.app.use('/auth', authRouter); periodic.app.use('/auth/user', userRouter); return periodic; }; </code></pre> </article> </section> </div> <nav> <h2><a href="index.html">Index</a></h2><h3>Modules</h3><ul><li><a href="module-authController.html">authController</a></li><li><a href="module-userloginController.html">userloginController</a></li><li><a href="login.html">login</a></li></ul><h3>Global</h3><ul><li><a href="global.html#facebook">facebook</a></li><li><a href="global.html#facebookcallback">facebookcallback</a></li><li><a href="global.html#instagram">instagram</a></li><li><a href="global.html#instagramcallback">instagramcallback</a></li><li><a href="global.html#saveUser">saveUser</a></li><li><a href="global.html#twitter">twitter</a></li><li><a href="global.html#twittercallback">twittercallback</a></li><li><a href="global.html#usePassport">usePassport</a></li></ul> </nav> <br clear="both"> <footer> Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Thu Jan 29 2015 21:18:44 GMT-0500 (EST) </footer> <script> prettyPrint(); </script> <script src="scripts/linenumber.js"> </script> </body> </html>