From 08a5fe4fa82cb196be82fe1754acddde86a5bda0 Mon Sep 17 00:00:00 2001 From: Ben Date: Thu, 8 Nov 2018 14:39:08 +0000 Subject: [PATCH] Resolved errors bug and fixed the permanote controller - also working toward renaming all instances of PermaLink to permanote --- src/controllers/index.js | 2 +- src/controllers/loginController.js | 3 ++- src/controllers/middleware/auth.js | 2 +- .../middleware/{index.js => middleware.js} | 0 src/controllers/middleware/rateLimits.js | 2 +- src/controllers/noteController.js | 12 +++++++---- ...nkController.js => permaNoteController.js} | 19 +++++++++--------- src/controllers/routes/router.js | 6 +++--- src/controllers/userController.js | 3 ++- src/index.js | 2 +- src/models/database/sqlite/database.sqlite | Bin 49152 -> 49152 bytes 11 files changed, 28 insertions(+), 23 deletions(-) rename src/controllers/middleware/{index.js => middleware.js} (100%) rename src/controllers/{permaLinkController.js => permaNoteController.js} (76%) diff --git a/src/controllers/index.js b/src/controllers/index.js index aefb922..c0ba9d1 100644 --- a/src/controllers/index.js +++ b/src/controllers/index.js @@ -2,6 +2,6 @@ export const Controllers = {}; Controllers.UserController = require('./userController').UserController; Controllers.LoginController = require('./loginController').LoginController; -Controllers.PermaLinkController = require('./permaLinkController').PermaLinkController; +Controllers.PermaNoteController = require('./permaNoteController').PermaNoteController; Controllers.NoteController = require('./noteController').NoteController; Controllers.GroupController = require('./groupController').GroupController; diff --git a/src/controllers/loginController.js b/src/controllers/loginController.js index f08c963..de8179a 100644 --- a/src/controllers/loginController.js +++ b/src/controllers/loginController.js @@ -42,7 +42,8 @@ export class LoginController extends ControllerHandler { const match = await User.Password.compare(password, user.password); if (!match) { - errors.addError(401, 'Unauthorized', 'Incorrect password for user').endpoint(); + errors.addError(401, 'Unauthorized', 'Incorrect password for user'); + errors.endpoint(); next(); return; } diff --git a/src/controllers/middleware/auth.js b/src/controllers/middleware/auth.js index 3a763aa..de21170 100644 --- a/src/controllers/middleware/auth.js +++ b/src/controllers/middleware/auth.js @@ -1,4 +1,4 @@ -import {MiddleWare} from './index'; +import {MiddleWare} from './middleware'; import {API} from '../api/api'; import {Logger} from '../../models/logger' import {Auth} from '../../models/auth/authModel'; diff --git a/src/controllers/middleware/index.js b/src/controllers/middleware/middleware.js similarity index 100% rename from src/controllers/middleware/index.js rename to src/controllers/middleware/middleware.js diff --git a/src/controllers/middleware/rateLimits.js b/src/controllers/middleware/rateLimits.js index 709524b..e5ea249 100644 --- a/src/controllers/middleware/rateLimits.js +++ b/src/controllers/middleware/rateLimits.js @@ -1,5 +1,5 @@ import {Logger} from '../../models/logger'; -import {MiddleWare} from './index'; +import {MiddleWare} from './middleware'; let requestsPerSecond = 2; // let disposeTime = 20000; //ms 1800000 = 30 mins diff --git a/src/controllers/noteController.js b/src/controllers/noteController.js index 5a14cd9..c183879 100644 --- a/src/controllers/noteController.js +++ b/src/controllers/noteController.js @@ -14,13 +14,15 @@ export class NoteController extends ControllerHandler { const user = req.user || undefined; if (!creatorid || !user) { - errors.addError(403, 'Forbidden').endpoint(); + errors.addError(403, 'Forbidden'); + errors.endpoint(); next(); return; } if (!order) { - errors.addError(422, 'Unprocessable entity').endpoint(); + errors.addError(422, 'Unprocessable entity'); + errors.endpoint(); next(); return; } @@ -33,7 +35,8 @@ export class NoteController extends ControllerHandler { } else { const doesExist = await Notes.doesGroupExist(user.id, parentgroup); if (!doesExist) { - errors.addError(422, 'Unprocessable entity', 'You are trying to create a note for a group that does not exist').endpoint(); + errors.addError(422, 'Unprocessable entity', 'You are trying to create a note for a group that does not exist'); + errors.endpoint(); next(); return; } @@ -41,7 +44,8 @@ export class NoteController extends ControllerHandler { } if (success == -1) { - errors.addError(500, 'Internal server error').endpoint(); + errors.addError(500, 'Internal server error'); + errors.endpoint(); next(); return; } diff --git a/src/controllers/permaLinkController.js b/src/controllers/permaNoteController.js similarity index 76% rename from src/controllers/permaLinkController.js rename to src/controllers/permaNoteController.js index 9f6f35d..9bd74ae 100644 --- a/src/controllers/permaLinkController.js +++ b/src/controllers/permaNoteController.js @@ -4,14 +4,14 @@ import {API} from './api/api'; import {Database} from '../models/database/database' import {PermaLink} from '../models/permalinks/permalink'; -export class PermaLinkController extends ControllerHandler { - static async unauthentacatedPermaLink(req, res, next) { +export class PermaNoteController extends ControllerHandler { + static async newPermaNote(req, res, next) { const errors = new API.errors(res); - + const content = req.body.content || undefined; if (!content) { - errors.addError(422, 'Unprocessable entity', 'There is no text').endpoint(); - next(); + errors.addError(422, 'Unprocessable entity', 'There is no content'); + errors.endpoint(); return; } @@ -20,8 +20,8 @@ export class PermaLinkController extends ControllerHandler { const success = await Database.PermaNotes.newNote(uid, endpoint, content); if (success == -1) { - errors.addError(500, 'Internal server error').endpoint(); - next(); + errors.addError(500, 'Internal server error'); + errors.endpoint(); return; } @@ -29,17 +29,16 @@ export class PermaLinkController extends ControllerHandler { next(); } - static async getNote(req, res, next) { + static async getPermaNote(req, res, next) { const endpoint = req.params.endpoint || undefined; if (!endpoint) { - next(); return; } const data = await Database.PermaNotes.getNoteByEndpoint(endpoint); if (data == -1) { - next(); + res.status(404).end('404 Not Found'); return; } diff --git a/src/controllers/routes/router.js b/src/controllers/routes/router.js index 8331e10..eafffc7 100644 --- a/src/controllers/routes/router.js +++ b/src/controllers/routes/router.js @@ -1,6 +1,6 @@ import {Logger} from '../../models/logger'; import {Server} from '../../server'; -import {MiddleWare} from '../middleware/index'; +import {MiddleWare} from '../middleware/middleware'; import {ErrorHandler} from '../middleware/errors/errorHandler'; import {StatusCodes} from '../status'; import {Controllers} from '../index'; @@ -20,8 +20,8 @@ export class Router { app.get('/auth/user/:id', [MiddleWare.RateLimits.request, MiddleWare.Auth.authUser]); app.delete('/auth/user/:id', [MiddleWare.RateLimits.request, MiddleWare.Auth.authUser]); - app.post('/unauth/permanote', [MiddleWare.RateLimits.request, Controllers.PermaLinkController.unauthentacatedPermaLink]); - app.get('/note/:endpoint', [MiddleWare.RateLimits.request, Controllers.PermaLinkController.getNote]); + app.post('/unauth/permanote', [MiddleWare.RateLimits.request, Controllers.PermaNoteController.newPermaNote]); + app.get('/note/:endpoint', [MiddleWare.RateLimits.request, Controllers.PermaNoteController.getPermaNote]); app.post('/auth/note', [MiddleWare.RateLimits.request, MiddleWare.Auth.authUser, Controllers.NoteController.newNote]); // Passes through auth middleware which if authenticated passes user obj and token to the note handling function for it to deal with app.post('/auth/group', [MiddleWare.RateLimits.request, MiddleWare.Auth.authUser, Controllers.GroupController.newGroup]); diff --git a/src/controllers/userController.js b/src/controllers/userController.js index e818651..11441ac 100644 --- a/src/controllers/userController.js +++ b/src/controllers/userController.js @@ -48,7 +48,8 @@ export class UserController extends ControllerHandler { const user = new User(id, username, encryptedPass, email, ip, 1234); // Authcode is placeholder for email authentication const success = await user.insert(); if (success == -1) { - errors.addError(500, 'Internal server error').endpoint(); + errors.addError(500, 'Internal server error'); + errors.endpoint(); next(); return; } diff --git a/src/index.js b/src/index.js index 5b2c217..442e9c3 100644 --- a/src/index.js +++ b/src/index.js @@ -3,7 +3,7 @@ import {Config} from './config/config'; import {Database} from './models/database/database'; import {Server} from './server'; import {Router} from './controllers/routes/router'; -import {MiddleWare} from './controllers/middleware'; +import {MiddleWare} from './controllers/middleware/middleware'; init(); async function init() { diff --git a/src/models/database/sqlite/database.sqlite b/src/models/database/sqlite/database.sqlite index 5532ff511a76b5889700c18f6419244d26cf7a24..bc732ab57d63ed601f8123e2374301f98da72f04 100644 GIT binary patch delta 261 zcmaKkO-jQ+7(izT_>;}pwF=)}S|^QQl9kw^bY+kppyT)@{h&$8%vYrgF};Cap?Cr5 z!Ms2h#tXQ7yvJ+XplySXQyG4qjb!*e`+7K#Ditc-_25#yZ^rUSoNwO5WRj=#?W-$B z(>cN&agE;JJ5xb!EIOE?XCMy-s?~zYvnde_y5@;2ShF;icn$nl@!T*hT~oSlK`*#i zLy7F6Y8=8d6$ROD0mcJ8GT5eOs#oX-LmegkDC+A3qN^;9v-oQ0IZ?)$k#l3h693IC1%K=pO)vlecqa*d