routing.js 3.37 KB
module.exports = function(app, Users)
{
    var passport = require('passport');

    app.get('/', function(req, res)
    {
        // 로그인 중이면 메인페이지로
        if(req.isAuthenticated())
            res.redirect("/main");
        // 로그인 중이 아니라면 인덱스페이지
        else
        {
            res.render("index");
            console.log("The index page!");
        }
    });
    
    // 로그인 수행 - POST
    app.post('/login', passport.authenticate('login',
    {
        successRedirect: '/main',
        failureRedirect: '/'
        //failureFlash : true
    }));

    // 로그아웃 수행
    app.get('/logout', function(req, res)
    {
        req.logout();
        res.redirect('/');
    })

    
    // Join
    app.route('/join')
    // 처음 Join화면 랜더 - GET
    .get(function(req, res)
    {
        res.render("join")
    })
    // 실제 Join 수행 - POST
    .post(passport.authenticate('join',
    {
        successRedirect: '/main',
        failureRedirect: '/',
        //failureFlash : true
    }));


    // 메인화면 - 로그인 후 기본 검색화면으로
    app.get('/main', function(req, res)
    {
        // 로그인 중이라면
        if(req.isAuthenticated())
        {
            console.log("Logged in page");
            res.render("main");
        }
        // 로그인 중이 아니라면
        else res.redirect("/");

    });

    // 마이페이지 - 로그인 필수
    app.get('/mypage',function(req, res)
    {
        // 로그인 중이라면
        if(req.isAuthenticated())
        {
            // find를 쓰면, 다행으로 반환되기 때문에 결과의 첫번째 요소를 지정하고 해야함
            // 그래서 하나만을 대상으로 할 때는 보통 findOne을 사용
            // mongoose로 디비 find는 콜백으로 정의해야함.
            Users.findOne({id: req.user}, function(err, user_info)
            {
                console.log("mypage");
                res.render("mypage",
                {
                    id: user_info.id,
                    name: user_info.name
                });    
            });
            
        }
        // 로그인 중이 아니라면
        else res.redirect("/");
    });

    
}





/*
(구)직접 DB에 저장하기
.post(function(req, res) // 실제 Join 수행 - POST
{
    // user정보 입력
    var user = new Users();
    user.id = req.body.id;
    user.pwd = req.body.pwd;
    user.name = req.body.name;

    // DB저장
    user.save(function(err)
    {
        if(err)
        {
            console.log(err);
            res.send("Error!")
        }
        else
        {
            console.log("Join Success");
            res.redirect('/');
        }
    });   
});
*/

/*
(구)직접 로그인 하기
app.post('/login', function(req, res)
{
    Users.find({id: req.body.id, pwd: req.body.pwd},{_id: 1}, function(err, user)
    {
        if(err)
        {
            console.log("Error!");
            res.send("Error!")
        }

        // 매칭정보 없음 - 로그인 실패
        if(user.length==0)
        {
            console.log("Login failed!")
            res.send("Login_failed");
        }
        
        // 매칭정보 있음 - 로그인 성공
        else
        {
            console.log("Login Success!")
            res.redirect("/main");
            // main으로 이동
        }
    });
});
*/