diff --git a/index.js b/index.js index 9e6ed73..c40c7d7 100644 --- a/index.js +++ b/index.js @@ -33,4 +33,4 @@ Object.defineProperty(global, "__function", { } }); -module.exports = require('./src/app'); +module.exports = require('./src/index'); diff --git a/src/models/api/API.js b/src/controllers/API.js similarity index 100% rename from src/models/api/API.js rename to src/controllers/API.js diff --git a/src/models/api/APIErrors.js b/src/controllers/api/APIErrors.js similarity index 99% rename from src/models/api/APIErrors.js rename to src/controllers/api/APIErrors.js index 932399e..d242bd1 100644 --- a/src/models/api/APIErrors.js +++ b/src/controllers/api/APIErrors.js @@ -31,4 +31,5 @@ export class APIErrors extends API { this.res .status(this.errors.status.code) .end(JSON.stringify(this.errors, false, 4)); - }} + } +} diff --git a/src/models/api/baseAPI.js b/src/controllers/api/baseAPI.js similarity index 100% rename from src/models/api/baseAPI.js rename to src/controllers/api/baseAPI.js diff --git a/src/models/api/noteResponse.js b/src/controllers/api/noteResponse.js similarity index 100% rename from src/models/api/noteResponse.js rename to src/controllers/api/noteResponse.js diff --git a/src/models/api/permaLinkResponse.js b/src/controllers/api/permaLinkResponse.js similarity index 100% rename from src/models/api/permaLinkResponse.js rename to src/controllers/api/permaLinkResponse.js diff --git a/src/models/api/userResponses.js b/src/controllers/api/userResponses.js similarity index 100% rename from src/models/api/userResponses.js rename to src/controllers/api/userResponses.js diff --git a/src/controllers/loginController.js b/src/controllers/loginController.js index 699a54e..ebc2f13 100644 --- a/src/controllers/loginController.js +++ b/src/controllers/loginController.js @@ -42,16 +42,13 @@ export class LoginController extends ControllerHandler { let match = await User.Password.compare(password, user.password); - if (!match) errors.addError(401, 'Unauthorized', 'Incorrect password for user'); - - if (errors.count() > 0) { - errors.endpoint(); + if (!match) { + errors.addError(401, 'Unauthorized', 'Incorrect password for user').endpoint(); next(); return; } let response = new API.user(res, user.id, username, email, new Date(parseInt(user.lastupdated)).toLocaleString()); - let token = await Database.auth.getTokenByID(user.id); if (token == -1) { diff --git a/src/controllers/middleware/auth.js b/src/controllers/middleware/auth.js index 6b96ea1..991745c 100644 --- a/src/controllers/middleware/auth.js +++ b/src/controllers/middleware/auth.js @@ -8,16 +8,14 @@ export class AuthMiddleWare extends MiddleWare { let errors = new API.errors(res); if (!req.headers.authorization) { - errors.addError(403, 'Forbidden', 'You cannot access this resource without authorization'); - errors.endpoint(); + errors.addError(403, 'Forbidden', 'You cannot access this resource without authorization').endpoint(); return; } let token = req.headers.authorization; let user = await AuthModel.getUserFromToken(token); if (user == -1) { - errors.addError(403, 'Forbidden', 'You cannot access this resource without authorization'); - errors.endpoint(); + errors.addError(403, 'Forbidden', 'You cannot access this resource without authorization').endpoint(); return; } diff --git a/src/controllers/middleware/errors/errorHandler.js b/src/controllers/middleware/errors/errorHandler.js new file mode 100644 index 0000000..ebd2ebc --- /dev/null +++ b/src/controllers/middleware/errors/errorHandler.js @@ -0,0 +1,6 @@ + +export class ErrorHandler { + static async newError(err, req, res, next) { + + } +} diff --git a/src/controllers/noteController.js b/src/controllers/noteController.js index acfd6fb..13747fe 100644 --- a/src/controllers/noteController.js +++ b/src/controllers/noteController.js @@ -4,7 +4,7 @@ import {Notes} from '../models/notes/notes'; export class NoteController extends ControllerHandler { static async newNote(req, res, next) { - let errors = new API.errors(res); + const errors = new API.errors(res); let content = req.body.text || null; let creatorid = req.user.id || undefined; @@ -14,15 +14,13 @@ export class NoteController extends ControllerHandler { let user = req.user || undefined; if (!creatorid || !user) { - errors.addError(403, 'Forbidden'); - errors.endpoint(); + errors.addError(403, 'Forbidden').endpoint(); next(); return; } if (!order) { - errors.addError(422, 'Unprocessable entity'); - errors.endpoint(); + errors.addError(422, 'Unprocessable entity').endpoint(); next(); return; } @@ -35,8 +33,7 @@ export class NoteController extends ControllerHandler { } else { let 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'); - errors.endpoint(); + errors.addError(422, 'Unprocessable entity', 'You are trying to create a note for a group that does not exist').endpoint(); next(); return; } @@ -44,8 +41,7 @@ export class NoteController extends ControllerHandler { } if (success == -1) { - errors.addError(500, 'Internal server error'); - errors.endpoint(); + errors.addError(500, 'Internal server error').endpoint(); next(); return; } @@ -53,7 +49,6 @@ export class NoteController extends ControllerHandler { new API.note(res, user, id, content, order, parentgroup).endpoint(); next(); } - } // id: id, diff --git a/src/controllers/routes/router.js b/src/controllers/routes/router.js index ad484fc..8331e10 100644 --- a/src/controllers/routes/router.js +++ b/src/controllers/routes/router.js @@ -1,6 +1,7 @@ import {Logger} from '../../models/logger'; import {Server} from '../../server'; import {MiddleWare} from '../middleware/index'; +import {ErrorHandler} from '../middleware/errors/errorHandler'; import {StatusCodes} from '../status'; import {Controllers} from '../index'; @@ -16,7 +17,6 @@ export class Router { app.post('/user', [MiddleWare.RateLimits.request, Controllers.UserController.newUser]); app.post('/login', [MiddleWare.RateLimits.request, Controllers.LoginController.authenticate]); - app.get('/auth/user/:id', [MiddleWare.RateLimits.request, MiddleWare.Auth.authUser]); app.delete('/auth/user/:id', [MiddleWare.RateLimits.request, MiddleWare.Auth.authUser]); @@ -25,7 +25,7 @@ export class Router { 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]); - + app.get('/auth/getallnotes', [MiddleWare.RateLimits.request, MiddleWare.Auth.authUser]); app.get('/auth/getallgroups', [MiddleWare.RateLimits.request, MiddleWare.Auth.authUser]); @@ -35,6 +35,7 @@ export class Router { app.delete('/auth/deletenote', [MiddleWare.RateLimits.request, MiddleWare.Auth.authUser]); app.delete('/auth/deletegroup', [MiddleWare.RateLimits.request, MiddleWare.Auth.authUser]); + app.use(ErrorHandler.newError); app.get('*', [MiddleWare.RateLimits.request, StatusCodes.pageNotFound]); Logger.info('HTTP endpoints settup'); } diff --git a/src/app.js b/src/index.js similarity index 90% rename from src/app.js rename to src/index.js index 93204d7..8c11ba6 100644 --- a/src/app.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/index'; +import {MiddleWare} from './controllers/middleware'; init(); async function init() { @@ -24,6 +24,8 @@ async function init() { // Logger.debug(JSON.stringify(await Database.users.listAll(), null, 4)); // await new User(1234135, 'plane000', 'adifl', 'playsplane@gmail.com', '127.0.0.1', new Date().getTime(), false, 'SGASGD', -1).insert(); + Logger.debug(JSON.stringify(await Database.note.listAll(), null, 4));; + // Logger.database('Database Log'); // Logger.middleware('GET request to /'); // Logger.debug('Debug mode enabled'); diff --git a/src/models/database/notegroups.js b/src/models/database/notegroups.js index e632984..de2b5a5 100644 --- a/src/models/database/notegroups.js +++ b/src/models/database/notegroups.js @@ -2,6 +2,11 @@ import {BaseDatabase} from './baseDatabase'; import {Logger} from '../logger'; export class NoteGroupTools extends BaseDatabase { + static async listAll() { + let Group = BaseDatabase.Group; + return Group.findAll(); + } + static async newGroup(id, creatorid, order) { let Group = BaseDatabase.Group; diff --git a/src/models/database/notes.js b/src/models/database/notes.js index 4b2b6de..fb26e15 100644 --- a/src/models/database/notes.js +++ b/src/models/database/notes.js @@ -2,6 +2,11 @@ import {BaseDatabase} from './baseDatabase'; import {Logger} from '../logger'; export class NoteTools extends BaseDatabase { + static async listAll() { + let Note = BaseDatabase.Note; + return Note.findAll(); + } + static async newNote(id, content, creatorid, order, parentgroup) { parentgroup = parentgroup || null; let Note = BaseDatabase.Note;