diff --git a/server/package.json b/server/package.json index 777ba240891a21498480b5279124485dd0bab723..00b8fd43698d6c8e5d0c6f2506ad021e0eb4a192 100644 --- a/server/package.json +++ b/server/package.json @@ -30,6 +30,7 @@ "mysql2": "^2.2.5", "node-fetch": "^2.6.1", "node-schedule": "^2.0.0", + "nodemailer": "^6.6.2", "pg": "^8.6.0", "pg-hstore": "^2.3.4", "pug": "^3.0.0", diff --git a/server/src/app.js b/server/src/app.js index 0a4018a4a2dbe66a87d9b885a51a47067d6abf54..05ae2c8e38d19197493d33574dacda4ccffdbfde 100644 --- a/server/src/app.js +++ b/server/src/app.js @@ -14,6 +14,7 @@ import locCodeRouter from "./routers/locCodeRouter"; const app = express(); +// Page Views for Development test. app.set("view engine", "pug"); app.set("views", path.join(__dirname, "views")); diff --git a/server/src/controllers/dataController.js b/server/src/controllers/dataController.js index 1a5b849269e63e0845c1b2c6660a4650a5813235..5b114ad2f89d2d30b9933d7a3dbb879c6ecf08e5 100644 --- a/server/src/controllers/dataController.js +++ b/server/src/controllers/dataController.js @@ -79,7 +79,7 @@ export const getDataInput = (req, res) => { }; // 사용자의 데이터 가져오기 및 예측 값 전송 -export const getUserData = (req, res) => { +export const getUserWeatherData = (req, res) => { const { params: { id }, } = req; diff --git a/server/src/controllers/userController.js b/server/src/controllers/userController.js new file mode 100644 index 0000000000000000000000000000000000000000..3aed35d6f75320b85c4b616003edb3c4d02da7a2 --- /dev/null +++ b/server/src/controllers/userController.js @@ -0,0 +1,59 @@ +import dotenv from "dotenv"; +import nodemailer from "nodemailer"; +import { serverMSG, statusCode } from "../serverinfo"; + +dotenv.config(); + +// Page for Development Test. +export const getSignup = (req, res) => { + res.render("signup", { pagename: "Sign Up" }); +}; + +// Page for Development Test. +export const getLogin = (req, res) => { + res.render("login", { pagename: "Log In" }); +}; + +// Function for Signup Proccess. +export const postSignup = async (req, res) => { + const { + body: { email, locCode }, + } = req; + + const transporter = nodemailer.createTransport({ + service: process.env.NODEMAILER_SERVICE, + auth: { + type: "OAuth2", + user: process.env.NODEMAILER_USER, + clientId: process.env.NODEMAILER_GAMIL_CLIENT_ID, + clientSecret: process.env.NODEMAILER_GMAIL_CLIENT_PASSWORD, + refreshToken: process.env.NODEMAILER_GMAIL_REFRESH_TOKEN, + }, + tls: { + rejectUnauthorized: false, + }, + }); + + const mailOptions = { + from: `EUE Auth Supply <${process.env.NODEMAILER_USER}>`, + to: email, + subject: "EUE 사용자 계정 확인용 메일.", + text: `You enter locCode : ${locCode}.`, + }; + + try { + const mailResult = await transporter.sendMail(mailOptions); + console.log(`Mail sent - ID : ${mailResult.messageId}`); + res + .status(statusCode.ok) + .json({ msg: serverMSG.server_ok, content: mailResult.response }); + } catch (err) { + console.log("Mail Sending Failuer."); + console.log(err); + res + .status(statusCode.err) + .json({ msg: serverMSG.server_err, content: err }); + } +}; + +export const postLogin = (req, res) => {}; diff --git a/server/src/routers/dataRouter.js b/server/src/routers/dataRouter.js index 25a060d132a167c256d4cba161010ed623d46a9f..e04b8a1227c4d887c78aa574323097c213a0e7e5 100644 --- a/server/src/routers/dataRouter.js +++ b/server/src/routers/dataRouter.js @@ -1,11 +1,14 @@ import express from "express"; import routes from "../routes"; -import { getDataInput, getUserData } from "../controllers/dataController"; +import { + getDataInput, + getUserWeatherData, +} from "../controllers/dataController"; import { onlyPrivate } from "../middlewares"; const dataRouter = express.Router(); dataRouter.get(routes.dataInput, getDataInput); -dataRouter.get(routes.dataUser, onlyPrivate, getUserData); +dataRouter.get(routes.dataUser, onlyPrivate, getUserWeatherData); export default dataRouter; diff --git a/server/src/routers/globalRouter.js b/server/src/routers/globalRouter.js index 651edeb7f03ea7c9f585fc3cd562c97255610241..740dc52b0e471830a44a1e9ec8e6026bebe0f896 100644 --- a/server/src/routers/globalRouter.js +++ b/server/src/routers/globalRouter.js @@ -1,9 +1,21 @@ import express from "express"; import routes from "../routes"; import { getHome } from "../controllers/globalController"; +import { + getLogin, + getSignup, + postLogin, + postSignup, +} from "../controllers/userController"; const globalRouter = express.Router(); globalRouter.get(routes.home, getHome); +// Authentication +globalRouter.get(routes.signup, getSignup); // For development test. +globalRouter.get(routes.login, getLogin); // For development test. +globalRouter.post(routes.signup, postSignup); +globalRouter.post(routes.login, postLogin); + export default globalRouter; diff --git a/server/src/routes.js b/server/src/routes.js index f6a0015155f6ddaed62c5462aa781b5512a7a83e..f84bb725c046515f96d12d7e0fba7991b9961388 100644 --- a/server/src/routes.js +++ b/server/src/routes.js @@ -16,7 +16,7 @@ const SIGUNGU = "/si-gun-gu"; const EUPMYEONDONG = "/eup-myeon-dong"; // # Auth -const REGISTER = "/register"; +const SIGNUP = "/signup"; const LOGIN = "/login"; const EDIT_PROFILE = "/edit-profile"; @@ -33,7 +33,7 @@ const routes = { doe: DOE, sigungu: SIGUNGU, eupmyeondong: EUPMYEONDONG, - register: REGISTER, + signup: SIGNUP, login: LOGIN, editProfile: EDIT_PROFILE, Detail: (id) => { diff --git a/server/src/views/home.pug b/server/src/views/home.pug index c916b2c3c7b460be37f4b33412d110f97eea1875..282a99b6ec9078fe438f93bed3cfd7d73fa4fea9 100644 --- a/server/src/views/home.pug +++ b/server/src/views/home.pug @@ -5,4 +5,6 @@ block content li a(href=routes.data+routes.dataInput) 데이터 등록 li - a(href=routes.data+routes.dataOutput) 데이터 출력 \ No newline at end of file + a(href=routes.signup) 회원가입 + li + a(href=routes.login) 로그인 \ No newline at end of file diff --git a/server/src/views/login.pug b/server/src/views/login.pug new file mode 100644 index 0000000000000000000000000000000000000000..36282cc7fa79432ea397f9a56e799477c1d12437 --- /dev/null +++ b/server/src/views/login.pug @@ -0,0 +1,5 @@ +block content + .login-form_container + form(action=routes.login, method="post") + input(type="email", name="email", require=true, placeholder="E-mail") + input(type="submit", value="Submit") \ No newline at end of file diff --git a/server/src/views/signup.pug b/server/src/views/signup.pug new file mode 100644 index 0000000000000000000000000000000000000000..218946094f84153fd4ff6935cae56647cbb29020 --- /dev/null +++ b/server/src/views/signup.pug @@ -0,0 +1,6 @@ +block content + .signup-form_container + form(action = routes.signup, method = "post") + input(type="email", name="email", require=true, placeholder="E-mail") + input(type="number", name="locCode") + input(type="submit", value="Submit") \ No newline at end of file