fix: News now display author

This commit is contained in:
2025-06-13 16:07:11 +02:00
parent 9e420e548e
commit 8fc171b874
3 changed files with 20 additions and 15 deletions

View File

@@ -2,26 +2,28 @@ import { Router } from "express";
import News from "@schemas/News"
import { Perms, adminPerm } from "@/utility";
import capability, { Features } from "@/helpers/capability";
import { IUser } from "@/schemas/User";
const newsRouter = Router()
newsRouter.use(adminPerm(Perms.News))
newsRouter.use(capability.mw(Features.News))
newsRouter.get('/', async (req,res)=>{
res.send(await News.find({},null,{sort: {pinned: -1 ,date: -1}}))
newsRouter.get('/', async (req, res) => {
var news = await News.find(undefined, undefined, { sort: { pinned: -1, date: -1 } }).populate<{ author: Pick<IUser, "fname" | "surname" | "uname"> }>("author", ["fname", "surname", "uname"])
res.send(news)
})
newsRouter.post('/', async (req,res)=>{
await News.create({title: req.body.title, content: req.body.content})
res.status(201).send({status: 201})
newsRouter.post('/', async (req, res) => {
await News.create({ title: req.body.title, content: req.body.content, author: req.user._id })
res.status(201).send({ status: 201 })
})
newsRouter.delete('/:id', async (req,res)=>{
newsRouter.delete('/:id', async (req, res) => {
await News.findByIdAndDelete(req.params.id)
res.send({status: 200})
res.send({ status: 200 })
})
newsRouter.put('/:id', async (req,res)=>{
await News.findByIdAndUpdate(req.params.id, req.body)
res.send({status: 200})
newsRouter.put('/:id', async (req, res) => {
await News.findByIdAndUpdate(req.params.id, { ...req.body, author: req.user._id })
res.send({ status: 200 })
})
export {newsRouter};
export { newsRouter };

View File

@@ -10,13 +10,14 @@ import usettings from "@/helpers/usettings";
import Grade from "@schemas/Grade";
import { createHash } from "node:crypto";
import Inbox from "@/schemas/Inbox";
import { IUser } from "@/schemas/User";
export const appRouter = Router();
appRouter.use(islogged)
appRouter.get("/news", capability.mw(Features.News), async (req, res) => {
var news = await News.find({"visible": {"$ne": false}}, {_id: 0, visible: 0}, {sort: {pinned: -1 ,date: -1}})
var news = await News.find({"visible": {"$ne": false}}, {_id: 0, visible: 0}, {sort: {pinned: -1 ,date: -1}}).populate<{author: Pick<IUser, "fname" | "surname" | "uname">}>("author", ["fname", "surname", "uname"])
res.send(news)
})

View File

@@ -1,11 +1,12 @@
import mongoose, { Schema } from "mongoose"
import mongoose, { Schema, Types } from "mongoose"
interface INews {
content: string;
title: string;
date: Date;
visible?: boolean;
pinned?: boolean
pinned?: boolean;
author: Types.ObjectId
}
const newsSchema = new Schema<INews>({
@@ -13,7 +14,8 @@ const newsSchema = new Schema<INews>({
title: {type: String, required: true},
date: {type: Date, requred: true, default: Date.now},
visible: {type: Boolean, default: false},
pinned: {type: Boolean, default: false}
pinned: {type: Boolean, default: false},
author: {type: "ObjectId", ref: "logins", required: true}
})
export default mongoose.model("news", newsSchema)