app.js 3.93 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" : "aaa",
	"name" : "jin",
	"password" : "1234",
	"isAdmin" : true
}
users[1] = {
	"userId" : "asd",
	"name" : "kim",
	"password" : "1234",
	"isAdmin" : false
}

app.put('/login', function (req, res) {
	if(req.session.userId!=null)
	{
		res.send("이미 로그인 상태입니다")
	}
	else
	{
	var users_num=users.length
	console.log(users_num) 
	var checking=0
	while(users_num>0)
	{
		console.log(users[users_num-1].userId)
		if (users[users_num-1].userId==req.body.userId)
		{
			checking=1
			console.log("id ok")
			if(users[users_num-1].password==req.body.password)
			{
				req.session.userId=req.body.userId
				if(users[users_num-1].isAdmin==true)
				{
					req.session.isAdmin=1
					res.send("login as admin");
					console.log("admin ok")
				}
				else
				{
					console.log("guset ok")
					res.send("login as guest");
				}
			}
			else
			{
				console.log("passwd ok")
				res.send("wrong password");
			}
		}
		
	
		users_num-=1
	}
	
	// users 배열에서 찾도록 처리 해야 함
	// admin 여부를 확인하여 체크
	// req.body.id : ID  -> req.body.userId 로 변경했습니다
	// req.body.name : 패스워드  -> req.body.password 로 변경했습니다 
if (checking==0)
{
	res.send("no id")
}
	}	
});
app.put('/logout', function (req, res) {
	// Logout
	if(req.session.userId!=	null&&req.session.userId==req.body.userId)
	{// 세션 유효 여부를 체크하고 세션 Delete
	req.session.userId = null
	req.session.isAdmin= 0
	res.send("LogOut");
	}
	else if(req.session.userId!=null&&req.session.userId!=req.body.userId)
		{
			res.send("로그아웃 body를 다시 한번 해보세요(현재 로그인 된 아이디와 다름")
		}

	else
	{
		res.send("already Logout")
	}

});

var auth = function (req, res, next) {
	// Session Check
	// 어드민 여부 체크 필요
	if (req.session.userId != null)
	{
		if(req.session.isAdmin ==1)
		{
			next();
		}
		else
		{
			res.send("only admin can use this function")
		}
	}
	else
		res.send("Error");

};
app.get('/users/:userId', auth,function (req, res) {
	var users_num_get=users.length// get User Information
	var user_id=String(req.params.userId)
	console.log(user_id)
	var checking2=0
	while(users_num_get>0)
	{
		
		if(users[users_num_get-1].userId==user_id)
		{
			checking2=1
			res.send(users[users_num_get-1]);
			res.end()
		}
		else
		{
			console.log("")
		}
	users_num_get-=1
	
	}
if(checking2==0)
{
 res.send("해당 아이디가 없습니다.")
}
});
app.post('/users',auth, function(req,res)
{
	var num=users.length
	users[num]=
		  {
			"userId" : req.body.userId,
			"name" : req.body.name,
			"password" : req.body.password,
			"isAdmin" : req.body.isAdmin
		  }
	console.log(users[num])	
	res.send("사용자가 생성되었습니다.")  
	

});
// 사용자 추가 시에 admin 여부도 추가해야 함
app.put('/users',auth, function(req,res)
{
	num=users.length
	checking2=0
	while(num>0)
	{
		if(users[num-1].userId==req.body.userId)
		{
			users[num-1]=
		  {
			"userId" : req.body.userId,
			"name" : req.body.name,
			"password" : req.body.password,
			"isAdmin" : req.body.isAdmin
		  }
			console.log(users[num-1])	
			res.send("사용자 정보가 변경되었습니다.")
			checking2=1  
		}
		num-=1
}
if (checking2==0)
{
	res.send("해당 사용자가 없습니다")
}

});
app.delete('/users/:userId',auth, function(req,res)
{
	var id_check=req.params.userId
	num=users.length
	checking2=0
	while(num>0)
	{
		if(users[num-1].userId==id_check)
		{
			users.splice(num-1,1)
			checking2=1
			res.send("삭제가 완료되었습니다.")
		}
		num-=1
}
if (checking2==0)
{
	res.send("해당 사용자가 없습니다")
}
});

var server = app.listen(80);