๐ router/Auth.js
import express from 'express';
import prisma from '../lib/prisma.js';
import bcrypt from 'bcrypt';
import jwt from 'jsonwebtoken';
import { JWT_SECRET, JWT_EXPIRES } from '../lib/constants.js';
const router = express.Router();
router.post('/register', async (req, res) => {
const {nickname, password} = req.body;
const existing_nickname = await prisma.user.findUnique({
where: {nickname}
});
console.log("req.data" , req.data)
if (existing_nickname) return res.status(400).json({message:" ์ด๋ฏธ ์กด์ฌํ๋ ๋๋ค์์
๋๋ค"})
// create hashed password
const hashed_password = await bcrypt.hash(password, 10); // hash round 10
// create user in database
const user = await prisma.user.create({
data: { password: hashed_password, nickname },
})
res.status(201).json({ id: user.id, nickname: user.nickname})
})
router.post('/login',async (req, res) => {
const {nickname, password} = req.body;
// ์ฌ์ฉ์ ํ์ธ
const existing_user = await prisma.user.findUnique({
where: {nickname}
})
if(!existing_user) return res.status(400).json({message:""})
// ๋น๋ฐ๋ฒํธ ๊ฒ์ฆ
const isValid = await bcrypt.compare(password, user.password)
if (!isValid) return res.status(400).json({ message: '๋น๋ฐ๋ฒํธ๊ฐ ํ๋ ธ์ต๋๋ค.' });
// jwt token ๋ฐ๊ธ
const token = jwt.sign({id : user.id}, JWT_SECRET, { expiresIn: JWT_EXPIRES })
res.json({token})
})
export default router
๐ router/index.js
import express from 'express';
import authRoutes from './authRouter.js';
import protectedRoutes from './protectedRouter.js';
const router = express.Router();
router.use('/',authRoutes)
router.use('/profile',protectedRoutes)
export default router;
๐ router/protected.js
*/
import express from 'express'
import passport from 'passport'
const router = express.Router()
router.get(
'/',
passport.authenticate('access-token', { session: false }),
(req, res) => {
// JWT๊ฐ ์ ํจํ๋ฉด req.user์ ์ฌ์ฉ์ ์ ๋ณด๊ฐ ๋ค์ด์ด
res.json({
message: `Protected profile data for ${req.user.nickname}`,
user: req.user
});
}
);
export default router
Top comments (0)