app.js 3.02 KB
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var session = require('express-session')

app.use(session({
    secret: 'keyboard cat',
    cookie: {
        maxAge: 60000
    }
}))
app.use(bodyParser.urlencoded({
    extended: false
}));
app.use(bodyParser.json());
var users = new Array();

users[0] = {
    "userId": 0,
    "name": "jin",
    "password": "abc",
    "isAdmin": true
}

app.put('/login', function (req, res) {
    // users 배열에서 찾도록 처리 해야 함
    // admin 여부를 확인하여 체크
    // req.body.id : ID
    // req.body.name : 패스워드
    const user = req.body;
    for (var i = 0; i < users.length; i++) {
        if (users[i].userId == user.userId && users[i].password == user.password) {
            req.session.userId = users[i].userId;
            req.session.isAdmin = users[i].isAdmin;
            res.send("Login");
            return;
        }
    }

    res.send("Login Failed");
    return;

});

app.put('/logout', function (req, res) {
    // Logout
    // 세션 유효 여부를 체크하고 세션 Delete

    if (!users[req.session.userId]) {
        res.send("Error!");
        return ;
    }

    req.session.userId = null;
    req.session.isAdmin = null;
    res.send("LogOut");
    return ;
});


var auth = function (req, res, next) {
    // Session Check
    // 어드민 여부 체크 필요
    console.log(req.session.userId, req.session.isAdmin);
    if (req.session.userId != null && req.session.isAdmin == true)
        next();
    else
        res.send("Not Admin");

    return ;
};

app.get('/users/:userId', auth, function (req, res) {
    // get User Information
    const user = req.params;
    for (var i = 0; i < users.length; i++) {
        if (users[i].userId == user.userId) {
            res.send(users[i]);
            return ;
        }
    }
    
    res.send("Not exist user");
    return ;
});

app.put('/users', auth, function (req, res) {
    const user = req.body;
    for (var i = 0; i < users.length; i++) {
        if (users[i].userId == user.userId) {
            users[i] = {
                "userId": user.userId,
                "name": user.name,
                "password": user.password,
                "isAdmin": user.isAdmin
            }
            res.send("Updated");
            return ;
        }
    }
    
    res.send("Not exist user");
    return ;
});

app.post('/users', auth, function (req, res) {
    user = req.body;
    users[user.userId] = {
        "userId": user.userId,
        "name": user.name,
        "password": user.password,
        "isAdmin": user.isAdmin
    }
    res.send("Added");
});

app.delete('/users/:userId', auth, function (req, res) {
    const user = req.params;
    for (var i = 0; i < users.length; i++) {
        if (users[i].userId == user.userId) {
            users.splice(i,1);
            res.send("Deleted");
            return ;
        }
    }
    res.send("Not exist user");
    return ;
});

// 사용자 추가 시에 admin 여부도 추가해야 함
var server = app.listen(80);