constar/infor-you-mation

View on GitHub
routes/user.js

Summary

Maintainability
A
0 mins
Test Coverage
var express = require('express');
var router = express.Router();

/* GET users listing. */
router.get('/', function(req, res, next) {
    res.send('respond with a resource');
});

router.post('/register', function(req, res) {
    var username = req.body.username;
    var password = req.body.password;
    if (!username) {
        res.send({'error': 'username not found'});
        return;
    }
    if (!password) {
        res.send({'error': 'password not found'});
        return;
    }
    
    client.get('user:' + username + ':id', function(err, reply) {
        if (err) {
            res.send({'error': err});
            return;
        }
        if (reply) {
            res.send({'error': 'username: ' + username + " already exists", 'success': false});
            return;
        } 
        client.incr('user:nextid', function(err, newid) {
            if (err) {
                res.send({'error': err, 'success': false});
                return;
            }
            client.mset(['user:' + newid + ':username', 
                username,
                'user:' + newid + ':password',
                password,
                'user:' + username + ':id',
                newid], 
                function(err) {
                    if (err) {
                        res.send({'error': err, 'success': false});
                        return;
                    }
                    res.cookie('SESSIONID', req.sessionID, req.session.cookie);
                    res.send({'msg': 'register ok', 'success': true});
            });
        });
    });
});

router.post('/login', function(req, res) {
    var username = req.body.username;
    var password = req.body.password;
    client.get('user:' + username + ':id', function(err, id) {
        if (err) {
            res.send({'error': err});
            return;
        }
        if (!id) {
            res.send({'error': 'username: ' + username + ' not found'});
            return;
        }
        client.get('user:' + id + ':password', function(err, reply) {
            if (password == reply) {
                req.session.regenerate(function() {
                    req.session.userid = id;
                    req.session.save();
                    res.send({'msg': 'login ok', 'success': true});
                });
            } else {
                res.send({'error': 'password error', 'success': false});
            }
        });
    });
});

router.post('/logout', function(req, res) {
    res.clearCookie('connect.sid');
    req.session.destroy(function() {
        res.send({'success': true});
    });
});

module.exports = router;