From 8c341f078e6a95d1d15e74921a74f531379a3b4c Mon Sep 17 00:00:00 2001 From: LeeYongJae <sdc5678@ajou.ac.kr> Date: Thu, 5 Dec 2019 21:16:49 +0900 Subject: [PATCH] =?UTF-8?q?Login=20with=20Session=20=EB=8B=A4=EC=8B=9C=20?= =?UTF-8?q?=EC=98=AC=EB=A6=BD=EB=8B=88=EB=8B=A4.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 4 +- backend/app.js | 2 + backend/package-lock.json | 5 ++ backend/package.json | 3 +- backend/routes/emails.js | 33 ++++++++++ frontend/src/components/BookSearchPage.vue | 2 +- frontend/src/components/home.vue | 15 ++++- .../components/profilecomponent/buylist.vue | 64 +++++++++++++++++++ 8 files changed, 123 insertions(+), 5 deletions(-) create mode 100644 backend/routes/emails.js diff --git a/.gitignore b/.gitignore index ce60c7e..b20c624 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ **/node_modules -**/sessions \ No newline at end of file +**/sessions +**/frontend/package-lock.json +**/frontend/package.json diff --git a/backend/app.js b/backend/app.js index 81d1bf6..2ec4475 100644 --- a/backend/app.js +++ b/backend/app.js @@ -10,6 +10,7 @@ var FileStore = require("session-file-store")(session); var bookRouter = require("./routes/books"); var loginRouter = require("./routes/login"); +var emailRouter = require("./routes/emails"); var app = express(); @@ -45,6 +46,7 @@ app.use(express.static(path.join(__dirname, "public"))); app.use("/api/books", bookRouter); app.use("/api/login", loginRouter); +app.use("/api/emails", emailRouter); // catch 404 and forward to error handler app.use(function(req, res, next) { diff --git a/backend/package-lock.json b/backend/package-lock.json index 3d3dca9..3b4c6fa 100644 --- a/backend/package-lock.json +++ b/backend/package-lock.json @@ -738,6 +738,11 @@ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" }, + "nodemailer": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.4.0.tgz", + "integrity": "sha512-UBqPOfQGD1cM3HnjhuQe+0u3DWx47WWK7lBjG5UtPnGOysr7oDK5lNCzcjK6zzeBSdTk4m1tGx1xNbWFZQmMNA==" + }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", diff --git a/backend/package.json b/backend/package.json index 4d65a8a..c264c6b 100644 --- a/backend/package.json +++ b/backend/package.json @@ -16,6 +16,7 @@ "mongoose": "^5.7.12", "morgan": "~1.9.1", "pug": "2.0.0-beta11", - "session-file-store": "^1.3.1" + "session-file-store": "^1.3.1", + "nodemailer": "^6.4.0" } } diff --git a/backend/routes/emails.js b/backend/routes/emails.js new file mode 100644 index 0000000..40d50c1 --- /dev/null +++ b/backend/routes/emails.js @@ -0,0 +1,33 @@ +const express = require('express'); +const nodemailer = require('nodemailer'); +const router = express.Router(); + +router.get("", function(req, res, next){ + let email = "hj950000@ajou.ac.kr" + + let transporter = nodemailer.createTransport({ + service: 'gmail', + auth: { + user: 'majorbook202@gmail.com', // gmail 계정 아이디를 입력 + pass: 'dnjfdydlf' // gmail 계정의 비밀번호를 입력 + } + }); + + let mailOptions = { + from: 'majorbook202@gmail.com', // 발송 메일 주소 (위에서 작성한 gmail 계정 아이디) + to: "hj950000@ajou.ac.kr", // 수신 메일 주소 + subject: 'MajorBook구매요청이 들어왔습니다.', // 제목 + text: '올리신 책 ~~에 대한 구매요청이 도착했습니다. 해당 구매자의 전화번호는 ~~입니다.' // 내용 + }; + + transporter.sendMail(mailOptions, function(error, info){ + if (error) { + console.log(error); + } + else { + console.log('Email sent: ' + info.response); + } + }); +}) + +module.exports = router; \ No newline at end of file diff --git a/frontend/src/components/BookSearchPage.vue b/frontend/src/components/BookSearchPage.vue index c8dedcf..fa52caf 100644 --- a/frontend/src/components/BookSearchPage.vue +++ b/frontend/src/components/BookSearchPage.vue @@ -69,7 +69,7 @@ <!-- =============서포터즈 submit 양식 ================== --> <div> <md-dialog :md-active.sync="active" style="width : 500px; height: 1000px "> - <md-dialog-title>서포터즈 신청</md-dialog-title> + <md-dialog-title>판매도서 등록</md-dialog-title> <md-field class="select"> <label>책제목</label> <md-input v-model="submit.title"></md-input> diff --git a/frontend/src/components/home.vue b/frontend/src/components/home.vue index e487846..eb70fd6 100644 --- a/frontend/src/components/home.vue +++ b/frontend/src/components/home.vue @@ -13,14 +13,25 @@ <script> import Hotlist from "./home_hotlist/HotList"; export default { + created() { + this + .$http + .get('/api/emails') + .then(response => { + console.log("Sending Success") + }) + }, + data() { return {}; }, components: { - Hotlist }, - methods: {} + methods: { + + + } }; </script> diff --git a/frontend/src/components/profilecomponent/buylist.vue b/frontend/src/components/profilecomponent/buylist.vue index cfa6463..60e76dd 100644 --- a/frontend/src/components/profilecomponent/buylist.vue +++ b/frontend/src/components/profilecomponent/buylist.vue @@ -20,6 +20,70 @@ </md-button> </md-list-item> <md-divider></md-divider> + <md-list-item> + <md-button class="md-icon-button md-raised" style="color:#1DDB16;backgroundColor:#1DDB16"> + <img src="../../assets/book-open-flat.png" /> + </md-button> + <div class="md-list-item-text"> + <span> 책 제목</span> + <span> 구매 대기중</span> + </div> + <md-button class="md-icon-button md-raised md-accent"> + <img src="../../assets/x-512.png" /> + </md-button> + <md-button class="md-icon-button md-raised md-primary"> + <img src="../../assets/check-icon.png" /> + </md-button> + </md-list-item> + <md-divider></md-divider> + <md-list-item> + <md-button class="md-icon-button md-raised" style="color:#1DDB16;backgroundColor:#1DDB16"> + <img src="../../assets/book-open-flat.png" /> + </md-button> + <div class="md-list-item-text"> + <span> 책 제목</span> + <span> 구매 대기중</span> + </div> + <md-button class="md-icon-button md-raised md-accent"> + <img src="../../assets/x-512.png" /> + </md-button> + <md-button class="md-icon-button md-raised md-primary"> + <img src="../../assets/check-icon.png" /> + </md-button> + </md-list-item> + <md-divider></md-divider> + <md-list-item> + <md-button class="md-icon-button md-raised" style="color:#1DDB16;backgroundColor:#1DDB16"> + <img src="../../assets/book-open-flat.png" /> + </md-button> + <div class="md-list-item-text"> + <span> 책 제목</span> + <span> 구매 대기중</span> + </div> + <md-button class="md-icon-button md-raised md-accent"> + <img src="../../assets/x-512.png" /> + </md-button> + <md-button class="md-icon-button md-raised md-primary"> + <img src="../../assets/check-icon.png" /> + </md-button> + </md-list-item> + <md-divider></md-divider> + <md-list-item> + <md-button class="md-icon-button md-raised" style="color:#1DDB16;backgroundColor:#1DDB16"> + <img src="../../assets/book-open-flat.png" /> + </md-button> + <div class="md-list-item-text"> + <span> 책 제목</span> + <span> 구매 대기중</span> + </div> + <md-button class="md-icon-button md-raised md-accent"> + <img src="../../assets/x-512.png" /> + </md-button> + <md-button class="md-icon-button md-raised md-primary"> + <img src="../../assets/check-icon.png" /> + </md-button> + </md-list-item> + <md-divider></md-divider> </md-list> </div> </template> -- GitLab