π 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)