[TIC-Web] separate session module from router 27/117727/1
authorChangHyun Lee <leechwin.lee@samsung.com>
Tue, 7 Mar 2017 08:10:18 +0000 (17:10 +0900)
committerChangHyun Lee <leechwin.lee@samsung.com>
Tue, 7 Mar 2017 08:10:18 +0000 (17:10 +0900)
- separate session module

Change-Id: Ic0a141e34e280c318263c6e5111cfba324a2dfcd
Signed-off-by: ChangHyun Lee <leechwin.lee@samsung.com>
controller/router.js
controller/session.js [new file with mode: 0644]

index 36fc8d1..4c5eaf4 100644 (file)
@@ -2,8 +2,9 @@ var express = require('express');
 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;
@@ -152,56 +153,7 @@ var init = function (serv) {
      * @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);
     });
 
     /**
@@ -210,15 +162,7 @@ var init = function (serv) {
      * @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);
     });
 
     /**
@@ -227,18 +171,7 @@ var init = function (serv) {
      * @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;
diff --git a/controller/session.js b/controller/session.js
new file mode 100644 (file)
index 0000000..fb84a83
--- /dev/null
@@ -0,0 +1,99 @@
+'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();