From 07750f7a646a965f60e21e7a9e523096ef0f0a50 Mon Sep 17 00:00:00 2001 From: tdurieux Date: Sat, 11 Sep 2021 19:03:17 +0200 Subject: [PATCH] fix: allow user to basic access conference information --- src/Conference.ts | 26 +++++++++++++++++++++++++- src/routes/conference.ts | 29 ++++++++++++++++++++--------- 2 files changed, 45 insertions(+), 10 deletions(-) diff --git a/src/Conference.ts b/src/Conference.ts index de48514..ecd4b4a 100644 --- a/src/Conference.ts +++ b/src/Conference.ts @@ -6,7 +6,7 @@ import { ConferenceStatus } from "./types"; export default class Conference { private _data: IConferenceDocument; private _repositories: Repository[] = null; - + constructor(data: IConferenceDocument) { this._data = data; } @@ -79,6 +79,30 @@ export default class Conference { return this._data.status; } + get conferenceID() { + return this._data.conferenceID; + } + + get name() { + return this._data.name; + } + + get startDate() { + return this._data.startDate; + } + + get endDate() { + return this._data.endDate; + } + + get url() { + return this._data.url; + } + + get options() { + return this._data.options; + } + toJSON(opt?: { billing: boolean }): any { const pricePerHourPerRepo = this._data.plan.pricePerRepository / 30; let price = 0; diff --git a/src/routes/conference.ts b/src/routes/conference.ts index 944eb82..c179775 100644 --- a/src/routes/conference.ts +++ b/src/routes/conference.ts @@ -215,20 +215,31 @@ router.get( "/:conferenceID", async (req: express.Request, res: express.Response) => { try { - const user = await getUser(req); const data = await ConferenceModel.findOne({ conferenceID: req.params.conferenceID, }); if (!data) - throw new AnonymousError("conf_not_found", { - object: req.params.conferenceID, - httpStatus: 404, - }); + throw new AnonymousError("conf_not_found", { + object: req.params.conferenceID, + httpStatus: 404, + }); + const user = await getUser(req); const conference = new Conference(data); - isOwnerOrAdmin(conference.ownerIDs, user); - const o: any = conference.toJSON(); - o.repositories = (await conference.repositories()).map((r) => r.toJSON()); - res.json(o); + try { + isOwnerOrAdmin(conference.ownerIDs, user); + const o: any = conference.toJSON(); + o.repositories = (await conference.repositories()).map((r) => r.toJSON()); + res.json(o); + } catch (error) { + return res.json({ + conferenceID: conference.conferenceID, + name: conference.name, + url: conference.url, + startDate: conference.startDate, + endDate: conference.endDate, + options: conference.options, + }) + } } catch (error) { handleError(error, res); }