loggedIn 상태에 따라
page에 접근여부를 결정하게 하는 middleWare
import multer from 'multer'
export const localsMiddleware = (req, res, next) => {
res.locals.loggedIn = Boolean(req.session.loggedIn)
res.locals.loggedInUser = req.session.user || {}
res.locals.siteName = 'jmTube'
next()
}
///pug파일에서 loggedIn, loggedInUser, siteName등으로
///모든 pug 파일에서 접근 가능하게 만들어 놓는 middleware
export const protectorMiddleware = (req, res, next) => {
if (req.session.loggedIn) {
return next()
} else {
return res.redirect('/login')
}
}
///session에 loggedIn 값이 true이면 다음으로 갈 수 있게 하고,
///loggdeIn이 false면 로그인 page로 redirect 시키는 middleware
export const publicOnlyMiddleware = (req, res, next) => {
if (!req.session.loggedIn) {
return next()
} else {
return res.redirect('/')
}
}
///session에 loggedIn 값이 false이면 다음으로 갈 수 있게 하고,
///loggdeIn이 trueㅇ면 홈으로 redirect 시키는 middleware
export const avatarUpload = multer({
dest: 'uploads/avatars/',
limits: {
fileSize: 3000000,
},
})
export const videoUpload = multer({
dest: 'uploads/videos/',
limits: {
fileSize: 25000000,
},
})
import express from 'express'
import {
getJoin,
getLogin,
postJoin,
postLogin,
} from '../controllers/userController'
import { search, trending } from '../controllers/videoController'
import { publicOnlyMiddleware } from '../middlewares'
const rootRouter = express.Router()
rootRouter.get('/', trending)
rootRouter.route('/join').all(publicOnlyMiddleware).get(getJoin).post(postJoin)
///createAccount페이지는 loggedIn이 false인 경우만
///접근가능하게 publicOnlyMiddleware를 넣어줌.
rootRouter
.route('/login')
.all(publicOnlyMiddleware)
.get(getLogin)
.post(postLogin)
///login 체이지는 loggedIn이 false인 경우만
///접근가능하게 publicOnlyMiddleware를 넣어줌.
rootRouter.get('/search', search)
export default rootRouter
!!!반대의 경우인 loggedIn이 true인 경우만 접근 가능하게 하는
path들은 따로 POST하지는 않겠음. 너무 쉬우니깐.