웹개발/Node.js (10) 썸네일형 리스트형 게시판-비밀번호 유효성 검사, 관리자 글 삭제 권한 기능 추가 const digit = /\d/;if(password.length비밀번호 유효성 검사는 정말 단순하게 길이가 8자리 이상이고 숫자가 포함되어야 하도록 설정하였다. read 화면에서 isadmin이라는 변수를 추가로 받도록 설정하였다.const isadmin = req.session.user && req.session.user.email === "codehacker0207@gmail.com"; " method="get"> 글 수정 " method="post"> 글 삭제 이렇게 isadnin이 참일 때는 글 삭제 버튼만 이용할 수 있게 만들었다. 게시판-파일 업로드, 다운로드 파일 업로드, 다운로드를 하기 위해서 multer를 사용했다.npm install multermulter를 먼저 다운받아주고,... 파일: write.ejs 파일에 파일 업로드 부분을 추가하고 form에서 enctype을 설정해주었다. filePath: { type: DataTypes.STRING, allowNull: true, }, fileName: { type: DataTypes.STRING, allowNull: true }posts 테이블에 설정도 바꿔주고let filePath = null; let fileName = null; if (req.file) { filePath = req.file.path; fileName = req.fi.. 게시판-카테고리, 검색 지금까지는 게시판 하나에 글이 전부 올라가는 방식이었는데 이번에는 게시판을 여러 카테고리로 나누어서 만들 것이다. category: { type: DataTypes.STRING, allowNull: false }우선 posts 테이블에 category라는 속성을 추가해준다.board.js 파일에const categories = ['자유', '만화', '공부'];이런 식으로 카테고리 배열을 만들고, write 링크로 갈 때 categories 배열을 보내준다. 카테고리: { %> "> 글을 쓸 때 categories 안에 있는 값들을 이용해 선택하는 부분을 만든다. 그리고 write로 post 요청을 보낼 때db.posts.cr.. 게시판-추천 추천을 했을 때 추천을 했다는 정보를 담기 위해recommend라는 테이블을 만들었다.module.exports = (sequelize, DataTypes) => { return sequelize.define('recommend', { username: { type: DataTypes.STRING, allowNull: false }, postId: { type: DataTypes.INTEGER, allowNull: false } }); };테이블의 구조는 간단하게 username과 postid(게시글 식별)로 구성되어 있다.db.users.hasMany(db.recommend);db.recommend.bel.. 게시판-댓글 먼저 데이터베이스에 comments 테이블을 추가했다.module.exports = function(sequelize, DataTypes){ return sequelize.define('comments', { idx: { type : DataTypes.INTEGER, autoIncrement: true, primaryKey: true, allowNull: false }, content: { type: DataTypes.TEXT, allowNull: false }, writer: { type: DataTypes.STRING(255), allowNull: f.. 게시판-자기 글 수정, 삭제, 비밀글 자기 글인 경우에 수정, 삭제 버튼이 활성화되게 하였다.posts 테이블에 writer라는 속성을 넣어서 글을 쓸 때 username을 넣도록 하였다.그리고 read에서 iswriter라는 변수를 ejs 파일로 전달하였다.const iswriter = req.session.user && req.session.user.username === post.writer;res.render('board/read', { post: post, iswriter: iswriter });이렇게 전달한 iswriter를 read.ejs 파일에서 받아서 조건문을 설정하였다. " method="get"> 글 수정 " method="post"> 글 삭제.. 게시판-이메일 인증, 아이디 찾기 이메일 인증을 하려면 회원가입 도중에 인증코드를 받아서 코드가 맞는지 확인해야 한다.그런데 인증이 되기 전에 회원 정보와 코드를 같이 users 테이블에 만들어버리면 인증을 실패하거나 했을 때 남은 데이터를 처리하기가 곤란해질거 같아서 verificationCodes라는 새로운 테이블을 만들었다.module.exports = function(sequelize, DataTypes) { return sequelize.define('verificationCodes', { idx: { type: DataTypes.INTEGER, autoIncrement: true, primaryKey: true, allowNull: false }, .. 게시판-회원가입, 로그인 폴더 구성부터 설명하자면, model 폴더 안에는 users.js라는 파일을 만들고, router 폴더 안에는 auth.js 파일을 만든다.views 폴더에는 auth 폴더를 만들고 그 안에 login.ejs, signup.ejs 파일을 만든다. 회원가입, 로그인 기능을 추가하기 위해서 users라는 테이블을 추가하여 사용자들의 정보를 담는다.model 폴더 안의 users.js 파일이다.module.exports = function(sequelize, DataTypes){ return sequelize.define('users', { idx: { type : DataTypes.INTEGER, autoIncrement: true, primaryKey.. 이전 1 2 다음 목록 더보기