Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 19 additions & 22 deletions controller/board.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,31 +10,32 @@ import commentModel from '../src/db/models/comment';
const boardController = {
boardAll: async (req: Request, res: Response) => {
// 게시판 글 목록 데이터 보내주기
console.log('💜boardAll');
console.log('💜boardAll - 게시판 글 목록 보기');
let boardList = await Boards.findAll();
res.status(200).json({
boardList,
});
},
boardOne: async (req: Request, res: Response) => {
// 게시글 상세 내용 + 댓글 데이터 보내주기
console.log('💜boardOne ', req.params);
console.log('💜boardOne - ', req.params);
const board_id = Number(req.params.board_id);
const boardData = await Boards.findOne({
where: {
id: board_id,
},
});
if (boardData === null) {
console.log('💜boardOne - ERROR// no board data ', board_id);
res.status(403).json({
message: 'no board data Error!',
});
} else {
console.log('💜boardOne - board data ', board_id);
// board_id를 key로 가지는 칸반보드 데이터 불러오기
let foundContent = await contentModel.findOne({ board_id });
// board_id를 key로 가지는 댓글 데이터 불러오기
let foundComment = await commentModel.find({ board_id });

// 게시글 상세내용 응답으로 보내주기
if (foundContent) {
res.status(200).json({
Expand All @@ -45,6 +46,7 @@ const boardController = {
commentAll: foundComment,
});
} else {
console.log('💜boardOne - ERROR// no content ', board_id);
res.status(404).json({
message: 'no content Error!',
});
Expand All @@ -53,12 +55,11 @@ const boardController = {
},
boardAdd: async (req: Request, res: Response) => {
// 게시글 등록하기
console.log('💜boardAdd ', req.body, req.user_email, req.user_id);
console.log('💜boardAdd - ', req.body, req.user_email, req.user_id);
const title = req.body.title;
if (title !== '') {
const writer = req.user_email;
const user_id = req.user_id;
console.log('chekcheakdjfkldaf - ', writer, user_id);
const newBoard = await Boards.create({
id: undefined,
title,
Expand All @@ -67,7 +68,7 @@ const boardController = {
});
const board_id = newBoard.get('id');
// board_id를 key로 가지는 칸반보드 데이터 저장
//----------------------------------------- 아래는 유저가 소유한 칸반보드를 데이터화해주는 과정
// 유저가 소유한 칸반보드를 데이터화해주는 과정
const email = req.user_email; // 유저 정보 어스체커에서 받아옴
const user = await Users.findOne({ where: { email: email } }); // 유저정보 조회 유저객체
if (user) {
Expand All @@ -76,9 +77,7 @@ const boardController = {
where: { user_id },
order: [['index', 'ASC']],
});
// console.log(workspace);
const tasks = await Tasks.findAll({ where: { user_id }, order: [['index', 'ASC']] });
// console.log(tasks);
const res_taskList = [];
for (let i = 0; i < workspace.length; i++) {
const id = workspace[i].get('id');
Expand All @@ -87,22 +86,16 @@ const boardController = {
.map(el => {
return el.get('id');
});
// console.log('🥵', taskArr);
res_taskList.push(
Object.assign({}, { title: workspace[i].get('title'), tasks: taskArr }),
);
}

const res_taskItem: {
[index: number]: any;
} = {};
// console.log(res_taskList);

for (let i = 0; i < tasks.length; i++) {
let id = tasks[i].get('id') as number;
console.log('🥺', id);
const checkList = await checkListModel.findOne({ tasksId: id });
console.log('🥵', checkList);
if (checkList) {
res_taskItem[id] = Object.assign(
{},
Expand Down Expand Up @@ -133,39 +126,43 @@ const boardController = {
});
Mboard_data.save()
.then(result => {
console.log(result);
//console.log(result);
})
.catch(error => {
return res.status(500).json({
message: error.message,
error,
.catch(err => {
console.log('💜boardAdd - ERROR// ', err.message);
res.status(500).json({
message: err.message,
});
});
// res.send({ Mboard_data });
}
// board_id를 key로 가지는 댓글 데이터 저장(빈파일? 생성)
// board_id를 key로 가지는 댓글 데이터 저장(빈파일? 생성) -> 필요없음
// 새로 생성된 게시판 글 목록 데이터 보내줌
let boardList = await Boards.findAll();
res.status(200).json({
new_board_id: board_id,
boardList,
});
} else {
console.log('💜boardAdd - ERROR// no input title ', title);
res.status(400).json({
message: 'no input title Error!',
});
}
},
boardDelete: async (req: Request, res: Response) => {
// 게시글 삭제하기
console.log('💜boardDelete ', req.params);
console.log('💜boardDelete - ', req.params);
const board_id = Number(req.params.board_id);
await Boards.destroy({
where: {
id: board_id,
},
});
// board_id를 key로 가지는 칸반보드 데이터 삭제
contentModel.deleteOne({ board_id });
// board_id를 key로 가지는 댓글 데이터 삭제
commentModel.deleteMany({ board_id });
// 삭제되었다는 메시지 보내기
res.status(200).json({
message: `delete ${board_id} complete`,
});
Expand Down
27 changes: 10 additions & 17 deletions controller/board_comment.ts
Original file line number Diff line number Diff line change
@@ -1,21 +1,19 @@
import { Request, Response } from 'express';
import { Boards } from '../src/db/models/board';
import mongoose from 'mongoose';
import commentModel from '../src/db/models/comment';
import { commentDisplay } from './commentDisplay';
// interface

interface Comment extends mongoose.Document {
user_id: string;
user_email: string;
comment_body: string;
// children: Array<Comment>;
board_id: number;
}

const commentController = {
commentAdd: (req: Request, res: Response) => {
// 댓글 추가하기
console.log(req.body);
console.log('💜commentAdd ', req.params);
console.log('💚commentAdd - ', req.params, req.body);
const user_id = req.user_id;
const user_email = req.user_email;
const board_id = Number(req.params.board_id);
Expand All @@ -27,47 +25,42 @@ const commentController = {
comment_body,
parent_id,
});
// new mongoose.Types.ObjectId 유니크값 생성기 같은 느낌이다. 아이디생성용
return comment
.save()
.then(async result => {
//console.log(result);
const commentData = await commentModel.find({ board_id });
console.log('🤎', commentData);
const commentAll = commentDisplay(commentData);
return res.status(201).json({
commentAll,
//commentData,
});
})
.catch(error => {
.catch(err => {
console.log('💚commentAdd - ERROR// ', err.message);
return res.status(500).json({
message: error.message,
message: 'comment Error ' + err.message,
});
});
},
commentDelete: async (req: Request, res: Response) => {
// 댓글 삭제하기
console.log('💜commentDelete ', req.params);
console.log('💚commentDelete - ', req.params);
const board_id = Number(req.params.board_id);
const comment_id = String(req.params.comment_id);
const user_id = req.user_id;
const user_email = req.user_email;
console.log(user_id);
commentModel
.deleteOne()
.and([{ _id: comment_id }, { user_id }])
.then(async data => {
const commentData = await commentModel.find({ board_id });
console.log('🤎', commentData);
const commentAll = commentDisplay(commentData);
res.status(200).json({
commentAll,
});
})
.catch(err => {
res.status(500).json({
message: err.message,
console.log('💚commentDelete - ERROR// ', err.message);
return res.status(500).json({
message: 'comment Error ' + err.message,
});
});
},
Expand Down
38 changes: 13 additions & 25 deletions controller/emailauth.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,56 +6,44 @@ import { Users } from '../src/db/models/user';
import { accessTokenGenerator } from '../Auth/GenerateAccessToken';
import { refreshTokenGenerator } from '../Auth/GenerateRefreshToken';
const url = require('url');
// const Users = require('../src/db/models/user');

const emailAuthController = {
authorizationCode: async (req: Request, res: Response) => {
//오소리코드 확인

// console.log(req.query);
console.log('💙login: email- ', req.body);
const authorizationCode: string = (await req.body.authorizationCode) as string;
const email: string = (await req.body.email) as string;
// console.log(authorizationCode);
// authorization code를 이용해 access token을 발급
jwt.verify(
authorizationCode,
process.env.AUTHORIZATION_SECRET,
async (err: Error | null, decoded: any) => {
// console.log(authorizationCode);
try {
if (err) {
throw new Error('not decoded!');
} else {
//디코딩 됬음
// decoded
const exp = new Date(decoded.exp * 1000);
const now = new Date(Date.now());
console.log(exp, ' vs ', now);
if (exp > now) {
//액세스토큰 만들어줌,리프레시토큰만들어줌
let data = await Users.findOrCreate({ where: { email } });
// access token, refresh token 생성
let data = await Users.findOrCreate({
where: {
email,
},
});
let id: number = data[0].get('id') as number;
const accessToken = await accessTokenGenerator(id, email);
const refreshToken = await refreshTokenGenerator(id, email);
console.log('at: ', accessToken, ', rt: ', refreshToken);
console.log('💙email: at - ', accessToken, '\n💙email: rt - ', refreshToken);
// refresh token 저장
res.cookie('refreshToken', refreshToken as string, {
maxAge: 1000 * 60 * 60 * 24 * 7,
httpOnly: true,
// secure: true,
// sameOrigin: 'none',
});
// access token과 loginType을 응답으로 보내줌
// res.status(200).json({
// accessToken,
// LoginType: 'email',
// });
// res.redirect(
// url.format({
// pathname: 'http://9351eda07173.ngrok.io/',
// query: {
// accessToken: accessToken,
// },
// }),
// );
// res.redirect('/?' + query);
res.status(200).json({
accessToken,
email,
Expand All @@ -69,9 +57,9 @@ const emailAuthController = {
}
}
} catch (err) {
console.log(err);
console.log('💙email: ', err.message);
res.status(401).json({
message: 'authorizationCode Error!',
message: 'authorizationCode Error!' + err.message,
});
}
},
Expand Down
21 changes: 9 additions & 12 deletions controller/loginOAuth.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import { Users } from '../src/db/models/user';
const oauthController = {
google: async (req: Request, res: Response) => {
//로그인 - OAuth 방식: google
console.log('💙google- ', req.body);
console.log('💙login: google- ', req.body);
const googleLoginURL = 'https://accounts.google.com/o/oauth2/token';
const googleInfoURL = 'https://www.googleapis.com/oauth2/v3/userinfo';
// authorization code를 이용해 access token을 발급받음
Expand All @@ -16,7 +16,7 @@ const oauthController = {
client_id: process.env.GOOGLE_CLIENT_ID,
client_secret: process.env.GOOGLE_CLIENT_SECRET,
code: req.body.authorizationCode,
redirect_uri: process.env.CLIENT_URL,
redirect_uri: `${process.env.CLIENT_URL}/login`,
grant_type: 'authorization_code',
})
.then(async result => {
Expand Down Expand Up @@ -50,23 +50,23 @@ const oauthController = {
httpOnly: true,
});
// access token과 loginType, email을 응답으로 보내줌
console.log('🧡response - ', accessToken);
console.log('💙google: at - ', accessToken, '\n💙google: rt - ', refreshToken);
res.status(200).json({
accessToken,
LoginType: 'google',
email: resInfo,
});
})
.catch(err => {
console.log(err.message);
console.log('💙google: ', err.message);
res.status(401).json({
message: 'authorizationCode Error!',
message: 'authorizationCode Error!' + err.message,
});
});
},
github: async (req: Request, res: Response) => {
//로그인 - OAuth 방식: github
console.log('💙github- ', req.body);
console.log('💙login: github- ', req.body);
const githubLoginURL = 'https://github.com/login/oauth/access_token';
const githubInfoURL = 'https://api.github.com/user';
// authorization code를 이용해 access token을 발급받음
Expand All @@ -93,10 +93,7 @@ const oauthController = {
authorization: `Bearer ${accessToken}`,
},
})
.then(result => {
//console.log('result.data - ', result.data);
return result.data.login;
})
.then(result => result.data.login)
.catch(err => {
console.log(err.message);
});
Expand All @@ -112,15 +109,15 @@ const oauthController = {
});
}
// access token과 loginType을 응답으로 보내줌
console.log('🧡response - ', accessToken);
console.log('💙github: at - ', accessToken);
res.status(200).json({
accessToken,
LoginType: 'github',
email: `${resInfo}@github.com`,
});
})
.catch(err => {
console.log(err.message);
console.log('💙github: ', err.message);
res.status(401).json({
message: 'authorizationCode Error!',
});
Expand Down
Loading