1. ๊ด๋ฆฌ์๊ฐ ์ผ๋ฐ ์ ์ ๋ฅผ ์ญ์ ํ ์ ์๋ API
- ์ด๋ฒ ํฌ์คํ
์์๋ ๊ด๋ฆฌ์๊ฐ ์ผ๋ฐ ์ ์ ๋ฅผ ์ญ์ ํ ์ ์๋ API ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ๊ตฌํํจ.
- ์ผ๋ฐ ์ ์ ๋ ์์ ์ ๊ณ์ ๋ง ์ญ์ ํ ์ ์์ง๋ง, ๊ด๋ฆฌ์๋ ์ ์ฒด ์์คํ
์ ๊ด๋ฆฌํ ์ ์๋ ๊ถํ์ ๊ฐ์ง๊ณ ์์ด ๋ค๋ฅธ ์ ์ ๋ค์ ์ญ์ ํ ์ ์์
- ์ด ๊ธฐ๋ฅ์ ํตํด ๊ด๋ฆฌ์๋ง์ด ์ ์ ๊ด๋ฆฌ ์์
์ ํ ์ ์๋๋ก ํ๋ฉฐ, ์ ์ ์ญ์ ์ ํด๋น ์ ์ ์ ๋ชจ๋ ์ ๋ณด์ ๋ฐ์ดํฐ๋ ํจ๊ป ์ญ์ ๋๊ฒ๋ ๊ตฌํํจ.
1) ๊ด๋ฆฌ์ ์ ์ ์ญ์ API ์ค์ (adminDeleteUser.js)
- adminDeleteUser.js ํ์ผ: ๊ด๋ฆฌ์๊ฐ ํน์ ์ ์ ๋ฅผ ์ญ์ ํ ์ ์๋ ๊ธฐ๋ฅ ๊ตฌํ
- ๊ด๋ฆฌ์๋ admin ๊ถํ์ ๊ฐ์ง ์ฌ์ฉ์๋ง ํด๋น ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ์ ์ ๋ฅผ ์ญ์ ํ๋ ๋์์ ํด๋น ์ ์ ์ ๊ด๋ จ๋ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ์ญ์ ํจ. ์ด ๊ณผ์ ์ ๊ด๋ฆฌ์์ ๊ถํ ์ฒดํฌ์ ์ ์ ์ญ์ ํ ๋ฐ์ดํฐ ์ญ์ ๊ณผ์ ์ ํฌํจํจ.
const express = require("express");
const router = express.Router();
const { User } = require("../../models/User");
const { Post } = require("../../models/Post");
const { Comment } = require("../../models/Comment");
const { Like } = require("../../models/Like");
const { auth } = require("../auth");
router.delete("/:userId", auth, async (req, res) => {
const userId = req.params.userId;
try {
// ๋ก๊ทธ์ธ๋ ์ฌ์ฉ์์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๊ธฐ
const user = await User.findById(req.user._id);
// ์ ์ ๊ฐ ์กด์ฌํ์ง ์๊ฑฐ๋ ๊ด๋ฆฌ์๊ฐ ์๋ ๊ฒฝ์ฐ ๊ถํ ๊ฑฐ๋ถ
if (!user || user.role !== "admin") {
return res
.status(403)
.json({ message: "์ ์ ๋ฅผ ์ญ์ ํ ๊ถํ์ด ์์ต๋๋ค." });
}
// ์ญ์ ํ๋ ค๋ ์ ์ ๋ฅผ ์ฐพ๊ธฐ
const userToDelete = await User.findById(userId);
if (!userToDelete) {
return res.status(404).json({ message: "์ ์ ๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค." });
}
// ํด๋น ์ ์ ๊ฐ ์์ฑํ ๊ฒ์๋ฌผ ์ญ์
await Post.deleteMany({ user: userToDelete._id });
// ํด๋น ์ ์ ๊ฐ ์์ฑํ ๋๊ธ ์ญ์
await Comment.deleteMany({ user: userToDelete._id });
// ํด๋น ์ ์ ๊ฐ ์ข์์๋ฅผ ๋๋ฅธ ๊ฒ์๋ฌผ/๋๊ธ ์ญ์
await Like.deleteMany({ user: userToDelete._id });
// ์ ์ ์ญ์
await User.findByIdAndDelete(userId);
return res.status(200).json({
message: "์ ์ ๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์ญ์ ๋์์ต๋๋ค.",
});
} catch (error) {
return res.status(500).json({
message: "์ ์ ์ญ์ ์ค ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.",
error: error.message,
});
}
});
module.exports = router;
2) ์ฃผ์ ๊ธฐ๋ฅ ์ค๋ช
- ๊ด๋ฆฌ์ ๊ถํ ํ์ธ: ๋ก๊ทธ์ธํ ์ฌ์ฉ์๊ฐ ๊ด๋ฆฌ์ ๊ถํ์ ๊ฐ์ง๊ณ ์๋์ง ํ์ธ. ๋ง์ฝ ๊ด๋ฆฌ์๊ฐ ์๋๋ฉด ์ ์ ์ญ์ ๋ฅผ ์ํํ ์ ์๋๋ก ์ ํ.
- ์ ์ ์ฐพ๊ธฐ: ์ญ์ ํ ์ ์ ๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ฐพ๊ณ , ์ ์ ๊ฐ ์กด์ฌํ์ง ์์ผ๋ฉด ์ค๋ฅ๋ฅผ ๋ฐํ.
- ๊ฒ์๋ฌผ, ๋๊ธ, ์ข์์ ์ญ์ : ์ญ์ ๋๋ ์ ์ ๊ฐ ์์ฑํ ๊ฒ์๋ฌผ, ๋๊ธ, ์ข์์ ์ ๋ณด๋ ํจ๊ป ์ญ์ ๋จ. ์ด๋ฅผ ํตํด ์ ์ ์ ๊ด๋ จ๋ ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ ์์ ํ ์ญ์ ๋จ.
- ์ ์ ์ญ์ : ๋ชจ๋ ๊ด๋ จ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ ํ, ์ ์ ์์ฒด๋ฅผ ์ญ์ .