new routes done + fixed blog
This commit is contained in:
39
api/routes/auth.js
Normal file
39
api/routes/auth.js
Normal file
@ -0,0 +1,39 @@
|
||||
const express = require("express")
|
||||
const { gimmeToken } = require("../util.js")
|
||||
const auth = express.Router()
|
||||
auth.path = "/auth"
|
||||
|
||||
const PASS = process.env.PASS
|
||||
let TOKEN = gimmeToken();
|
||||
|
||||
function authware(req,res,next){
|
||||
const token = req.query.token ? req.query.token : req.body.token
|
||||
|
||||
if(!token)
|
||||
return res.json({ error: 1 })
|
||||
|
||||
if(token!==TOKEN)
|
||||
return res.json({ error: 2 })
|
||||
|
||||
next()
|
||||
}
|
||||
auth.use("/logout", authware)
|
||||
|
||||
auth.get("/login", async (req,res)=>{
|
||||
const pass = req.query.pass
|
||||
|
||||
if(!pass)
|
||||
return res.json({ error: 1 })
|
||||
|
||||
if(pass!==PASS)
|
||||
return res.json({ error: 2 })
|
||||
|
||||
res.json({ error: 0, token: TOKEN })
|
||||
})
|
||||
|
||||
auth.get("/logout", async (req,res)=>{
|
||||
TOKEN = gimmeToken()
|
||||
res.json({ error: 0 })
|
||||
})
|
||||
|
||||
module.exports = { auth, authware }
|
93
api/routes/blog.js
Normal file
93
api/routes/blog.js
Normal file
@ -0,0 +1,93 @@
|
||||
const express = require("express")
|
||||
const { makeID } = require("../util.js")
|
||||
const blog = express.Router()
|
||||
blog.path = "/blog"
|
||||
|
||||
blog.get("/sum", async (req,res)=>{
|
||||
await req.db.connect()
|
||||
const db = await req.db.db("ngn13")
|
||||
const col = await db.collection("posts")
|
||||
const results = await col.find({priv: {$eq: false}}).toArray()
|
||||
await req.db.close()
|
||||
|
||||
let posts = []
|
||||
for(let i = 0;i<results.length;i++){
|
||||
posts.push({
|
||||
"title":results[i]["title"],
|
||||
"desc":results[i]["content"]
|
||||
.substring(0, 140) // a short desc
|
||||
.replaceAll("#", "") // remove all the markdown stuff
|
||||
.replaceAll("*", "")
|
||||
.replaceAll("`", "")
|
||||
.replaceAll("-", "")
|
||||
+ "...", // add "..." to make it look like desc
|
||||
"info":`${results[i]["author"]} | ${results[i]["date"]}`
|
||||
})
|
||||
}
|
||||
|
||||
// reversing so we can get
|
||||
// the latest posts on the top
|
||||
res.json({ error: 0, posts: posts.reverse() })
|
||||
})
|
||||
|
||||
blog.get("/get", async (req,res)=>{
|
||||
const id = req.query.id
|
||||
|
||||
await req.db.connect()
|
||||
const db = await req.db.db("ngn13")
|
||||
const col = await db.collection("posts")
|
||||
const results = await col.find().toArray()
|
||||
await req.db.close()
|
||||
|
||||
for(let i = 0;i<results.length;i++){
|
||||
// id is basically the title of the post
|
||||
// but ve remove the whitespace
|
||||
// and make it lowerspace
|
||||
// for example:
|
||||
// Online Privacy Guide -> onlineprivacyguide
|
||||
if(makeID(results[i]["title"])===id){
|
||||
return res.json(
|
||||
{
|
||||
error: 0,
|
||||
post:{
|
||||
"title": results[i]["title"],
|
||||
// info is the subtitle, for example:
|
||||
// ngn | 01/06/2023
|
||||
"info": `${results[i]["author"]} | ${results[i]["date"]}`,
|
||||
"content": results[i]["content"],
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
res.json({ error: 3 })
|
||||
|
||||
})
|
||||
|
||||
blog.post("/add", async (req,res)=>{
|
||||
console.log("heyy")
|
||||
const title = req.body.title
|
||||
const author = req.body.author
|
||||
const content = req.body.content
|
||||
const priv = req.body.priv
|
||||
console.log(title, author, content, priv)
|
||||
|
||||
if ( !title || !author || !content || !priv )
|
||||
return res.json({ error: 1 })
|
||||
|
||||
await req.db.connect()
|
||||
const db = await req.db.db("ngn13")
|
||||
const col = await db.collection("posts")
|
||||
await col.insertOne({
|
||||
"title":title,
|
||||
"author":author,
|
||||
"date": new Date().toLocaleDateString(),
|
||||
"content":content,
|
||||
"priv": priv
|
||||
})
|
||||
await req.db.close()
|
||||
res.json({ error: 0 })
|
||||
})
|
||||
|
||||
module.exports = blog
|
35
api/routes/projects.js
Normal file
35
api/routes/projects.js
Normal file
@ -0,0 +1,35 @@
|
||||
const express = require("express")
|
||||
const projects = express.Router()
|
||||
projects.path = "/projects"
|
||||
|
||||
projects.get("/get", async (req,res)=>{
|
||||
await req.db.connect()
|
||||
const db = await req.db.db("ngn13")
|
||||
const col = await db.collection("projects")
|
||||
const results = await col.find().toArray()
|
||||
await req.db.close()
|
||||
res.json({ error: 0, projects: results })
|
||||
})
|
||||
|
||||
projects.get("/add", async (req,res)=>{
|
||||
let name = req.query.name;
|
||||
let desc = req.query.desc;
|
||||
let url = req.query.url;
|
||||
|
||||
if (!name || !desc || !url )
|
||||
return res.json({ error: 1 })
|
||||
|
||||
await req.db.connect()
|
||||
const db = await req.db.db("ngn13")
|
||||
const col = await db.collection("projects")
|
||||
await col.insertOne({
|
||||
"name":name,
|
||||
"desc":desc,
|
||||
"url":url,
|
||||
"click":0
|
||||
})
|
||||
await req.db.close()
|
||||
res.json({ error: 0 })
|
||||
})
|
||||
|
||||
module.exports = projects
|
@ -1,12 +1,34 @@
|
||||
const express = require("express")
|
||||
const resources = express.Router()
|
||||
resources.path = "/resources"
|
||||
|
||||
resources.get("/get", async (req,res)=>{
|
||||
await req.db.connect()
|
||||
const col = await req.db.collection("ngn13")
|
||||
const results = col.find().limit(10).toArray()
|
||||
const db = await req.db.db("ngn13")
|
||||
const col = await db.collection("resources")
|
||||
let results = []
|
||||
if(req.query.sum)
|
||||
results = await col.find().limit(10).toArray()
|
||||
else
|
||||
results = await col.find().toArray()
|
||||
await req.db.close()
|
||||
res.json({ error: 0, resources: results })
|
||||
})
|
||||
|
||||
resources.get("/add", async (req,res)=>{
|
||||
let name = req.query.name;
|
||||
let tags = req.query.tags;
|
||||
let url = req.query.url;
|
||||
|
||||
if(!name || !tags || !url)
|
||||
return res.json({"error":1})
|
||||
|
||||
await req.db.connect()
|
||||
const db = await req.db.db("ngn13")
|
||||
const col = await db.collection("resources")
|
||||
await col.insertOne({"name":name, "tags":tags.split(","), "url":url})
|
||||
await req.db.close()
|
||||
res.json({error: 0})
|
||||
})
|
||||
|
||||
module.exports = resources
|
||||
|
Reference in New Issue
Block a user