From d1f22d755b0ee517f3a27dd8f95eaa126350c1ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafael=20L=C3=A1szl=C3=B3?= <rlacko99@gmail.com> Date: Tue, 20 Oct 2020 18:26:38 +0200 Subject: [PATCH] add prettier config and reformat all files --- .prettierrc.json | 6 +++ src/index.ts | 33 ++++++------- src/middlewares/auth/authenticated.ts | 23 +++++---- src/middlewares/auth/complete.ts | 59 +++++++++++++----------- src/middlewares/auth/login.ts | 14 +++--- src/middlewares/auth/logout.ts | 12 ++--- src/middlewares/auth/refreshToken.ts | 33 ++++++++----- src/middlewares/news/addNews.ts | 5 +- src/middlewares/news/deleteNews.ts | 3 +- src/middlewares/news/getNews.ts | 3 +- src/middlewares/news/getNewsList.ts | 3 +- src/middlewares/user/addUser.ts | 30 ++++++------ src/middlewares/user/addWarning.ts | 10 ++-- src/middlewares/user/deleteUser.ts | 9 ++-- src/middlewares/user/deleteWarning.ts | 14 ++++-- src/middlewares/user/getOwnUser.ts | 15 +++--- src/middlewares/user/getUser.ts | 9 ++-- src/middlewares/user/getUsersList.ts | 34 ++++++++------ src/middlewares/user/getWarning.ts | 10 ++-- src/middlewares/user/getWarningsList.ts | 14 ++++-- src/middlewares/user/responseUser.ts | 8 ++-- src/middlewares/user/responseUserList.ts | 8 ++-- src/middlewares/user/updateUser.ts | 48 +++++++++---------- src/middlewares/user/updateWarning.ts | 14 ++++-- src/middlewares/utils/emptyResponse.ts | 6 +-- src/models/NewsSchema.ts | 20 ++++---- src/models/ProfileSchema.ts | 45 +++++++++--------- src/models/WarningSchema.ts | 31 +++++++------ src/models/user.interface.ts | 12 ++--- src/routes/auth.ts | 22 ++++----- src/routes/news.ts | 5 +- src/routes/user.ts | 46 +++++++++--------- src/utils/auth.ts | 21 ++++----- src/utils/declarations/session.d.ts | 12 ++--- src/utils/env.ts | 7 ++- 35 files changed, 341 insertions(+), 303 deletions(-) create mode 100644 .prettierrc.json diff --git a/.prettierrc.json b/.prettierrc.json new file mode 100644 index 00000000..f0eb61e0 --- /dev/null +++ b/.prettierrc.json @@ -0,0 +1,6 @@ +{ + "trailingComma": "es5", + "tabWidth": 2, + "semi": true, + "singleQuote": false +} diff --git a/src/index.ts b/src/index.ts index 187d3597..3aea492c 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,9 +1,11 @@ import "./utils/env"; -import express, { Request, Response, NextFunction, Application } from "express"; -import mongoose from "mongoose"; + +import express, { Application, NextFunction, Request, Response } from "express"; + +import authRoute from "./routes/auth"; import bodyParser from "body-parser"; import expressSession from "express-session"; -import authRoute from "./routes/auth"; +import mongoose from "mongoose"; import newsRoute from "./routes/news"; import usersRoute from "./routes/user"; @@ -11,12 +13,12 @@ mongoose .connect("mongodb://localhost:27017/bodysch", { useNewUrlParser: true, useCreateIndex: true, - useUnifiedTopology: true + useUnifiedTopology: true, }) .then(() => { console.log("Connected to database"); }) - .catch(err => { + .catch((err) => { console.log( "MongoDB connection error. Please make sure MongoDB is running. " + err ); @@ -27,18 +29,19 @@ const app: Application = express(); app.use(bodyParser.json()); // for parsing application/json app.use(bodyParser.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded -app.use(expressSession({ - secret: process.env.SESSION_SECRET || "secret", - resave: false, - saveUninitialized: true, - cookie: { secure: false } -})); +app.use( + expressSession({ + secret: process.env.SESSION_SECRET || "secret", + resave: false, + saveUninitialized: true, + cookie: { secure: false }, + }) +); app.get("/api/v1/", (req: Request, res: Response) => { let message = "World!"; - if(req.session!.user) - message = req.session!.user!.name || "World!"; - res.send( "Hello " + message) + if (req.session!.user) message = req.session!.user!.name || "World!"; + res.send("Hello " + message); }); // Register routes @@ -49,8 +52,6 @@ newsRoute(app); usersRoute(app); - - app.use((err: any, req: Request, res: Response, next: NextFunction) => { res.status(500).send("Houston, we have a problem!"); diff --git a/src/middlewares/auth/authenticated.ts b/src/middlewares/auth/authenticated.ts index 139a50d9..8e9d0301 100644 --- a/src/middlewares/auth/authenticated.ts +++ b/src/middlewares/auth/authenticated.ts @@ -1,12 +1,15 @@ -import {Request, Response, NextFunction} from "express"; +import { NextFunction, Request, Response } from "express"; -const authenticated = () => (req : Request, res : Response, next: NextFunction ) =>{ - if(req.session!.user) - next(); - else{ - res.status(403); - res.json({message: "You have to login to see this page"}); - } -} +const authenticated = () => ( + req: Request, + res: Response, + next: NextFunction +) => { + if (req.session!.user) next(); + else { + res.status(403); + res.json({ message: "You have to login to see this page" }); + } +}; -export default authenticated; \ No newline at end of file +export default authenticated; diff --git a/src/middlewares/auth/complete.ts b/src/middlewares/auth/complete.ts index 98856568..28c3f98f 100644 --- a/src/middlewares/auth/complete.ts +++ b/src/middlewares/auth/complete.ts @@ -1,33 +1,36 @@ -import { Request, Response } from 'express'; -import {oauth2, scope} from '../../utils/auth' +import { Request, Response } from "express"; +import { oauth2, scope } from "../../utils/auth"; + import axios from "axios"; +const complete = () => async (req: Request, res: Response) => { + const tokenConfig = { + code: req.query.code, + scope: scope, + redirect_uri: "", + }; -const complete = () => async (req: Request, res: Response) => { - const tokenConfig = { - code: req.query.code, - scope: scope, - redirect_uri: "" - }; - - try { - const token = await oauth2().authorizationCode.getToken(tokenConfig); - await axios.get(`https://auth.sch.bme.hu/api/profile/?access_token=${token.access_token}`) - .then( (response) => { - req.session!.user = { - id: String(response.data.internal_id), - email: String(response.data.mail), - name: `${response.data.sn} ${response.data.givenName}` , - token, - }; - }) - .catch(function (error) { - console.log(error); - }); - res.redirect('/'); - } catch (error) { - console.log('Access Token Error', error.message); - } + try { + const token = await oauth2().authorizationCode.getToken(tokenConfig); + await axios + .get( + `https://auth.sch.bme.hu/api/profile/?access_token=${token.access_token}` + ) + .then((response) => { + req.session!.user = { + id: String(response.data.internal_id), + email: String(response.data.mail), + name: `${response.data.sn} ${response.data.givenName}`, + token, + }; + }) + .catch(function (error) { + console.log(error); + }); + res.redirect("/"); + } catch (error) { + console.log("Access Token Error", error.message); + } }; -export default complete; \ No newline at end of file +export default complete; diff --git a/src/middlewares/auth/login.ts b/src/middlewares/auth/login.ts index a1efd4d7..eeb5cad4 100644 --- a/src/middlewares/auth/login.ts +++ b/src/middlewares/auth/login.ts @@ -1,13 +1,11 @@ -import { Request, Response } from 'express'; -import {oauth2, scope} from '../../utils/auth' - +import { Request, Response } from "express"; +import { oauth2, scope } from "../../utils/auth"; const authorizationUri = oauth2().authorizationCode.authorizeURL({ - scope: scope, + scope: scope, }); +const login = () => (req: Request, res: Response) => + res.redirect(authorizationUri); -const login = () => (req: Request, res: Response) => res.redirect(authorizationUri); - - -export default login; \ No newline at end of file +export default login; diff --git a/src/middlewares/auth/logout.ts b/src/middlewares/auth/logout.ts index 9367d85f..104371be 100644 --- a/src/middlewares/auth/logout.ts +++ b/src/middlewares/auth/logout.ts @@ -1,8 +1,8 @@ -import { Request, Response } from 'express'; +import { Request, Response } from "express"; -const logout = () => (req : Request, res : Response) =>{ - req.session!.destroy(() => console.log("user logged out.")); - res.redirect("/"); -} +const logout = () => (req: Request, res: Response) => { + req.session!.destroy(() => console.log("user logged out.")); + res.redirect("/"); +}; -export default logout; \ No newline at end of file +export default logout; diff --git a/src/middlewares/auth/refreshToken.ts b/src/middlewares/auth/refreshToken.ts index 1d857bb1..4f6c0e7c 100644 --- a/src/middlewares/auth/refreshToken.ts +++ b/src/middlewares/auth/refreshToken.ts @@ -1,18 +1,29 @@ -import { Request, Response, NextFunction } from 'express'; -import { oauth2 } from '../../utils/auth' +import { NextFunction, Request, Response } from "express"; -const refreshToken = () => async (req: Request, res: Response, next: NextFunction) => { +import { oauth2 } from "../../utils/auth"; + +const refreshToken = () => async ( + req: Request, + res: Response, + next: NextFunction +) => { if (req.session && req.session.user) { - try{ + try { let accessToken = oauth2().accessToken.create(req.session.user.token); - if (accessToken.expired(Number(process.env.AUTH_TOKEN_EXPIRATION_WINDOW_IN_SECONDS))) { - req.session.user.token = await accessToken.refresh().then(accessToken => accessToken.token); - } - }catch (error) { - console.log('Error refreshing access token: ', error.message); + if ( + accessToken.expired( + Number(process.env.AUTH_TOKEN_EXPIRATION_WINDOW_IN_SECONDS) + ) + ) { + req.session.user.token = await accessToken + .refresh() + .then((accessToken) => accessToken.token); + } + } catch (error) { + console.log("Error refreshing access token: ", error.message); } } next(); -} +}; -export default refreshToken; \ No newline at end of file +export default refreshToken; diff --git a/src/middlewares/news/addNews.ts b/src/middlewares/news/addNews.ts index 43c6437f..026bea1e 100644 --- a/src/middlewares/news/addNews.ts +++ b/src/middlewares/news/addNews.ts @@ -1,4 +1,5 @@ -import { Request, Response, NextFunction } from "express"; +import { NextFunction, Request, Response } from "express"; + import News from "../../models/NewsSchema"; const addNews = () => { @@ -8,7 +9,7 @@ const addNews = () => { news.text = req.body.text; news.publishedAt = new Date().toDateString(); - news.save(err => { + news.save((err) => { if (err) { } else { res.status(201); diff --git a/src/middlewares/news/deleteNews.ts b/src/middlewares/news/deleteNews.ts index 7f633037..43827378 100644 --- a/src/middlewares/news/deleteNews.ts +++ b/src/middlewares/news/deleteNews.ts @@ -1,4 +1,5 @@ -import { Request, Response, NextFunction } from "express"; +import { NextFunction, Request, Response } from "express"; + import News from "../../models/NewsSchema"; const deleteNews = () => { diff --git a/src/middlewares/news/getNews.ts b/src/middlewares/news/getNews.ts index e48a3d6c..f99829e7 100644 --- a/src/middlewares/news/getNews.ts +++ b/src/middlewares/news/getNews.ts @@ -1,4 +1,5 @@ -import { Request, Response, NextFunction } from "express"; +import { NextFunction, Request, Response } from "express"; + import News from "../../models/NewsSchema"; const getNews = () => { diff --git a/src/middlewares/news/getNewsList.ts b/src/middlewares/news/getNewsList.ts index c55aa8a2..3f26b900 100644 --- a/src/middlewares/news/getNewsList.ts +++ b/src/middlewares/news/getNewsList.ts @@ -1,4 +1,5 @@ -import { Request, Response, NextFunction } from "express"; +import { NextFunction, Request, Response } from "express"; + import News from "../../models/NewsSchema"; const getNewsList = () => { diff --git a/src/middlewares/user/addUser.ts b/src/middlewares/user/addUser.ts index af47ce6e..ede1490d 100644 --- a/src/middlewares/user/addUser.ts +++ b/src/middlewares/user/addUser.ts @@ -1,29 +1,27 @@ -import { Request, Response, NextFunction } from 'express'; +import { NextFunction, Request, Response } from "express"; import Profile, { Role } from "../../models/ProfileSchema"; const addUser = () => (req: Request, res: Response, next: NextFunction) => { const profile = new Profile(); - - const fields = ['studentCardNumber', 'roomNumber', 'picture']; - fields.forEach(field => { - const value = req.body[field] - if(value) - profile.set(field, value); + + const fields = ["studentCardNumber", "roomNumber", "picture"]; + fields.forEach((field) => { + const value = req.body[field]; + if (value) profile.set(field, value); }); - + profile.external_id = req.session!.user!.id; profile.role = Role.User; - - profile.save(err => { + + profile.save((err) => { if (err) { res.status(400); - } - else { + } else { res.status(201); - res.data = {profile}; + res.data = { profile }; } - next() + next(); }); -} +}; -export default addUser; \ No newline at end of file +export default addUser; diff --git a/src/middlewares/user/addWarning.ts b/src/middlewares/user/addWarning.ts index e7eae54e..a606fd11 100644 --- a/src/middlewares/user/addWarning.ts +++ b/src/middlewares/user/addWarning.ts @@ -1,7 +1,7 @@ -import {Request, Response, NextFunction} from 'express'; +import { NextFunction, Request, Response } from "express"; -const addWarning = () => (req: Request, res: Response, next: NextFunction) =>{ - res.send("Add warning"); -} +const addWarning = () => (req: Request, res: Response, next: NextFunction) => { + res.send("Add warning"); +}; -export default addWarning; \ No newline at end of file +export default addWarning; diff --git a/src/middlewares/user/deleteUser.ts b/src/middlewares/user/deleteUser.ts index fe4eb181..ac37f253 100644 --- a/src/middlewares/user/deleteUser.ts +++ b/src/middlewares/user/deleteUser.ts @@ -1,5 +1,6 @@ -import { Request, Response, NextFunction } from 'express'; -import Profile from '../../models/ProfileSchema'; +import { NextFunction, Request, Response } from "express"; + +import Profile from "../../models/ProfileSchema"; const deletUser = () => (req: Request, res: Response, next: NextFunction) => { Profile.findByIdAndDelete(req.params.id, (error) => { @@ -10,6 +11,6 @@ const deletUser = () => (req: Request, res: Response, next: NextFunction) => { } next(); }); -} +}; -export default deletUser; \ No newline at end of file +export default deletUser; diff --git a/src/middlewares/user/deleteWarning.ts b/src/middlewares/user/deleteWarning.ts index 90ca8a2d..fc39c12a 100644 --- a/src/middlewares/user/deleteWarning.ts +++ b/src/middlewares/user/deleteWarning.ts @@ -1,7 +1,11 @@ -import {Request, Response, NextFunction} from 'express'; +import { NextFunction, Request, Response } from "express"; -const deleteWarning = () => (req: Request, res: Response, next: NextFunction) =>{ - res.send("Delete warning"); -} +const deleteWarning = () => ( + req: Request, + res: Response, + next: NextFunction +) => { + res.send("Delete warning"); +}; -export default deleteWarning; \ No newline at end of file +export default deleteWarning; diff --git a/src/middlewares/user/getOwnUser.ts b/src/middlewares/user/getOwnUser.ts index 5a8f5ed2..d236dd46 100644 --- a/src/middlewares/user/getOwnUser.ts +++ b/src/middlewares/user/getOwnUser.ts @@ -1,11 +1,12 @@ -import { Request, Response, NextFunction } from 'express'; -import Profile from '../../models/ProfileSchema'; +import { NextFunction, Request, Response } from "express"; + +import Profile from "../../models/ProfileSchema"; const getOwnUser = () => (req: Request, res: Response, next: NextFunction) => { - if(!req.session!.user) { - return res.json({loggedIn: false}) + if (!req.session!.user) { + return res.json({ loggedIn: false }); } - res.json({...req.session!.user, loggedIn: true}); -} + res.json({ ...req.session!.user, loggedIn: true }); +}; -export default getOwnUser; \ No newline at end of file +export default getOwnUser; diff --git a/src/middlewares/user/getUser.ts b/src/middlewares/user/getUser.ts index 0f165ef4..21204b25 100644 --- a/src/middlewares/user/getUser.ts +++ b/src/middlewares/user/getUser.ts @@ -1,5 +1,6 @@ -import { Request, Response, NextFunction } from 'express'; -import Profile from '../../models/ProfileSchema'; +import { NextFunction, Request, Response } from "express"; + +import Profile from "../../models/ProfileSchema"; const getUser = () => (req: Request, res: Response, next: NextFunction) => { Profile.findById(req.params.id, (error, profile) => { @@ -12,6 +13,6 @@ const getUser = () => (req: Request, res: Response, next: NextFunction) => { } next(); }); -} +}; -export default getUser; \ No newline at end of file +export default getUser; diff --git a/src/middlewares/user/getUsersList.ts b/src/middlewares/user/getUsersList.ts index 5cd7a515..4f910011 100644 --- a/src/middlewares/user/getUsersList.ts +++ b/src/middlewares/user/getUsersList.ts @@ -1,17 +1,21 @@ -import {Request, Response, NextFunction} from 'express'; -import Profile from '../../models/ProfileSchema'; +import { NextFunction, Request, Response } from "express"; -const getUsersList = () => (req: Request, res: Response, next: NextFunction) =>{ - Profile.find({}, (err, profiles) =>{ - if(err) { - res.status(400); - } - else{ - res.status(200); - res.data = {profiles} - } - next(); - }) -} +import Profile from "../../models/ProfileSchema"; -export default getUsersList; \ No newline at end of file +const getUsersList = () => ( + req: Request, + res: Response, + next: NextFunction +) => { + Profile.find({}, (err, profiles) => { + if (err) { + res.status(400); + } else { + res.status(200); + res.data = { profiles }; + } + next(); + }); +}; + +export default getUsersList; diff --git a/src/middlewares/user/getWarning.ts b/src/middlewares/user/getWarning.ts index d97d5d25..cd0c5a2c 100644 --- a/src/middlewares/user/getWarning.ts +++ b/src/middlewares/user/getWarning.ts @@ -1,7 +1,7 @@ -import {Request, Response, NextFunction} from 'express'; +import { NextFunction, Request, Response } from "express"; -const getWarning = () => (req: Request, res: Response, next: NextFunction) =>{ - res.send("Get warning"); -} +const getWarning = () => (req: Request, res: Response, next: NextFunction) => { + res.send("Get warning"); +}; -export default getWarning; \ No newline at end of file +export default getWarning; diff --git a/src/middlewares/user/getWarningsList.ts b/src/middlewares/user/getWarningsList.ts index c4cff031..97b24086 100644 --- a/src/middlewares/user/getWarningsList.ts +++ b/src/middlewares/user/getWarningsList.ts @@ -1,7 +1,11 @@ -import {Request, Response, NextFunction} from 'express'; +import { NextFunction, Request, Response } from "express"; -const getWarningsList = () => (req: Request, res: Response, next: NextFunction) =>{ - res.send("Get warnings"); -} +const getWarningsList = () => ( + req: Request, + res: Response, + next: NextFunction +) => { + res.send("Get warnings"); +}; -export default getWarningsList; \ No newline at end of file +export default getWarningsList; diff --git a/src/middlewares/user/responseUser.ts b/src/middlewares/user/responseUser.ts index 07d6958c..2c61d7d4 100644 --- a/src/middlewares/user/responseUser.ts +++ b/src/middlewares/user/responseUser.ts @@ -1,7 +1,7 @@ -import { Request, Response, NextFunction, response } from 'express'; +import { NextFunction, Request, Response, response } from "express"; const responseUser = () => (req: Request, res: Response) => { - res.json(res.data.profile); -} + res.json(res.data.profile); +}; -export default responseUser; \ No newline at end of file +export default responseUser; diff --git a/src/middlewares/user/responseUserList.ts b/src/middlewares/user/responseUserList.ts index 364b3c49..fda9d94b 100644 --- a/src/middlewares/user/responseUserList.ts +++ b/src/middlewares/user/responseUserList.ts @@ -1,7 +1,7 @@ -import { Request, Response, NextFunction, response } from 'express'; +import { NextFunction, Request, Response, response } from "express"; const responseUserList = () => (req: Request, res: Response) => { - res.json(res.data.profiles); -} + res.json(res.data.profiles); +}; -export default responseUserList; \ No newline at end of file +export default responseUserList; diff --git a/src/middlewares/user/updateUser.ts b/src/middlewares/user/updateUser.ts index 2097af52..bc145a94 100644 --- a/src/middlewares/user/updateUser.ts +++ b/src/middlewares/user/updateUser.ts @@ -1,29 +1,25 @@ -import {Request, Response, NextFunction} from 'express'; -import Profile from '../../models/ProfileSchema'; +import { NextFunction, Request, Response } from "express"; + +import Profile from "../../models/ProfileSchema"; const updateUser = () => (req: Request, res: Response, next: NextFunction) => { - const validFields = ['studentCardNumber', 'roomNumber', 'picture']; - Profile.findOne( - {_id : req.params.id}, - (error, profile) => { - res.status(200); - if (error) { - res.status(400); - } - else { - if(profile){ - validFields.forEach(field => { - const value = req.body[field] - if(value) - profile.set(field, value); - }); - profile.save(); - res.data = {profile}; - } - } - next(); - } - ); -} + const validFields = ["studentCardNumber", "roomNumber", "picture"]; + Profile.findOne({ _id: req.params.id }, (error, profile) => { + res.status(200); + if (error) { + res.status(400); + } else { + if (profile) { + validFields.forEach((field) => { + const value = req.body[field]; + if (value) profile.set(field, value); + }); + profile.save(); + res.data = { profile }; + } + } + next(); + }); +}; -export default updateUser; \ No newline at end of file +export default updateUser; diff --git a/src/middlewares/user/updateWarning.ts b/src/middlewares/user/updateWarning.ts index 6ff3f0be..25f2f568 100644 --- a/src/middlewares/user/updateWarning.ts +++ b/src/middlewares/user/updateWarning.ts @@ -1,7 +1,11 @@ -import {Request, Response, NextFunction} from 'express'; +import { NextFunction, Request, Response } from "express"; -const updateWarning = () => (req: Request, res: Response, next: NextFunction) =>{ - res.send("Update warning"); -} +const updateWarning = () => ( + req: Request, + res: Response, + next: NextFunction +) => { + res.send("Update warning"); +}; -export default updateWarning; \ No newline at end of file +export default updateWarning; diff --git a/src/middlewares/utils/emptyResponse.ts b/src/middlewares/utils/emptyResponse.ts index db1e8cd2..a8113f2d 100644 --- a/src/middlewares/utils/emptyResponse.ts +++ b/src/middlewares/utils/emptyResponse.ts @@ -1,7 +1,5 @@ -import { Request, Response } from 'express'; - - +import { Request, Response } from "express"; const emptyResponse = () => (req: Request, res: Response) => res.json({}); -export default emptyResponse; \ No newline at end of file +export default emptyResponse; diff --git a/src/models/NewsSchema.ts b/src/models/NewsSchema.ts index 36a42fe0..5d0ad367 100644 --- a/src/models/NewsSchema.ts +++ b/src/models/NewsSchema.ts @@ -1,9 +1,9 @@ -import { Document, Schema, model } from 'mongoose'; +import { Document, Schema, model } from "mongoose"; export interface INews extends Document { - title : string - text : string - /* author : { + title: string; + text: string; + /* author : { // id: IUser["_id"], userName: string, }, @@ -11,13 +11,13 @@ export interface INews extends Document { // id: IUser["_id"], userName: string, }, */ - publishedAt: string + publishedAt: string; } const NewsSchema = new Schema({ - title : { type: String, required: true }, - text : { type: String, required: true }, - /* author : { + title: { type: String, required: true }, + text: { type: String, required: true }, + /* author : { id: { type: Schema.Types.ObjectId, required: true }, userName: { type: String, required: true } }, @@ -25,7 +25,7 @@ const NewsSchema = new Schema({ id: { type: Schema.Types.ObjectId, required: true }, userName: { type: String, required: true } }, */ - publishedAt: { type: String, required: true }, + publishedAt: { type: String, required: true }, }); -export default model<INews>('News', NewsSchema); \ No newline at end of file +export default model<INews>("News", NewsSchema); diff --git a/src/models/ProfileSchema.ts b/src/models/ProfileSchema.ts index 9e1aef52..9c59d86b 100644 --- a/src/models/ProfileSchema.ts +++ b/src/models/ProfileSchema.ts @@ -1,31 +1,32 @@ -import { Document, Schema, model } from 'mongoose'; -import { IWarnings, WarningSchema } from './WarningSchema'; -import { Admin } from 'mongodb'; +import { Document, Schema, model } from "mongoose"; +import { IWarnings, WarningSchema } from "./WarningSchema"; + +import { Admin } from "mongodb"; export enum Role { - Admin, - Staff, - User, + Admin, + Staff, + User, } export interface IProfile extends Document { - external_id: string, - studentCardNumber: string, - roomNumber?: string, - picture: string, - role: Role.Admin | Role.Staff | Role.User, - email?: string, - name?: string, - warnings: [IWarnings] | [], -}; + external_id: string; + studentCardNumber: string; + roomNumber?: string; + picture: string; + role: Role.Admin | Role.Staff | Role.User; + email?: string; + name?: string; + warnings: [IWarnings] | []; +} const ProfileSchema = new Schema({ - external_id: {type: String, required: true, unique : true, dropDups: true }, - studentCardNumber: {type: String, required: true }, - roomNumber: {type: String}, - picture: {type: String}, - role: {type: String, required: true}, - warnings: [WarningSchema] + external_id: { type: String, required: true, unique: true, dropDups: true }, + studentCardNumber: { type: String, required: true }, + roomNumber: { type: String }, + picture: { type: String }, + role: { type: String, required: true }, + warnings: [WarningSchema], }); -export default model<IProfile>('Profile', ProfileSchema); \ No newline at end of file +export default model<IProfile>("Profile", ProfileSchema); diff --git a/src/models/WarningSchema.ts b/src/models/WarningSchema.ts index 8eec29a2..a74a4d64 100644 --- a/src/models/WarningSchema.ts +++ b/src/models/WarningSchema.ts @@ -1,19 +1,22 @@ -import { Schema } from 'mongoose'; +import { Schema } from "mongoose"; -export interface IWarnings extends Document{ - text: string, - date: Date, - given_by: { - _id: string, - name: string, - } +export interface IWarnings extends Document { + text: string; + date: Date; + given_by: { + _id: string; + name: string; + }; } export const WarningSchema = new Schema({ - text: {type: String, required: true}, - date: {type: Date, required: true}, - given_by: {required: true, type: { - _id: {type: String, required: true}, - name: {String, required: true}, - }} + text: { type: String, required: true }, + date: { type: Date, required: true }, + given_by: { + required: true, + type: { + _id: { type: String, required: true }, + name: { String, required: true }, + }, + }, }); diff --git a/src/models/user.interface.ts b/src/models/user.interface.ts index 50df6043..d571e690 100644 --- a/src/models/user.interface.ts +++ b/src/models/user.interface.ts @@ -1,8 +1,8 @@ import { Token } from "simple-oauth2"; -export interface User{ - email: string, - name: string, - id: string, - token: Token, -} \ No newline at end of file +export interface User { + email: string; + name: string; + id: string; + token: Token; +} diff --git a/src/routes/auth.ts b/src/routes/auth.ts index beb5f88f..8599046d 100644 --- a/src/routes/auth.ts +++ b/src/routes/auth.ts @@ -1,15 +1,15 @@ -import { Application } from 'express'; -import login from '../middlewares/auth/login'; -import complete from '../middlewares/auth/complete'; -import logout from '../middlewares/auth/logout'; -import authenticated from '../middlewares/auth/authenticated'; +import { Application } from "express"; +import authenticated from "../middlewares/auth/authenticated"; +import complete from "../middlewares/auth/complete"; +import login from "../middlewares/auth/login"; +import logout from "../middlewares/auth/logout"; - const authRoute = (app: Application): void => { - app.get('/api/v1/login', login() ); +const authRoute = (app: Application): void => { + app.get("/api/v1/login", login()); - app.get('/api/v1/complete', complete() ); + app.get("/api/v1/complete", complete()); - app.get('/api/v1/logout', authenticated(), logout() ); -} + app.get("/api/v1/logout", authenticated(), logout()); +}; -export default authRoute; \ No newline at end of file +export default authRoute; diff --git a/src/routes/news.ts b/src/routes/news.ts index b4affe04..f5b6b052 100644 --- a/src/routes/news.ts +++ b/src/routes/news.ts @@ -1,8 +1,9 @@ import { Application, Response } from "express"; -import getNewsListMiddleware from "../middlewares/news/getNewsList"; + import addNews from "../middlewares/news/addNews"; -import getNews from "../middlewares/news/getNews"; import deleteNews from "../middlewares/news/deleteNews"; +import getNews from "../middlewares/news/getNews"; +import getNewsListMiddleware from "../middlewares/news/getNewsList"; export default (app: Application): void => { app.get("/api/v1/news", getNewsListMiddleware(), (req, res: Response) => { diff --git a/src/routes/user.ts b/src/routes/user.ts index 1552ad58..4f7c00c6 100644 --- a/src/routes/user.ts +++ b/src/routes/user.ts @@ -1,44 +1,42 @@ -import { Application } from 'express'; +import { Application } from "express"; +import addUser from "../middlewares/user/addUser"; import addWarning from "../middlewares/user/addWarning"; +import authenticated from "../middlewares/auth/authenticated"; import deleteUser from "../middlewares/user/deleteUser"; import deleteWarning from "../middlewares/user/deleteWarning"; -import getUser from "../middlewares/user/getUser"; +import emptyResponse from "../middlewares/utils/emptyResponse"; import getOwnUser from "../middlewares/user/getOwnUser"; +import getUser from "../middlewares/user/getUser"; import getUsersList from "../middlewares/user/getUsersList"; import getWarning from "../middlewares/user/getWarning"; import getWarningsList from "../middlewares/user/getWarningsList"; +import responseUser from "../middlewares/user/responseUser"; +import responseUserList from "../middlewares/user/responseUserList"; import updateUser from "../middlewares/user/updateUser"; import updateWarning from "../middlewares/user/updateWarning"; -import addUser from '../middlewares/user/addUser'; -import authenticated from '../middlewares/auth/authenticated'; -import emptyResponse from '../middlewares/utils/emptyResponse'; -import responseUser from '../middlewares/user/responseUser'; -import responseUserList from '../middlewares/user/responseUserList'; +const usersRoute = (app: Application): void => { + app.get("/api/v1/users", authenticated(), getUsersList(), responseUserList()); + + app.post("/api/v1/users", authenticated(), addUser(), responseUser()); + app.get("/api/v1/users/me", getOwnUser(), responseUser()); - const usersRoute = (app: Application): void => { - app.get('/api/v1/users', authenticated(), getUsersList(), responseUserList()); + app.get("/api/v1/users/:id", getUser(), responseUser()); - app.post('/api/v1/users', authenticated(), addUser(), responseUser()); + app.get("/api/v1/users/:id/warnings", getWarningsList()); - app.get('/api/v1/users/me', getOwnUser(), responseUser() ); - - app.get('/api/v1/users/:id', getUser(), responseUser() ); + app.get("/api/v1/users/:userId/warnings/:warningId", getWarning()); - app.get('/api/v1/users/:id/warnings', getWarningsList() ); - - app.get('/api/v1/users/:userId/warnings/:warningId', getWarning() ); + app.post("/api/v1/users/:id/warnings", addWarning()); - app.post('/api/v1/users/:id/warnings', addWarning()); + app.put("/api/v1/users/:id", updateUser(), responseUser()); - app.put('/api/v1/users/:id', updateUser(), responseUser() ); + app.put("/api/v1/users/:userId/warnings/:warningId", updateWarning()); - app.put('/api/v1/users/:userId/warnings/:warningId', updateWarning()); - - app.delete('/api/v1/users/:id', deleteUser(), emptyResponse()); + app.delete("/api/v1/users/:id", deleteUser(), emptyResponse()); - app.delete('/api/v1/users/:userId/warnings/:warningId', deleteWarning()); -} + app.delete("/api/v1/users/:userId/warnings/:warningId", deleteWarning()); +}; -export default usersRoute; \ No newline at end of file +export default usersRoute; diff --git a/src/utils/auth.ts b/src/utils/auth.ts index d00f2042..ce3d6af2 100644 --- a/src/utils/auth.ts +++ b/src/utils/auth.ts @@ -1,19 +1,18 @@ import simpleOauth2 from "simple-oauth2"; -const oauth2 = () => simpleOauth2.create( - { +const oauth2 = () => + simpleOauth2.create({ client: { id: process.env.AUTH_ID || "", - secret: process.env.AUTH_SECRET_KEY || "" + secret: process.env.AUTH_SECRET_KEY || "", }, auth: { - tokenHost: 'https://auth.sch.bme.hu', - tokenPath: '/oauth2/token', - authorizePath: '/site/login' - } - } -); + tokenHost: "https://auth.sch.bme.hu", + tokenPath: "/oauth2/token", + authorizePath: "/site/login", + }, + }); -const scope : string[] = ['basic', 'mail', 'sn', 'givenName'] +const scope: string[] = ["basic", "mail", "sn", "givenName"]; -export {oauth2, scope}; \ No newline at end of file +export { oauth2, scope }; diff --git a/src/utils/declarations/session.d.ts b/src/utils/declarations/session.d.ts index 70023005..66b7be37 100644 --- a/src/utils/declarations/session.d.ts +++ b/src/utils/declarations/session.d.ts @@ -1,10 +1,10 @@ import { AccessToken } from "simple-oauth2"; -import { User } from 'src/models/user.interface'; +import { User } from "src/models/user.interface"; declare global { - namespace Express { - export interface Session { - user: User | null; - } + namespace Express { + export interface Session { + user: User | null; } -} \ No newline at end of file + } +} diff --git a/src/utils/env.ts b/src/utils/env.ts index 0627d245..622b6e5e 100644 --- a/src/utils/env.ts +++ b/src/utils/env.ts @@ -1,5 +1,4 @@ -import { resolve } from "path" +import { config } from "dotenv"; +import { resolve } from "path"; -import { config } from "dotenv" - -config({ path: resolve(__dirname, "../../.env") }) \ No newline at end of file +config({ path: resolve(__dirname, "../../.env") }); -- GitLab