BROKEN - big bug with endpoints and controllers not doing what they are supoased to and error handling

This commit is contained in:
Ben
2018-11-14 16:04:37 +00:00
parent 6a8df5045c
commit a40fbabfb4
6 changed files with 29 additions and 31 deletions

View File

@@ -48,7 +48,7 @@ export class LoginController extends ControllerHandler {
return; return;
} }
const response = new API.user(res, user.id, username, email, new Date(parseInt(user.lastupdated)).toLocaleString()); let response = new API.user(res, user.id, username, email, new Date(parseInt(user.lastupdated)).toLocaleString());
let token = await Database.Authorization.getTokenByID(user.id); let token = await Database.Authorization.getTokenByID(user.id);
if (token == -1) { if (token == -1) {

View File

@@ -8,14 +8,16 @@ export class AuthMiddleWare extends MiddleWare {
const errors = new API.errors(res); const errors = new API.errors(res);
if (!req.headers.authorization) { if (!req.headers.authorization) {
errors.addError(403, 'Forbidden', 'You cannot access this resource without authorization').endpoint(); errors.addError(403, 'Forbidden', 'You cannot access this resource without authorization');
next(errors);
return; return;
} }
const token = req.headers.authorization; const token = req.headers.authorization;
const user = await Auth.getUserFromToken(token); const user = await Auth.getUserFromToken(token);
if (user == -1) { if (user == -1 || !user.id) {
errors.addError(403, 'Forbidden', 'You cannot access this resource without authorization').endpoint(); errors.addError(403, 'Forbidden', 'You cannot access this resource without authorization');
next(errors);
return; return;
} }

View File

@@ -2,7 +2,7 @@ import {Logger} from '../../../models/logger';
export class ErrorHandler { export class ErrorHandler {
static async newError(err, req, res, next) { static async newError(err, req, res, next) {
Logger.error(err); // Logger.error(JSON.stringify(err));
res.end('an error has occured'); err.endpoint();
} }
} }

View File

@@ -1,29 +1,27 @@
import {ControllerHandler} from './controllerHandler'; import {ControllerHandler} from './controllerHandler';
import {API} from './api/api'; import {API} from './api/api';
import {Notes} from '../models/notes/notes'; import {Notes} from '../models/notes/notes';
import {Logger} from '../models/logger'
export class NoteController extends ControllerHandler { export class NoteController extends ControllerHandler {
static async newNote(req, res, next) { static async newNote(req, res, next) {
const errors = new API.errors(res); const errors = new API.errors(res);
const content = req.body.text || null; const content = req.body.text || null;
const creatorid = req.user.id || undefined;
const group = req.body.parentgroup || undefined; const group = req.body.parentgroup || undefined;
let order = req.body.order || undefined; let order = req.body.order || undefined;
const user = req.user || undefined; const user = req.user || undefined;
if (!creatorid || !user) { if (!user) {
errors.addError(403, 'Forbidden'); errors.addError(403, 'Forbidden');
errors.endpoint(); next(errors);
next();
return; return;
} }
if (!order) { if (!order) {
errors.addError(422, 'Unprocessable entity'); errors.addError(422, 'Unprocessable entity');
errors.endpoint(); next(errors);
next();
return; return;
} }
@@ -31,22 +29,20 @@ export class NoteController extends ControllerHandler {
let success; let success;
if (!group) { if (!group) {
success = await Notes.newNote(id, content, creatorid, order); success = await Notes.newNote(id, content, req.user, order);
} else { } else {
const doesExist = await Notes.doesGroupExist(user.id, parentgroup); const doesExist = await Notes.doesGroupExist(user.id, parentgroup);
if (!doesExist) { if (!doesExist) {
errors.addError(422, 'Unprocessable entity', 'You are trying to create a note for a group that does not exist'); errors.addError(422, 'Unprocessable entity', 'You are trying to create a note for a group that does not exist');
errors.endpoint(); next(errors);
next();
return; return;
} }
success = await Notes.newGroupedNote(id, content, creatorid, order, parentgroup); success = await Notes.newGroupedNote(id, content, req.user, order, parentgroup);
} }
if (success == -1) { if (success == -1) {
errors.addError(500, 'Internal server error'); errors.addError(500, 'Internal server error');
errors.endpoint(); next(errors);
next();
return; return;
} }
@@ -58,10 +54,10 @@ export class NoteController extends ControllerHandler {
// id: id, // id: id,
// content: content, // content: content,
// parentgroup: parentgroup, // parentgroup: parentgroup,
// creatorid: creatorid, // req.user: req.user,
// order: order, // order: order,
// catergory: null, // catergory: null,
// endpoint: null, // endpoint: null,
// lastupdated: new Date().getTime() // lastupdated: new Date().getTime()
// static async newNote(id, content, creatorid, order, parentgroup) { // static async newNote(id, content, req.user, order, parentgroup) {

View File

@@ -19,29 +19,29 @@ export class Router {
app.post('/login', [MiddleWare.RateLimits.request, Controllers.LoginController.authenticate]); app.post('/login', [MiddleWare.RateLimits.request, Controllers.LoginController.authenticate]);
app.get('/auth/user/:id', [MiddleWare.RateLimits.request, MiddleWare.Auth.authUser]); app.get('/auth/user/:id', [MiddleWare.RateLimits.request, MiddleWare.Auth.authUser]);
app.delete('/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.PermaNoteController.newPermaNote]); app.post('/unauth/permanote', [MiddleWare.RateLimits.request, Controllers.PermaNoteController.newPermaNote]);
app.get('/note/:endpoint', [MiddleWare.RateLimits.request, Controllers.PermaNoteController.getPermaNote]); 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/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.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/getallnotes', [MiddleWare.RateLimits.request, MiddleWare.Auth.authUser]);
app.get('/auth/getallgroups', [MiddleWare.RateLimits.request, MiddleWare.Auth.authUser]); app.get('/auth/getallgroups', [MiddleWare.RateLimits.request, MiddleWare.Auth.authUser]);
app.post('/auth/movenote', [MiddleWare.RateLimits.request, MiddleWare.Auth.authUser]); app.post('/auth/movenote', [MiddleWare.RateLimits.request, MiddleWare.Auth.authUser]);
app.post('/auth/movegroup', [MiddleWare.RateLimits.request, MiddleWare.Auth.authUser]); app.post('/auth/movegroup', [MiddleWare.RateLimits.request, MiddleWare.Auth.authUser]);
app.delete('/auth/deletenote', [MiddleWare.RateLimits.request, MiddleWare.Auth.authUser]); app.delete('/auth/deletenote', [MiddleWare.RateLimits.request, MiddleWare.Auth.authUser]);
app.delete('/auth/deletegroup', [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]); app.get('*', [MiddleWare.RateLimits.request, StatusCodes.pageNotFound]);
app.use(ErrorHandler.newError);
Logger.info('HTTP endpoints settup'); Logger.info('HTTP endpoints settup');
} }
static frontPage(req, res, next) { static async frontPage(req, res, next) {
// const err = "lol"; // const err = "lol";
// next(err); // next(err);
res.end('DEVELOPMENT SERVER'); res.end('DEVELOPMENT SERVER');

View File

@@ -2,8 +2,8 @@ import {Database} from '../database/database';
export class Auth { export class Auth {
static async getUserFromToken(token) { static async getUserFromToken(token) {
const id = await Database.auth.getIDByToken(token); const id = await Database.Authorization.getIDByToken(token);
if (id == -1) return id; if (id == -1) return id;
return await Database.users.getUserByID(id.id); return await Database.Users.getUserByID(id);
} }
} }