periodicjs.ext.login
Version:
An authentication extension for periodicjs that uses passport to authenticate user sessions.
149 lines (121 loc) • 6.28 kB
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>