41 lines
1.3 KiB
JavaScript
41 lines
1.3 KiB
JavaScript
const express = require("express")
|
|
const multer = require("multer")
|
|
const fs = require("fs")
|
|
const { uploadProfileImage } = require("../../services/supabase/supabaseUploadService")
|
|
const { validateImage } = require("../../utils/validateImage")
|
|
const authMiddleware = require("../../middleware/authMiddleware")
|
|
const { updateAvatarUrl, getUserProfile } = require("../../services/profile/myProfileService")
|
|
|
|
const router = express.Router()
|
|
const upload = multer({ dest: "uploads/" })
|
|
|
|
router.post("/avatar", authMiddleware, upload.single("file"), async (req, res) => {
|
|
try {
|
|
const file = req.file
|
|
if (!file) return res.status(400).json({ error: "No file uploaded" })
|
|
|
|
validateImage({ mimetype: file.mimetype, size: file.size })
|
|
|
|
const data = fs.readFileSync(file.path)
|
|
const url = await uploadProfileImage(req.user.userId, { data, mimetype: file.mimetype })
|
|
fs.unlinkSync(file.path)
|
|
|
|
const updated = await updateAvatarUrl(req.user.userId, url)
|
|
res.json({ message: "Avatar updated", user: updated })
|
|
} catch (err) {
|
|
console.error(err)
|
|
res.status(400).json({ error: err.message })
|
|
}
|
|
})
|
|
|
|
router.get("/me", authMiddleware, async (req, res) => {
|
|
try {
|
|
const user = await getUserProfile(req.user.id)
|
|
res.json(user)
|
|
} catch (err) {
|
|
res.status(400).json({ error: err.message })
|
|
}
|
|
})
|
|
|
|
module.exports = router
|