Merge pull request #1 from plane000/dev

Merge stable branch dev to master
This commit is contained in:
Benjamin Kyd
2018-11-05 18:18:02 +00:00
committed by GitHub
15 changed files with 34 additions and 24 deletions

View File

@@ -33,4 +33,4 @@ Object.defineProperty(global, "__function", {
} }
}); });
module.exports = require('./src/app'); module.exports = require('./src/index');

View File

@@ -31,4 +31,5 @@ export class APIErrors extends API {
this.res this.res
.status(this.errors.status.code) .status(this.errors.status.code)
.end(JSON.stringify(this.errors, false, 4)); .end(JSON.stringify(this.errors, false, 4));
}} }
}

View File

@@ -42,16 +42,13 @@ export class LoginController extends ControllerHandler {
let match = await User.Password.compare(password, user.password); let match = await User.Password.compare(password, user.password);
if (!match) errors.addError(401, 'Unauthorized', 'Incorrect password for user'); if (!match) {
errors.addError(401, 'Unauthorized', 'Incorrect password for user').endpoint();
if (errors.count() > 0) {
errors.endpoint();
next(); next();
return; return;
} }
let 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.auth.getTokenByID(user.id); let token = await Database.auth.getTokenByID(user.id);
if (token == -1) { if (token == -1) {

View File

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

View File

@@ -0,0 +1,6 @@
export class ErrorHandler {
static async newError(err, req, res, next) {
}
}

View File

@@ -4,7 +4,7 @@ import {Notes} from '../models/notes/notes';
export class NoteController extends ControllerHandler { export class NoteController extends ControllerHandler {
static async newNote(req, res, next) { 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 content = req.body.text || null;
let creatorid = req.user.id || undefined; let creatorid = req.user.id || undefined;
@@ -14,15 +14,13 @@ export class NoteController extends ControllerHandler {
let user = req.user || undefined; let user = req.user || undefined;
if (!creatorid || !user) { if (!creatorid || !user) {
errors.addError(403, 'Forbidden'); errors.addError(403, 'Forbidden').endpoint();
errors.endpoint();
next(); next();
return; return;
} }
if (!order) { if (!order) {
errors.addError(422, 'Unprocessable entity'); errors.addError(422, 'Unprocessable entity').endpoint();
errors.endpoint();
next(); next();
return; return;
} }
@@ -35,8 +33,7 @@ export class NoteController extends ControllerHandler {
} else { } else {
let doesExist = await Notes.doesGroupExist(user.id, parentgroup); let 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').endpoint();
errors.endpoint();
next(); next();
return; return;
} }
@@ -44,8 +41,7 @@ export class NoteController extends ControllerHandler {
} }
if (success == -1) { if (success == -1) {
errors.addError(500, 'Internal server error'); errors.addError(500, 'Internal server error').endpoint();
errors.endpoint();
next(); next();
return; return;
} }
@@ -53,7 +49,6 @@ export class NoteController extends ControllerHandler {
new API.note(res, user, id, content, order, parentgroup).endpoint(); new API.note(res, user, id, content, order, parentgroup).endpoint();
next(); next();
} }
} }
// id: id, // id: id,

View File

@@ -1,6 +1,7 @@
import {Logger} from '../../models/logger'; import {Logger} from '../../models/logger';
import {Server} from '../../server'; import {Server} from '../../server';
import {MiddleWare} from '../middleware/index'; import {MiddleWare} from '../middleware/index';
import {ErrorHandler} from '../middleware/errors/errorHandler';
import {StatusCodes} from '../status'; import {StatusCodes} from '../status';
import {Controllers} from '../index'; import {Controllers} from '../index';
@@ -16,7 +17,6 @@ export class Router {
app.post('/user', [MiddleWare.RateLimits.request, Controllers.UserController.newUser]); app.post('/user', [MiddleWare.RateLimits.request, Controllers.UserController.newUser]);
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]);
@@ -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/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]);
@@ -35,6 +35,7 @@ export class Router {
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]);
Logger.info('HTTP endpoints settup'); Logger.info('HTTP endpoints settup');
} }

View File

@@ -3,7 +3,7 @@ import {Config} from './config/config';
import {Database} from './models/database/database'; import {Database} from './models/database/database';
import {Server} from './server'; import {Server} from './server';
import {Router} from './controllers/routes/router'; import {Router} from './controllers/routes/router';
import {MiddleWare} from './controllers/middleware/index'; import {MiddleWare} from './controllers/middleware';
init(); init();
async function init() { async function init() {
@@ -24,6 +24,8 @@ async function init() {
// Logger.debug(JSON.stringify(await Database.users.listAll(), null, 4)); // 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(); // 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.database('Database Log');
// Logger.middleware('GET request to /'); // Logger.middleware('GET request to /');
// Logger.debug('Debug mode enabled'); // Logger.debug('Debug mode enabled');

View File

@@ -2,6 +2,11 @@ import {BaseDatabase} from './baseDatabase';
import {Logger} from '../logger'; import {Logger} from '../logger';
export class NoteGroupTools extends BaseDatabase { export class NoteGroupTools extends BaseDatabase {
static async listAll() {
let Group = BaseDatabase.Group;
return Group.findAll();
}
static async newGroup(id, creatorid, order) { static async newGroup(id, creatorid, order) {
let Group = BaseDatabase.Group; let Group = BaseDatabase.Group;

View File

@@ -2,6 +2,11 @@ import {BaseDatabase} from './baseDatabase';
import {Logger} from '../logger'; import {Logger} from '../logger';
export class NoteTools extends BaseDatabase { export class NoteTools extends BaseDatabase {
static async listAll() {
let Note = BaseDatabase.Note;
return Note.findAll();
}
static async newNote(id, content, creatorid, order, parentgroup) { static async newNote(id, content, creatorid, order, parentgroup) {
parentgroup = parentgroup || null; parentgroup = parentgroup || null;
let Note = BaseDatabase.Note; let Note = BaseDatabase.Note;