diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml deleted file mode 100644 index 004ce00796875fe4c95e25da97a1e5d892f6f504..0000000000000000000000000000000000000000 --- a/.gitlab-ci.yml +++ /dev/null @@ -1,86 +0,0 @@ -stages: - - Build -# - Test - - Docker build - - Deploy - -#services: -# - mongo - -variables: - CONTAINER_IMAGE: 'registry.kszk.bme.hu/bodysch/backend:$CI_COMMIT_REF_NAME' -# MONGODB_TEST_URI: 'mongodb://mongo/bodysch-test' - -Build: - stage: Build - tags: [kszk] - image: node:14 - script: - - npm install - cache: - paths: - - node_modules/ - artifacts: - expire_in: 1 day - paths: - - node_modules/ - -#Test: -# stage: Test -# tags: [kszk] -# image: node:14 -# script: -# - npm test -# artifacts: -# expire_in: 1 week -# paths: -# - junit.xml -# reports: -# junit: junit.xml - -Docker build: - stage: Docker build - tags: [kszk] - only: - - master - - dev - image: - name: gcr.io/kaniko-project/executor:debug - entrypoint: [''] - script: - - echo "{\"auths\":{\"registry.kszk.bme.hu\":{\"username\":\"$REGISTRY_USER\",\"password\":\"$REGISTRY_PASSWORD\"}}}" > /kaniko/.docker/config.json - - /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile --destination $CONTAINER_IMAGE - -Deploy dev: - stage: Deploy - tags: [kszk-deploy] # request the custom SSH executor - only: - - dev - script: # your deploy logic - - echo "$REGISTRY_PASSWORD" | docker login registry.kszk.bme.hu --username $REGISTRY_USER --password-stdin - - cp docker-compose.dev.yml /home/kszk-gitlab-deployer/bodysch-dev/ - - cd /home/kszk-gitlab-deployer/bodysch-dev/ - - docker-compose -f docker-compose.dev.yml --no-ansi pull - - docker-compose -f docker-compose.dev.yml up -d - - docker system prune -f - variables: - SSH_HOST: donald.sch.bme.hu # required - SSH_USER: kszk-gitlab-deployer # default: kszk-gitlab-deployer - SSH_PORT: 10122 # default: 22 - -# Deploy prod: -# stage: Deploy -# tags: [kszk-deploy] # request the custom SSH executor -# only: -# - master -# script: # your deploy logic -# - echo "$REGISTRY_PASSWORD" | docker login registry.kszk.bme.hu --username $REGISTRY_USER --password-stdin -# - cp docker-compose.yml /home/kszk-gitlab-deployer/kszkepzes-prod/ -# - cd /home/kszk-gitlab-deployer/kszkepzes-prod/ -# - docker-compose --no-ansi pull -# - docker-compose up -d -# - docker system prune -f -# variables: -# SSH_HOST: donald.sch.bme.hu # required -# SSH_USER: kszk-gitlab-deployer # default: kszk-gitlab-deployer -# SSH_PORT: 10122 # default: 22 diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 4aca298855fb6289a1e0126b04c90da18f6730b3..0000000000000000000000000000000000000000 --- a/Dockerfile +++ /dev/null @@ -1,8 +0,0 @@ -FROM node:14 - -WORKDIR /usr/src/app - -COPY . . - -EXPOSE 3000 -CMD ["npm", "run", "start"] \ No newline at end of file diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index ac74fe359b744f86d52b4cf19e9e05b87eddef1a..c711696e309f391c1bb30a39c48e65c3ad3bbeaf 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -1,21 +1,22 @@ -version: '3.7' -services: - bodysch-backend-dev: - container_name: bodysch-backend-dev - image: registry.kszk.bme.hu/bodysch/backend:dev - restart: always - ports: - - '3030:8000' - links: - - bodysch-mongo-dev - env_file: - - .env +version: "3.7" + +services: + app: + image: node:alpine + volumes: + - ./:/app + working_dir: /app depends_on: - - bodysch-mongo-dev - bodysch-mongo-dev: - container_name: bodysch-mongo-dev + - mongo + environment: + NODE_ENV: development + ports: + - 8000:8000 + command: npm run start-dev + + mongo: image: mongo - volumes: - - ./data:/data/db expose: - - '27017' + - 27017 + volumes: + - ./data/db:/data/db \ No newline at end of file diff --git a/nodemon.json b/nodemon.json index 2220bb3e3a3e2e97e1122aa9b7a9c480a63e88fa..4df56ed0c5d5d53f10b139aa6fcdfebe598dde8f 100644 --- a/nodemon.json +++ b/nodemon.json @@ -2,5 +2,5 @@ "watch": ["src"], "ext": "ts", "ignore": ["src/public"], - "exec": "ts-node --files src/index.ts" + "exec": "NODE_ENV=development ts-node src/index.ts" } diff --git a/src/index.ts b/src/index.ts index 39b7a6ce455ec083a2e0f35ceb0c1d609ee5b056..e880caa51515ba7eca2a69fe1f83c570176280a9 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,34 +1,15 @@ -import "./utils/env"; +import "./utils/env" import express, { Request, Response, NextFunction, Application } from "express"; -import mongoose from "mongoose"; import bodyParser from "body-parser"; import expressSession from "express-session"; -import authRoute from "./routes/auth"; -import newsRoute from "./routes/news"; -import usersRoute from "./routes/user"; - -mongoose - .connect("mongodb://localhost:27017/bodysch", { - useNewUrlParser: true, - useCreateIndex: true, - useUnifiedTopology: true - }) - .then(() => { - console.log("Connected to database"); - }) - .catch(err => { - console.log( - "MongoDB connection error. Please make sure MongoDB is running. " + err - ); - // process.exit(); - }); +import authRoute from './routes/auth'; 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", + secret: process.env.SESSION_SECRET || "alma", resave: false, saveUninitialized: true, cookie: { secure: false } @@ -37,20 +18,13 @@ app.use(expressSession({ app.get("/", (req: Request, res: Response) => { let message = "World!"; if(req.session!.user) - message = req.session!.user!.name || "World!"; + message = req.session!.user!.sn || "World!"; res.send( "Hello " + message) }); // Register routes authRoute(app); -// Register routes -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/.gitkeep b/src/middlewares/.gitkeep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/middlewares/auth/authenticated.ts b/src/middlewares/auth/authenticated.ts index 139a50d949d0b81a8c0f4ca2d5b5f3fbfbb4fb67..d5f7ea0e9fe2bdecbd23a16f6c7fb3188e57cbf6 100644 --- a/src/middlewares/auth/authenticated.ts +++ b/src/middlewares/auth/authenticated.ts @@ -1,12 +1,12 @@ -import {Request, Response, NextFunction} 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"}); - } -} - +import {Request, Response, NextFunction} 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"}); + } +} + export default authenticated; \ No newline at end of file diff --git a/src/middlewares/auth/complete.ts b/src/middlewares/auth/complete.ts index 988565680015af76bfebe882c9012ea1c9a9b6d3..dedc5c8c0d95f6611bc2731264f4e851c15128dd 100644 --- a/src/middlewares/auth/complete.ts +++ b/src/middlewares/auth/complete.ts @@ -1,33 +1,29 @@ -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: "" - }; - - 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); - } -}; - +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: "" + }; + + try { + const result = await oauth2().authorizationCode.getToken(tokenConfig); + const token = oauth2().accessToken.create(result); + await axios.get(`https://auth.sch.bme.hu/api/profile/?access_token=${token.token.access_token}`) + .then( (response) => { + req.session!.user = response.data; + }) + .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 diff --git a/src/middlewares/auth/login.ts b/src/middlewares/auth/login.ts index a1efd4d702106c65512c6b87c4734fcfd9ec279d..356629f10a2f8bda13639201a837cdf7416b6fcd 100644 --- a/src/middlewares/auth/login.ts +++ b/src/middlewares/auth/login.ts @@ -1,13 +1,13 @@ -import { Request, Response } from 'express'; -import {oauth2, scope} from '../../utils/auth' - - -const authorizationUri = oauth2().authorizationCode.authorizeURL({ - scope: scope, -}); - - -const login = () => (req: Request, res: Response) => res.redirect(authorizationUri); - - +import { Request, Response } from 'express'; +import {oauth2, scope} from '../../utils/auth' + + +const authorizationUri = oauth2().authorizationCode.authorizeURL({ + scope: scope, +}); + + +const login = () => (req: Request, res: Response) => res.redirect(authorizationUri); + + export default login; \ No newline at end of file diff --git a/src/middlewares/auth/logout.ts b/src/middlewares/auth/logout.ts index 9367d85fe4d7d7c23604fc1f62ff5f05aa2c5e84..791772f76771a64ddd2b04952bdeaa7f65afabda 100644 --- a/src/middlewares/auth/logout.ts +++ b/src/middlewares/auth/logout.ts @@ -1,8 +1,8 @@ -import { Request, Response } from 'express'; - -const logout = () => (req : Request, res : Response) =>{ - req.session!.destroy(() => console.log("user logged out.")); - res.redirect("/"); -} - +import { Request, Response } from 'express'; + +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 diff --git a/src/middlewares/auth/refreshToken.ts b/src/middlewares/auth/refreshToken.ts deleted file mode 100644 index 1d857bb151626e418365d095e4e667ec4a183450..0000000000000000000000000000000000000000 --- a/src/middlewares/auth/refreshToken.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { Request, Response, NextFunction } from 'express'; -import { oauth2 } from '../../utils/auth' - -const refreshToken = () => async (req: Request, res: Response, next: NextFunction) => { - if (req.session && req.session.user) { - 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); - } - } - next(); -} - -export default refreshToken; \ No newline at end of file diff --git a/src/middlewares/news/addNews.ts b/src/middlewares/news/addNews.ts deleted file mode 100644 index 43c6437fa20c7d7808dd93b7415c8fb969f616db..0000000000000000000000000000000000000000 --- a/src/middlewares/news/addNews.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { Request, Response, NextFunction } from "express"; -import News from "../../models/NewsSchema"; - -const addNews = () => { - return (req: Request, res: Response, next: NextFunction) => { - const news = new News(); - news.title = req.body.title; - news.text = req.body.text; - news.publishedAt = new Date().toDateString(); - - news.save(err => { - if (err) { - } else { - res.status(201); - res.data.newsObject = news; - } - next(); - }); - }; -}; - -export default addNews; diff --git a/src/middlewares/news/deleteNews.ts b/src/middlewares/news/deleteNews.ts deleted file mode 100644 index 7f6330375840761cfd595786688d62310018fc38..0000000000000000000000000000000000000000 --- a/src/middlewares/news/deleteNews.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { Request, Response, NextFunction } from "express"; -import News from "../../models/NewsSchema"; - -const deleteNews = () => { - return (req: Request, res: Response, next: NextFunction) => { - News.findByIdAndDelete(req.params.id, (error, result) => { - if (!error) { - res.status(204); - res.json({}); - } else { - console.warn(error); - } - }); - }; -}; - -export default deleteNews; diff --git a/src/middlewares/news/getNews.ts b/src/middlewares/news/getNews.ts deleted file mode 100644 index e48a3d6cf7a8d2cbb4bd54b035369a1785a63ef6..0000000000000000000000000000000000000000 --- a/src/middlewares/news/getNews.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { Request, Response, NextFunction } from "express"; -import News from "../../models/NewsSchema"; - -const getNews = () => { - return (req: Request, res: Response, next: NextFunction) => { - News.findById(req.params.id, (error, result) => { - if (!error) { - res.status(200); - res.data.newsObject = result; - } else { - console.warn(error); - } - next(); - }); - }; -}; - -export default getNews; diff --git a/src/middlewares/news/getNewsList.ts b/src/middlewares/news/getNewsList.ts deleted file mode 100644 index c55aa8a23b87205f6940ffb38a2de4f947944c15..0000000000000000000000000000000000000000 --- a/src/middlewares/news/getNewsList.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Request, Response, NextFunction } from "express"; -import News from "../../models/NewsSchema"; - -const getNewsList = () => { - return (req: Request, res: Response, next: NextFunction) => { - News.find({}, (err, news) => { - if (!err) { - res.data.news = news; - } - next(); - }); - }; -}; - -export default getNewsList; diff --git a/src/middlewares/user/addUser.ts b/src/middlewares/user/addUser.ts deleted file mode 100644 index af47ce6e30550e456d1b0db66100258cdc929114..0000000000000000000000000000000000000000 --- a/src/middlewares/user/addUser.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { Request, Response, NextFunction } 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); - }); - - profile.external_id = req.session!.user!.id; - profile.role = Role.User; - - profile.save(err => { - if (err) { - res.status(400); - } - else { - res.status(201); - res.data = {profile}; - } - next() - }); -} - -export default addUser; \ No newline at end of file diff --git a/src/middlewares/user/addWarning.ts b/src/middlewares/user/addWarning.ts deleted file mode 100644 index e7eae54ef0692fb641e551038535e48883ac95e7..0000000000000000000000000000000000000000 --- a/src/middlewares/user/addWarning.ts +++ /dev/null @@ -1,7 +0,0 @@ -import {Request, Response, NextFunction} from 'express'; - -const addWarning = () => (req: Request, res: Response, next: NextFunction) =>{ - res.send("Add warning"); -} - -export default addWarning; \ No newline at end of file diff --git a/src/middlewares/user/deleteUser.ts b/src/middlewares/user/deleteUser.ts deleted file mode 100644 index fe4eb181a4e0424b637227bf5cb8d5f67cfcd187..0000000000000000000000000000000000000000 --- a/src/middlewares/user/deleteUser.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Request, Response, NextFunction } from 'express'; -import Profile from '../../models/ProfileSchema'; - -const deletUser = () => (req: Request, res: Response, next: NextFunction) => { - Profile.findByIdAndDelete(req.params.id, (error) => { - if (error) { - res.status(400); - } else { - res.status(204); - } - next(); - }); -} - -export default deletUser; \ No newline at end of file diff --git a/src/middlewares/user/deleteWarning.ts b/src/middlewares/user/deleteWarning.ts deleted file mode 100644 index 90ca8a2d9344ee0907f7de52b071f2e9f3341a73..0000000000000000000000000000000000000000 --- a/src/middlewares/user/deleteWarning.ts +++ /dev/null @@ -1,7 +0,0 @@ -import {Request, Response, NextFunction} from 'express'; - -const deleteWarning = () => (req: Request, res: Response, next: NextFunction) =>{ - res.send("Delete warning"); -} - -export default deleteWarning; \ No newline at end of file diff --git a/src/middlewares/user/getUser.ts b/src/middlewares/user/getUser.ts deleted file mode 100644 index 0f165ef4f5276bf5ba84b0f1cfb1cef2f4f63d34..0000000000000000000000000000000000000000 --- a/src/middlewares/user/getUser.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { Request, Response, NextFunction } from 'express'; -import Profile from '../../models/ProfileSchema'; - -const getUser = () => (req: Request, res: Response, next: NextFunction) => { - Profile.findById(req.params.id, (error, profile) => { - if (error) { - console.warn(error); - res.status(400); - } else { - res.status(200); - res.data = { profile }; - } - next(); - }); -} - -export default getUser; \ No newline at end of file diff --git a/src/middlewares/user/getUsersList.ts b/src/middlewares/user/getUsersList.ts deleted file mode 100644 index 5cd7a515512c99f6ba85587244de281666250d39..0000000000000000000000000000000000000000 --- a/src/middlewares/user/getUsersList.ts +++ /dev/null @@ -1,17 +0,0 @@ -import {Request, Response, NextFunction} from 'express'; -import Profile from '../../models/ProfileSchema'; - -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; \ No newline at end of file diff --git a/src/middlewares/user/getWarning.ts b/src/middlewares/user/getWarning.ts deleted file mode 100644 index d97d5d2523185bd35c6f3210608d79dfcd2faea5..0000000000000000000000000000000000000000 --- a/src/middlewares/user/getWarning.ts +++ /dev/null @@ -1,7 +0,0 @@ -import {Request, Response, NextFunction} from 'express'; - -const getWarning = () => (req: Request, res: Response, next: NextFunction) =>{ - res.send("Get warning"); -} - -export default getWarning; \ No newline at end of file diff --git a/src/middlewares/user/getWarningsList.ts b/src/middlewares/user/getWarningsList.ts deleted file mode 100644 index c4cff031cc1d7cb1f3e435812a766f96cb296a4c..0000000000000000000000000000000000000000 --- a/src/middlewares/user/getWarningsList.ts +++ /dev/null @@ -1,7 +0,0 @@ -import {Request, Response, NextFunction} from 'express'; - -const getWarningsList = () => (req: Request, res: Response, next: NextFunction) =>{ - res.send("Get warnings"); -} - -export default getWarningsList; \ No newline at end of file diff --git a/src/middlewares/user/responseUser.ts b/src/middlewares/user/responseUser.ts deleted file mode 100644 index 07d6958cbdeade91bea4ae0d8a24ba6b9f6dafb1..0000000000000000000000000000000000000000 --- a/src/middlewares/user/responseUser.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { Request, Response, NextFunction, response } from 'express'; - -const responseUser = () => (req: Request, res: Response) => { - res.json(res.data.profile); -} - -export default responseUser; \ No newline at end of file diff --git a/src/middlewares/user/responseUserList.ts b/src/middlewares/user/responseUserList.ts deleted file mode 100644 index 364b3c490615cf41d242baa211dd95cac0bde51a..0000000000000000000000000000000000000000 --- a/src/middlewares/user/responseUserList.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { Request, Response, NextFunction, response } from 'express'; - -const responseUserList = () => (req: Request, res: Response) => { - res.json(res.data.profiles); -} - -export default responseUserList; \ No newline at end of file diff --git a/src/middlewares/user/updateUser.ts b/src/middlewares/user/updateUser.ts deleted file mode 100644 index 2097af527aff8f1f91a540563ebb766caccc9abe..0000000000000000000000000000000000000000 --- a/src/middlewares/user/updateUser.ts +++ /dev/null @@ -1,29 +0,0 @@ -import {Request, Response, NextFunction} 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(); - } - ); -} - -export default updateUser; \ No newline at end of file diff --git a/src/middlewares/user/updateWarning.ts b/src/middlewares/user/updateWarning.ts deleted file mode 100644 index 6ff3f0bed90016310472a41c0505e4a729278cc4..0000000000000000000000000000000000000000 --- a/src/middlewares/user/updateWarning.ts +++ /dev/null @@ -1,7 +0,0 @@ -import {Request, Response, NextFunction} from 'express'; - -const updateWarning = () => (req: Request, res: Response, next: NextFunction) =>{ - res.send("Update warning"); -} - -export default updateWarning; \ No newline at end of file diff --git a/src/middlewares/utils/emptyResponse.ts b/src/middlewares/utils/emptyResponse.ts deleted file mode 100644 index db1e8cd2d762c7bb638b44a11da1d2842fdba9b8..0000000000000000000000000000000000000000 --- a/src/middlewares/utils/emptyResponse.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { Request, Response } from 'express'; - - - -const emptyResponse = () => (req: Request, res: Response) => res.json({}); - -export default emptyResponse; \ No newline at end of file diff --git a/src/models/.gitkeep b/src/models/.gitkeep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/models/NewsSchema.ts b/src/models/NewsSchema.ts deleted file mode 100644 index 36a42fe0651bfa9d638275e0cc6089ff66c62845..0000000000000000000000000000000000000000 --- a/src/models/NewsSchema.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { Document, Schema, model } from 'mongoose'; - -export interface INews extends Document { - title : string - text : string - /* author : { - // id: IUser["_id"], - userName: string, - }, - editedBy?: { - // id: IUser["_id"], - userName: string, - }, */ - publishedAt: string -} - -const NewsSchema = new Schema({ - title : { type: String, required: true }, - text : { type: String, required: true }, - /* author : { - id: { type: Schema.Types.ObjectId, required: true }, - userName: { type: String, required: true } - }, - editedBy: { - id: { type: Schema.Types.ObjectId, required: true }, - userName: { type: String, required: true } - }, */ - publishedAt: { type: String, required: true }, -}); - -export default model<INews>('News', NewsSchema); \ No newline at end of file diff --git a/src/models/ProfileSchema.ts b/src/models/ProfileSchema.ts deleted file mode 100644 index 9e1aef52b979bcae7d57a32e30a625d0c1fb1ac0..0000000000000000000000000000000000000000 --- a/src/models/ProfileSchema.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { Document, Schema, model } from 'mongoose'; -import { IWarnings, WarningSchema } from './WarningSchema'; -import { Admin } from 'mongodb'; - -export enum Role { - 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] | [], -}; - -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] -}); - -export default model<IProfile>('Profile', ProfileSchema); \ No newline at end of file diff --git a/src/models/WarningSchema.ts b/src/models/WarningSchema.ts deleted file mode 100644 index 8eec29a2ef19a109417338ebd7147f5a376094de..0000000000000000000000000000000000000000 --- a/src/models/WarningSchema.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { Schema } from 'mongoose'; - -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}, - }} -}); diff --git a/src/models/user.interface.ts b/src/models/user.interface.ts deleted file mode 100644 index 50df6043ba1d9fc5ff826c56db1797b6c21b4014..0000000000000000000000000000000000000000 --- a/src/models/user.interface.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { Token } from "simple-oauth2"; - -export interface User{ - email: string, - name: string, - id: string, - token: Token, -} \ No newline at end of file diff --git a/src/routes/.gitkeep b/src/routes/.gitkeep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/routes/auth.ts b/src/routes/auth.ts index a11e4dcb83c1338fe4396532708717ec36c83013..b930250fa6704fd6b43c0f1191e7ff25326c00e6 100644 --- a/src/routes/auth.ts +++ b/src/routes/auth.ts @@ -2,9 +2,9 @@ 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 authenticated from '../middlewares/auth/authenticated' - const authRoute = (app: Application): void => { + const authRout = (app: Application): void => { app.get('/login', login() ); app.get('/complete', complete() ); @@ -12,4 +12,4 @@ import authenticated from '../middlewares/auth/authenticated'; app.get('/logout', authenticated(), logout() ); } -export default authRoute; \ No newline at end of file +export default authRout; \ No newline at end of file diff --git a/src/routes/news.ts b/src/routes/news.ts deleted file mode 100644 index a2a54bf1966bf02eb6192c8c5333c445866b7e8a..0000000000000000000000000000000000000000 --- a/src/routes/news.ts +++ /dev/null @@ -1,35 +0,0 @@ -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"; - -export default (app: Application): void => { - app.get("/news", getNewsListMiddleware(), (req, res: Response) => { - if (res.data.news) { - res.json(res.data.news); - } else { - throw Error("Cant get the news list"); - } - }); - - app.post("/news", addNews(), (req, res: Response) => { - if (res.data.newsObject) { - res.json(res.data.newsObject); - } else { - throw Error("Cant add news"); - } - }); - - app.get("/news/:id", getNews(), (req, res: Response) => { - if (res.data.newsObject) { - res.json(res.data.newsObject); - } else { - throw Error("Cant get the news"); - } - }); - - app.post("/news/:id"); - - app.delete("/news/:id", deleteNews()); -}; diff --git a/src/routes/user.ts b/src/routes/user.ts deleted file mode 100644 index 4baef2ccdab4cfc305963f62a8d10f73e0400295..0000000000000000000000000000000000000000 --- a/src/routes/user.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { Application } from 'express'; -import addWarning from "../middlewares/user/addWarning"; -import deleteUser from "../middlewares/user/deleteUser"; -import deleteWarning from "../middlewares/user/deleteWarning"; -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 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('/users', authenticated(), getUsersList(), responseUserList()); - - app.post('/users', authenticated(), addUser(), responseUser()); - - app.get('/users/:id', getUser(), responseUser() ); - - app.get('/users/:id/warnings', getWarningsList() ); - - app.get('/users/:userId/warnings/:warningId', getWarning() ); - - app.post('/users/:id/warnings', addWarning()); - - app.put('/users/:id', updateUser(), responseUser() ); - - app.put('/users/:userId/warnings/:warningId', updateWarning()); - - app.delete('/users/:id', deleteUser(), emptyResponse()); - - app.delete('/users/:userId/warnings/:warningId', deleteWarning()); -} - -export default usersRoute; \ No newline at end of file diff --git a/src/utils/.gitkeep b/src/utils/.gitkeep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/utils/declarations/request.d.ts b/src/utils/declarations/request.d.ts deleted file mode 100644 index 5875527d11d1137dd1246d257abc2da7ee722ec3..0000000000000000000000000000000000000000 --- a/src/utils/declarations/request.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -declare namespace Express { - export interface Request {} -} diff --git a/src/utils/declarations/response.d.ts b/src/utils/declarations/response.d.ts deleted file mode 100644 index 6d004f4f33ad3c529a7d21f4f28281439024e601..0000000000000000000000000000000000000000 --- a/src/utils/declarations/response.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { INews } from "../../models/NewsSchema"; -import { IProfile } from "src/models/ProfileSchema"; - -declare global { - namespace Express { - export interface Response { - data: { - news?: INews[] | null; - newsObject?: INews | null; - profile?: IProfile | null; - profiles?: IProfile[] | null; - }; - } - } -} diff --git a/src/utils/declarations/session.d.ts b/src/utils/declarations/session.d.ts deleted file mode 100644 index 70023005e094f05efb4eee9ec4d5775e0473f4b1..0000000000000000000000000000000000000000 --- a/src/utils/declarations/session.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { AccessToken } from "simple-oauth2"; -import { User } from 'src/models/user.interface'; - -declare global { - namespace Express { - export interface Session { - user: User | null; - } - } -} \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index 8b2d85389cfbd32bd092a3f62fec934b340519bc..f745dd84918902c132c5a381abacc49ca0042b08 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,9 +1,4 @@ { - "files": [ - "./src/utils/declarations/response.d.ts", - "./src/utils/declarations/request.d.ts", - "./src/utils/declarations/session.d.ts", - ], "compilerOptions": { "module": "commonjs", "strict": true,