var router = express.Router();
var http = require('http');
-var core = require('./ticcore.js');
-var client = require('./mariadb.js');
+var core = require('./ticcore');
+var client = require('./mariadb');
+var session = require('./session');
var config = require('../config.json');
var JL = require('jsnlog').JL;
* @TYPE POST
*/
router.post('/session', function (req, res) {
- if (req.session) {
- // check email and password
- if (req.body.email) {
- client.getUser({
- email: req.body.email,
- password: req.body.password
- }, function success(user) {
- if (user.data === null) {
- // check email
- client.hasUser({
- email: req.body.email
- }, function success(result) {
- // email validation
- if (result[0].count !== '0') {
- logger.info('invalid password: ' + req.body.password);
- res.json({
- result: 'fail',
- reason: 'password'
- });
- } else {
- logger.info('invalid email:' + req.body.email);
- res.json({
- result: 'fail',
- reason: 'email'
- });
- }
- }, function error(err) {
- logger.error(err);
- });
- } else {
- // save email in session
- req.session.email = req.body.email;
- req.session.group = user.data.user_group;
- logger.info('login success: ' + req.body.email + ' , ' + user.data.user_group);
- res.json({
- result: 'success',
- data: user.data
- });
- }
- }, function error(err) {
- logger.error(err);
- });
- }
- } else {
- logger.info('invalid email:' + req.body.email);
- res.json({
- result: 'fail',
- reason: 'email'
- });
- }
+ session.postSession(req, res);
});
/**
* @TYPE GET
*/
router.get('/session', function (req, res) {
- if (req.session && req.session.email) {
- res.json({
- status: 'connected'
- });
- } else {
- res.json({
- status: 'unknown'
- });
- }
+ session.getSession(req, res);
});
/**
* @TYPE DELETE
*/
router.delete('/session', function (req, res) {
- if (req.session.email) {
- req.session.destroy();
- logger.info('logout success');
- res.json({
- result: 'success'
- });
- } else {
- logger.info('logout fail');
- res.json({
- result: 'fail'
- });
- }
+ session.deleteSession(req, res);
});
return router;
--- /dev/null
+'use strict';
+
+var mariadb = require('./mariadb');
+var JL = require('jsnlog').JL;
+
+var logger = JL('session.js');
+
+function Session() {};
+
+var STATUS = {
+ FAIL : 'fail',
+ SUCCESS : 'success',
+ CONNECTED : 'connected',
+ UNKNOWN: 'unknown'
+}
+
+Session.prototype.postSession = function(req, res) {
+ if (req.session) {
+ // check email and password
+ if (req.body.email) {
+ mariadb.getUser({
+ email: req.body.email,
+ password: req.body.password
+ }, function success(user) {
+ if (user.data === null) {
+ // check email
+ mariadb.hasUser({
+ email: req.body.email
+ }, function success(result) {
+ // email validation
+ if (result[0].count !== '0') {
+ logger.info('invalid password: ' + req.body.password);
+ res.json({
+ result: STATUS.FAIL,
+ reason: 'password'
+ });
+ } else {
+ logger.info('invalid email:' + req.body.email);
+ res.json({
+ result: STATUS.FAIL,
+ reason: 'email'
+ });
+ }
+ }, function error(err) {
+ logger.error(err);
+ });
+ } else {
+ // save email in session
+ req.session.email = req.body.email;
+ req.session.group = user.data.user_group;
+ logger.info('login success: ' + req.body.email + ' , ' + user.data.user_group);
+ res.json({
+ result: STATUS.SUCCESS,
+ data: user.data
+ });
+ }
+ }, function error(err) {
+ logger.error(err);
+ });
+ }
+ } else {
+ logger.info('invalid email:' + req.body.email);
+ res.json({
+ result: STATUS.FAIL,
+ reason: 'email'
+ });
+ }
+}
+
+Session.prototype.getSession = function(req, res) {
+ if (req.session && req.session.email) {
+ res.json({
+ status: STATUS.CONNECTED,
+ group: session.group
+ });
+ } else {
+ res.json({
+ status: STATUS.UNKNOWN,
+ group: 'GUEST'
+ });
+ }
+}
+
+Session.prototype.deleteSession = function(req, res) {
+ if (req.session.email) {
+ req.session.destroy();
+ logger.info('logout success');
+ res.json({
+ result: STATUS.SUCCESS
+ });
+ } else {
+ logger.info('logout fail');
+ res.json({
+ result: STATUS.FAIL
+ });
+ }
+}
+
+module.exports = new Session();