X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=server%2Froutes%2Fchallenges.js;h=2ae1327a73573f8285e555eede96fdbc4f89e1e0;hb=25996aedafba5e983f324ada3db1da59206bec0a;hp=174cf451a0b86e0bb5de050004c1773aa227fdd1;hpb=98db2082fd31e7a7bc0348e31ce119f39dbc31b3;p=vchess.git diff --git a/server/routes/challenges.js b/server/routes/challenges.js index 174cf451..2ae1327a 100644 --- a/server/routes/challenges.js +++ b/server/routes/challenges.js @@ -3,78 +3,50 @@ let router = require("express").Router(); const access = require("../utils/access"); const ChallengeModel = require("../models/Challenge"); +const UserModel = require("../models/User"); //for name check -router.post("/challenges/:vid([0-9]+)", access.logged, access.ajax, (req,res) => { - const vid = req.params["vid"]; - const chall = { - uid: req.userId, - vid: vid, - fen: req.body["fen"], - mainTime: req.body["mainTime"], - increment: req.body["increment"], - nbPlayers: req.body["nbPlayers"], - players: req.body["players"], - }; - const error = ChallengeModel.checkChallenge(chall); - ChallengeModel.create(chall, (err,lastId) => { - res.json(err || {cid: lastId["rowid"]}); - }); +router.get("/challenges", (req,res) => { + ChallengeModel.getByUser(req.query["uid"], (err,challenges) => { + res.json(err || {challenges:challenges}); + }); }); -//// index -//router.get("/challengesbyplayer", access.logged, access.ajax, (req,res) => { -// if (req.query["uid"] != req.user._id) -// return res.json({errmsg: "Not your challenges"}); -// let uid = ObjectID(req.query["uid"]); -// ChallengeModel.getByPlayer(uid, (err, challengeArray) => { -// res.json(err || {challenges: challengeArray}); -// }); -//}); -// -//function createChallenge(vid, from, to, res) -//{ -// ChallengeModel.create(vid, from, to, (err, chall) => { -// res.json(err || { -// // A challenge can be sent using only name, thus 'to' is returned -// to: chall.to, -// cid: chall._id -// }); -// }); -//} -// -//// from[, to][,nameTo] -//router.post("/challenges", access.logged, access.ajax, (req,res) => { -// if (req.body.from != req.user._id) -// return res.json({errmsg: "Identity usurpation"}); -// let from = ObjectID(req.body.from); -// let to = !!req.body.to ? ObjectID(req.body.to) : undefined; -// let nameTo = !!req.body.nameTo ? req.body.nameTo : undefined; -// let vid = ObjectID(req.body.vid); -// if (!to && !!nameTo) -// { -// UserModel.getByName(nameTo, (err,user) => { -// access.checkRequest(res, err, user, "Opponent not found", () => { -// createChallenge(vid, from, user._id, res); -// }); -// }); -// } -// else if (!!to) -// createChallenge(vid, from, to, res); -// else -// createChallenge(vid, from, undefined, res); //automatch -//}); -// -//router.delete("/challenges", access.logged, access.ajax, (req,res) => { -// let cid = ObjectID(req.query.cid); -// ChallengeModel.getById(cid, (err,chall) => { -// access.checkRequest(res, err, chall, "Challenge not found", () => { -// if (!chall.from.equals(req.user._id) && !!chall.to && !chall.to.equals(req.user._id)) -// return res.json({errmsg: "Not your challenge"}); -// ChallengeModel.remove(cid, err => { -// res.json(err || {}); -// }); -// }); -// }); -//}); +router.post("/challenges", access.logged, access.ajax, (req,res) => { + const error = ChallengeModel.checkChallenge(req.body.chall); + if (!!error) + return res.json({errmsg:error}); + let challenge = + { + fen: req.body.chall.fen, + timeControl: req.body.chall.timeControl, + vid: req.body.chall.vid, + uid: req.userId, + to: req.body.chall.to, //string: user name (may be empty) + }; + const insertChallenge = () => { + ChallengeModel.create(challenge, (err) => { + if (!!err) + return res.json(err); + }); + }; + if (!!req.body.chall.to) + { + UserModel.getOne("name", challenge.to, (err,user) => { + if (!!err || !user) + return res.json(err | {errmsg: "Typo in player name"}); + challenge.to = user.id; //ready now to insert challenge + }); + insertChallenge(); + } + else + insertChallenge(); +}); + +router.delete("/challenges", access.logged, access.ajax, (req,res) => { + const cid = req.query.id; + ChallengeModel.remove(cid, req.userId, err => { + res.json(err || {}); //TODO: just "return err" because is empty if no errors + }); +}); module.exports = router;