Commit 656540dc authored by KangMin An's avatar KangMin An
Browse files

Update: User model. Auth Process.

parent 83f2c063
import fetch from "node-fetch";
import { serverMSG, statusCode } from "../serverinfo";
import db from "../db/index"; import db from "../db/index";
import dotenv from "dotenv"; import dotenv from "dotenv";
import fetch from "node-fetch";
import jwt from "jsonwebtoken";
import { serverMSG, statusCode } from "../serverinfo";
dotenv.config(); dotenv.config();
...@@ -34,10 +35,10 @@ const handleOutData = async (locCode, date, lat, lng) => { ...@@ -34,10 +35,10 @@ const handleOutData = async (locCode, date, lat, lng) => {
}; };
// 내부 수집기로 부터 들어온 정보 처리 // 내부 수집기로 부터 들어온 정보 처리
const handleInData = async (id, date, temp, humi, lights) => { const handleInData = async (email, date, temp, humi, lights) => {
db.Weather_in.create( db.Weather_in.create(
{ {
host: id, host: email,
collected_at: date, collected_at: date,
temp: temp, temp: temp,
humi: humi, humi: humi,
...@@ -59,15 +60,15 @@ export const getDataInput = (req, res) => { ...@@ -59,15 +60,15 @@ export const getDataInput = (req, res) => {
} = req; } = req;
console.log(locCode, date, lat, lng); console.log(locCode, date, lat, lng);
// handleOutData(locCode, date, lat, lng); handleOutData(locCode, date, lat, lng);
} else { } else {
// 내부 데이터 수집기 동작 // 내부 데이터 수집기 동작
const { const {
query: { id, locCode, date, temp, humi, lights }, query: { id, date, temp, humi, lights },
} = req; } = req;
console.log(id, locCode, date, temp, humi, lights); console.log(id, date, temp, humi, lights);
// handleInData(id, date, temp, humi, lights); handleInData(id, date, temp, humi, lights);
} }
res.status(statusCode.ok).send(serverMSG.server_ok); res.status(statusCode.ok).send(serverMSG.server_ok);
...@@ -80,19 +81,22 @@ export const getDataInput = (req, res) => { ...@@ -80,19 +81,22 @@ export const getDataInput = (req, res) => {
// 사용자의 데이터 가져오기 및 예측 값 전송 // 사용자의 데이터 가져오기 및 예측 값 전송
export const getUserWeatherData = (req, res) => { export const getUserWeatherData = (req, res) => {
const { const {
params: { email }, cookies: { acs_token },
} = req; } = req;
/* 사용자 email에 따른 사용자 날씨 데이터 가져오기 */ /* 사용자 email에 따른 사용자 날씨 데이터 가져오기 */
const decoded = jwt.decode(acs_token);
const result = db.Weather_in.findAll({
where: { host: decoded.email },
logging: false,
});
res.status(statusCode.ok).send(serverMSG.server_ok); res.status(statusCode.ok).json({ msg: serverMSG.server_ok, content: result });
}; };
// 지역 코드 요청 처리 // 지역 코드 요청 처리
export const getLocCode = async (req, res) => { export const getLocCode = async (req, res) => {
/* 통합 지역 코드 및 이름 json으로 생성 및 전송 */ /* 통합 지역 코드 및 이름 json으로 생성 및 전송 */
let locCodes = [];
const does = await db.Doe.findAll({ logging: false }); const does = await db.Doe.findAll({ logging: false });
const sggs = await db.Sgg.findAll({ logging: false }); const sggs = await db.Sgg.findAll({ logging: false });
const emds = await db.Emd.findAll({ logging: false }); const emds = await db.Emd.findAll({ logging: false });
......
...@@ -136,22 +136,12 @@ export const getConfirm = async (req, res) => { ...@@ -136,22 +136,12 @@ export const getConfirm = async (req, res) => {
}; };
const accessT = jwt.sign(payload, process.env.AUTH_ACCESS_SECRETKEY, { const accessT = jwt.sign(payload, process.env.AUTH_ACCESS_SECRETKEY, {
expiresIn: "6h",
issuer: "eue.com",
subject: "userInfo",
});
const refreshT = jwt.sign(payload, process.env.AUTH_REFRESH_SECRETKEY, {
expiresIn: "14d", expiresIn: "14d",
issuer: "eue.com", issuer: "eue.com",
subject: "userInfo", subject: "userInfo",
}); });
res res.status(statusCode.ok).cookie("acs_token", accessT).redirect("/api");
.status(statusCode.ok)
.cookie("access_token", accessT)
.cookie("refresh_token", refreshT)
.redirect("/api");
} catch (err) { } catch (err) {
res res
.status(statusCode.err) .status(statusCode.err)
......
import routes from "./routes"; import routes from "./routes";
import jwt from "jsonwebtoken";
/* /*
# localmiddleware # localmiddleware
...@@ -12,8 +13,18 @@ export const localmiddleware = (req, res, next) => { ...@@ -12,8 +13,18 @@ export const localmiddleware = (req, res, next) => {
/* /*
# onlyPrivate # onlyPrivate
- 인증된 사용자만 사용할 수 있는 데이터에 접근하기 위한 중간 과정. - 인증된 사용자만 사용할 수 있는 데이터에 접근하기 위한 중간 과정.
- Front-end 개발과 함께 진행 예정
*/ */
export const onlyPrivate = (req, res, next) => { export const onlyPrivate = (req, res, next) => {
const {
cookies: { acs_Token },
} = req;
try {
const acs_decode = jwt.verify(acs_Token, process.env.AUTH_ACCESS_SECRETKEY);
console.log(`User[${acs_decode.email}] Data Access.`);
next(); next();
} catch (error) {
console.log(error);
res.redirect("/api/login");
}
}; };
...@@ -16,13 +16,21 @@ export class User extends Model { ...@@ -16,13 +16,21 @@ export class User extends Model {
email: { email: {
type: DataTypes.STRING(320), type: DataTypes.STRING(320),
allowNull: false, allowNull: false,
primaryKey: true, unique: true,
}, },
nick_name: { nick_name: {
type: DataTypes.STRING(16), type: DataTypes.STRING(16),
allowNull: false, allowNull: false,
unique: true, unique: true,
}, },
using_oauth: {
type: DataTypes.BOOLEAN,
defaultValue: false,
},
using_aircon: {
type: DataTypes.BOOLEAN,
defaultValue: false,
},
}, },
{ {
sequelize, sequelize,
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment