MeteoriteH/Back/routes/users.js

65 lines
1.7 KiB
JavaScript

const express = require("express")
const router = express.Router()
const { requireAuth } = require("./../middleware/authmiddleware")
const User = require("./../model/user.js")
const games = require("./../model/games.js")
const bodyParser = require("body-parser")
router.use(bodyParser.json())
router.post("/api/users/search", async (req, res) => {
const resultsPerPage = 12
let page = req.body.page ?? 0
if (page != 0) {
page -= 1
}
let { searchquery } = req.body
function escapeRegex(text) {
return text?.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&")
}
const regex = new RegExp(escapeRegex(searchquery), "gi")
//const pages = await User.countDocuments({username: regex})/resultsPerPage
const response = await User.find({ username: regex })
.limit(resultsPerPage)
.skip(0 + parseFloat(page) * resultsPerPage)
.select(["userid", "username"])
.lean()
let responsecount = await User.countDocuments({ username: regex })
res.json({
data: response,
pages: Math.ceil(Math.max(responsecount / resultsPerPage, 1)),
})
})
router.get(
["/users/:userid/canmanage/:gameid", "//users/:userid/canmanage/:gameid"],
async (req, res) => {
const user = await User.findOne({
userid: req.params.userid,
}) /*.lean()*/
if (!user) {
return res.json({ Success: false, CanManage: false })
}
const game = await games.findOne({ idofgame: req.params.gameid }).lean()
if (!game) {
return res.json({ Success: false, CanManage: false })
}
if (
game.useridofowner === user.userid ||
user.userid === 0 ||
user.userid === 18
) {
return res.json({ Success: true, CanManage: true })
}
return res.json({ Success: true, CanManage: false })
},
)
module.exports = router