Merge pull request #4 from plane000/dev

Merge stable branch dev to master
This commit is contained in:
Benjamin Kyd
2018-11-09 18:29:25 +00:00
committed by GitHub
31 changed files with 149 additions and 6896 deletions

1
.gitignore vendored
View File

@@ -1,2 +1,3 @@
node_modules
package-lock.json
logs.log

View File

@@ -1 +1,3 @@
# note service server
API Backend services for the Note Service web service.

View File

@@ -101,7 +101,7 @@ Expected response:
Request body:
{
"text": textOfNote
"content": textOfNote
}
The request will be processed by the server if a text feild is present, then the server will store and generate an endpoint for the permalink.

6742
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -14,7 +14,7 @@
"jsonwebtoken": "^8.3.0",
"regenerator-runtime": "^0.12.1",
"sequelize": "^4.38.0",
"sqlite3": "^4.0.2"
"sqlite3": "^4.0.3"
},
"devDependencies": {
"babel-preset-env": "^1.7.0",

View File

@@ -1,10 +1,10 @@
import {ControllerHandler} from './controllerHandler';
import {API} from '../models/api/api';
import {API} from './api/api';
import {Notes} from '../models/notes/notes';
export class GroupController extends ControllerHandler {
static async newGroup(req, res, next) {
let errors = new API.errors(res);
const errors = new API.errors(res);
next()

View File

@@ -1,7 +1,7 @@
export let Controllers = {};
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;

View File

@@ -1,11 +1,11 @@
import {ControllerHandler} from './controllerHandler';
import {API} from '../models/api/api';
import {API} from './api/api';
import {Database} from '../models/database/database'
import {User} from '../models/user/user';
export class LoginController extends ControllerHandler {
static async authenticate(req, res, next) {
let errors = new API.errors(res);
const errors = new API.errors(res);
let ip = req.connection.remoteAddress;
if (ip.startsWith('::ffff:')) ip = ip.substring(7);
@@ -25,11 +25,11 @@ export class LoginController extends ControllerHandler {
let user;
if (!username /*If they're loging in with email*/) {
user = await Database.users.getUser('email', email);
user = await Database.Users.getUser('email', email);
if (user == -1) errors.addError(422, 'Unprocessable entity', 'There is no user with that email');
username = user.username;
} else {
user = await Database.users.getUser('username', username);
user = await Database.Users.getUser('username', username);
if (user == -1) errors.addError(422, 'Unprocessable entity', 'There is no user with that username');
email = user.email;
}
@@ -40,23 +40,23 @@ export class LoginController extends ControllerHandler {
return;
}
let match = await User.Password.compare(password, user.password);
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;
}
let response = new API.user(res, user.id, username, email, new Date(parseInt(user.lastupdated)).toLocaleString());
let token = await Database.auth.getTokenByID(user.id);
const response = new API.user(res, user.id, username, email, new Date(parseInt(user.lastupdated)).toLocaleString());
let token = await Database.Authorization.getTokenByID(user.id);
if (token == -1) {
let encryptedPass = await User.Password.gen(password);
const encryptedPass = await User.Password.gen(password);
password = null; // Cleaning password from memory
let status = response.getStatus;
const status = response.getStatus;
token = User.Token.gen(status, user.id, encryptedPass);
Database.auth.newToken(user.id, token, encryptedPass);
Database.Authorization.newToken(user.id, token, encryptedPass);
}
response.Token = token.token;

View File

@@ -1,19 +1,19 @@
import {MiddleWare} from './index';
import {API} from '../../models/api/API';
import {MiddleWare} from './middleware';
import {API} from '../api/api';
import {Logger} from '../../models/logger'
import {AuthModel} from '../../models/auth/authModel';
import {Auth} from '../../models/auth/authModel';
export class AuthMiddleWare extends MiddleWare {
static async authUser(req, res, next) {
let errors = new API.errors(res);
const errors = new API.errors(res);
if (!req.headers.authorization) {
errors.addError(403, 'Forbidden', 'You cannot access this resource without authorization').endpoint();
return;
}
let token = req.headers.authorization;
let user = await AuthModel.getUserFromToken(token);
const token = req.headers.authorization;
const user = await Auth.getUserFromToken(token);
if (user == -1) {
errors.addError(403, 'Forbidden', 'You cannot access this resource without authorization').endpoint();
return;

View File

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

View File

@@ -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
@@ -7,7 +7,7 @@ let buckets = {}
export class RateLimits extends MiddleWare {
static async request(req, res, next) {
let ip = req.connection.remoteAddress;
const ip = req.connection.remoteAddress;
MiddleWare.analytics(req, res, next);
if (!buckets[ip]) {

View File

@@ -1,39 +1,42 @@
import {ControllerHandler} from './controllerHandler';
import {API} from '../models/api/api';
import {API} from './api/api';
import {Notes} from '../models/notes/notes';
export class NoteController extends ControllerHandler {
static async newNote(req, res, next) {
const errors = new API.errors(res);
let content = req.body.text || null;
let creatorid = req.user.id || undefined;
let group = req.body.parentgroup || undefined;
const content = req.body.text || null;
const creatorid = req.user.id || undefined;
const group = req.body.parentgroup || undefined;
let order = req.body.order || undefined;
let user = req.user || undefined;
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;
}
let id = await Notes.genID();
const id = await Notes.genID();
let success;
if (!group) {
success = await Notes.newNote(id, content, creatorid, order);
} else {
let doesExist = await Notes.doesGroupExist(user.id, parentgroup);
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;
}

View File

@@ -1,30 +1,27 @@
import {Logger} from '../models/logger';
import {ControllerHandler} from './controllerHandler';
import {API} from '../models/api/api';
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) {
let errors = new API.errors(res);
let text = req.body.content || undefined;
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');
errors.addError(422, 'Unprocessable entity', 'There is no content');
errors.endpoint();
next();
return;
}
let uid = await PermaLink.genUID() || new Date().getTime();
let endpoint = await PermaLink.genEndpoint();
let success = await Database.permalink.newNote(uid, endpoint, content);
const uid = await PermaLink.genUID() || new Date().getTime();
const endpoint = await PermaLink.genEndpoint();
const success = await Database.PermaNotes.newNote(uid, endpoint, content);
if (success == -1) {
errors.addError(500, 'Internal server error');
errors.endpoint();
next();
return;
}
@@ -32,17 +29,16 @@ export class PermaLinkController extends ControllerHandler {
next();
}
static async getNote(req, res, next) {
let endpoint = req.params.endpoint || undefined;
static async getPermaNote(req, res, next) {
const endpoint = req.params.endpoint || undefined;
if (!endpoint) {
next();
return;
}
let data = await Database.permalink.getNoteByEndpoint(endpoint);
const data = await Database.PermaNotes.getNoteByEndpoint(endpoint);
if (data == -1) {
next();
res.status(404).end('404 Not Found');
return;
}

View File

@@ -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]);
@@ -35,8 +35,9 @@ 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]);
app.use(ErrorHandler.newError);
Logger.info('HTTP endpoints settup');
}

View File

@@ -2,19 +2,19 @@ import bcrypt from 'bcrypt';
import {Logger} from '../models/logger';
import {ControllerHandler} from './controllerHandler';
import {API} from '../models/api/api';
import {API} from './api/api';
import {Database} from '../models/database/database'
import {User} from '../models/user/user';
export class UserController extends ControllerHandler {
static async newUser(req, res, next) {
let errors = new API.errors(res);
const errors = new API.errors(res);
let ip = req.connection.remoteAddress;
if (ip.startsWith('::ffff:')) ip = ip.substring(7);
let username = req.body.username || undefined;
let email = req.body.email || undefined;
const username = req.body.username || undefined;
const email = req.body.email || undefined;
let password = req.body.password || undefined;
if (!username || !email || !password) errors.addError(422, 'Unprocessaable entity', 'Missing username, email or password in body of request');
@@ -24,8 +24,8 @@ export class UserController extends ControllerHandler {
if (!UserController.isPasswordValid(password)) errors.addError(422, 'Unprocessaable entity', 'Invalid password has spaces');
if (password.length < 7) errors.addError(422, 'Unprocessaable entity', 'Invalid password less than 7 charicters');
if (await Database.users.getUser('username', username) != -1) errors.addError(422, 'Unprocessable entity', 'A user with that username allready exists');
if (await Database.users.getUser('email', email) != -1) errors.addError(422, 'Unprocessable entity', 'A user with that email allready exists');
if (await Database.Users.getUser('username', username) != -1) errors.addError(422, 'Unprocessable entity', 'A user with that username allready exists');
if (await Database.Users.getUser('email', email) != -1) errors.addError(422, 'Unprocessable entity', 'A user with that email allready exists');
if (errors.count() > 0) {
errors.endpoint();
@@ -33,22 +33,23 @@ export class UserController extends ControllerHandler {
return;
}
let response = new API.user(res, id, username, email, new Date().toLocaleString());
const response = new API.user(res, id, username, email, new Date().toLocaleString());
let encryptedPass = await User.Password.gen(password);
const encryptedPass = await User.Password.gen(password);
password = null; // Cleaning password from memory
let status = response.getStatus;
const status = response.getStatus;
let id = new Date().getTime();
let token = await User.Token.gen(status, id, encryptedPass);
await Database.auth.newToken(id, token, encryptedPass);
const id = new Date().getTime();
const token = await User.Token.gen(status, id, encryptedPass);
await Database.Authorization.newToken(id, token, encryptedPass);
response.Token = token;
let user = new User(id, username, encryptedPass, email, ip, 1234);
let success = await user.insert();
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;
}

View File

@@ -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() {
@@ -24,7 +24,7 @@ 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.debug(JSON.stringify(await Database.Notes.listAll(), null, 4));;
// Logger.database('Database Log');
// Logger.middleware('GET request to /');

View File

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

View File

@@ -5,30 +5,20 @@ import {Logger} from '../logger';
export class Database extends BaseDatabase {
static async exec(query) {
let connection = BaseDatabase.Connection;
let res;
let promise = new Promise((resolve, reject) => {
connection
.query(query)
.then(result => {
Logger.database(JSON.stringify(res, null, 4));
res = result[0][0].result;
resolve();
})
.catch(err => {
Logger.error('An error occured while querying a database: ' + err);
reject()
});
});
await promise;
return res;
const connection = super.Connection;
try {
const result = await connection.query(query);
Logger.database(JSON.stringify(result, null, 4));
return result[0][0].result;
}
catch (e) {
Logger.error(`An error occured while querying a database: ${e}`);
}
}
}
Database.users = require('./users').UserTools;
Database.auth = require('./tokens').TokenTools;
Database.permalink = require('./permalinks').PermaLinkTools;
Database.notegroup = require('./notegroups').NoteGroupTools;
Database.note = require('./notes').NoteTools;
Database.Users = require('./users').UserTools;
Database.Authorization = require('./tokens').TokenTools;
Database.PermaNotes = require('./permalinks').PermaLinkTools;
Database.NoteGroups = require('./notegroups').NoteGroupTools;
Database.Notes = require('./notes').NoteTools;

View File

@@ -8,7 +8,7 @@ export class NoteGroupTools extends BaseDatabase {
}
static async newGroup(id, creatorid, order) {
let Group = BaseDatabase.Group;
const Group = super.Group;
try {
let group = await Group.create({
@@ -25,7 +25,7 @@ export class NoteGroupTools extends BaseDatabase {
}
static async deleteGroup(id) {
let Group = BaseDatabase.Group;
const Group = super.Group;
try {
await Group.destroy({where: {id: id}});
@@ -37,7 +37,7 @@ export class NoteGroupTools extends BaseDatabase {
}
static async renameGroup(id, newName) {
let Group = BaseDatabase.Group;
const Group = super.Group;
try {
await Group.update({name: newName}, {where: {id: id}});
@@ -50,7 +50,7 @@ export class NoteGroupTools extends BaseDatabase {
}
static async reorderGroup(id, newPosition) {
let Group = BaseDatabase.Group;
const Group = super.Group;
try {
await Group.update({order: newPosition}, {where: {id: id}});
@@ -63,7 +63,7 @@ export class NoteGroupTools extends BaseDatabase {
}
static async getGroupByID(id) {
let Group = BaseDatabase.Group;
const Group = super.Group;
try {
let group = await Group.findOne({where: {id: id}});
@@ -76,7 +76,7 @@ export class NoteGroupTools extends BaseDatabase {
}
static async getAllUsersGroups(userid) {
let Group = BaseDatabase.Group;
const Group = super.Group;
try {
let group = Group.findAll({where: {creatorid: userid}});
@@ -89,7 +89,7 @@ export class NoteGroupTools extends BaseDatabase {
}
static async updateLastUpdatedTime(id) {
let Group = BaseDatabase.Group;
const Group = super.Group;
try {
await Group.update({lastupdated: new Date().getTime()}, {where: {id: id}});

View File

@@ -3,13 +3,13 @@ import {Logger} from '../logger';
export class NoteTools extends BaseDatabase {
static async listAll() {
let Note = BaseDatabase.Note;
const Note = super.Note;
return Note.findAll();
}
static async newNote(id, content, creatorid, order, parentgroup) {
parentgroup = parentgroup || null;
let Note = BaseDatabase.Note;
const Note = super.Note;
try {
let note = await Note.create({
@@ -30,7 +30,7 @@ export class NoteTools extends BaseDatabase {
}
static async deleteNote(id) {
let Note = BaseDatabase.Note;
const Note = super.Note;
try {
await Note.destroy({where: {id: id}});
@@ -42,7 +42,7 @@ export class NoteTools extends BaseDatabase {
}
static async makePermaLink(id, endpoint) {
let Note = BaseDatabase.Note;
const Note = super.Note;
try {
await Note.update({endpoint: endpoint}, {where: {id: id}});
@@ -54,7 +54,7 @@ export class NoteTools extends BaseDatabase {
}
static async getNoteByEndpoint(endpoint) {
let Note = BaseDatabase.Note;
const Note = super.Note;
try {
let note = await Note.findOne({where: {endpoint: endpoint}});
@@ -67,7 +67,7 @@ export class NoteTools extends BaseDatabase {
}
static async updateNote(id, newContent) {
let Note = BaseDatabase.Note;
const Note = super.Note;
try {
await Note.update({content: newContent}, {where: {id: id}});
@@ -80,7 +80,7 @@ export class NoteTools extends BaseDatabase {
}
static async updateCatergory(id, newCatergory) {
let Note = BaseDatabase.Note;
const Note = super.Note;
try {
await Note.update({catergory: newCatergory}, {where: {id: id}});
@@ -93,7 +93,7 @@ export class NoteTools extends BaseDatabase {
}
static async reorderNote(id, newOrder) {
let Note = BaseDatabase.Note;
const Note = super.Note;
try {
await Note.update({order: newOrder}, {where: {id: id}});
@@ -106,7 +106,7 @@ export class NoteTools extends BaseDatabase {
}
static async renameNote(id, newName) {
let Note = BaseDatabase.Note;
const Note = super.Note;
try {
await Note.update({name: newName}, {where: {id: id}});
@@ -119,7 +119,7 @@ export class NoteTools extends BaseDatabase {
}
static async getNoteByID(id) {
let Note = BaseDatabase.Note;
const Note = super.Note;
try {
let note = await Note.findOne({where: {id: id}});
@@ -132,7 +132,7 @@ export class NoteTools extends BaseDatabase {
}
static async getAllUserNotes(userid) {
let Note = BaseDatabase.Note;
const Note = super.Note;
try {
let note = await Note.findAll({where: {creatorid: userid}});
@@ -145,7 +145,7 @@ export class NoteTools extends BaseDatabase {
}
static async getAllGroupedNotes(groupid) {
let Note = BaseDatabase.Note;
const Note = super.Note;
try {
let note = await Note.findAll({where: {parentgroup: groupid}});
@@ -158,7 +158,7 @@ export class NoteTools extends BaseDatabase {
}
static async updateLastUpdateTime(id) {
let Note = BaseDatabase.Note;
const Note = super.Note;
try {
await Note.update({lastupdated: new Date().getTime()}, {where: {id: id}});

View File

@@ -5,16 +5,16 @@ import {Logger} from '../logger';
export class PermaLinkTools extends BaseDatabase {
static async listAll() {
let PermaNote = BaseDatabase.PermaNote;
const PermaNote = super.PermaNote;
return PermaNote.findAll();
}
static async newNote(uid, endpoint, text, id) {
let PermaNote = BaseDatabase.PermaNote;
const PermaNote = super.PermaNote;
try {
let note = await PermaNote.create({
id: id,
id: uid,
endpoint: endpoint,
text: text,
creatorid: id
@@ -27,7 +27,7 @@ export class PermaLinkTools extends BaseDatabase {
}
static async getNoteByUID(id) {
let PermaNote = BaseDatabase.PermaNote;
const PermaNote = super.PermaNote;
try {
let note = await PermaNote.findOne({where: {id: id}});
@@ -40,7 +40,7 @@ export class PermaLinkTools extends BaseDatabase {
}
static async getNoteByEndpoint(endpoint) {
let PermaNote = BaseDatabase.PermaNote;
const PermaNote = super.PermaNote;
try {
let note = await PermaNote.findOne({where: {endpoint: endpoint}});

View File

@@ -3,12 +3,12 @@ import {Logger} from '../logger';
export class TokenTools extends BaseDatabase {
static async listAll() {
let Auth = BaseDatabase.Auth;
const Auth = super.Auth;
return Auth.findAll();
}
static async newToken(id, token, passHash) {
let Auth = BaseDatabase.Auth;
const Auth = super.Auth;
try {
let auth = await Auth.create({
@@ -24,7 +24,7 @@ export class TokenTools extends BaseDatabase {
}
static async delete(id) {
let Auth = BaseDatabase.Auth;
const Auth = super.Auth;
try {
await Auth.destroy({where: {id: id}});
@@ -36,7 +36,7 @@ export class TokenTools extends BaseDatabase {
}
static async getTokenByID(id) {
let Auth = BaseDatabase.Auth;
const Auth = super.Auth;
try {
let auth = await Auth.findOne({where: {id: id}});
@@ -49,7 +49,7 @@ export class TokenTools extends BaseDatabase {
}
static async getIDByToken(token) {
let Auth = BaseDatabase.Auth;
const Auth = super.Auth;
try {
let auth = await Auth.findOne({where: {token: token}});
@@ -62,7 +62,7 @@ export class TokenTools extends BaseDatabase {
}
static async getTokenByPassHash(hash) {
let Auth = BaseDatabase.Auth;
const Auth = super.Auth;
try {
let auth = await Auth.findOne({where: {passhash: hash}});
@@ -75,7 +75,7 @@ export class TokenTools extends BaseDatabase {
}
static async updateToken(id, newToken) {
let Auth = BaseDatabase.Auth;
const Auth = super.Auth;
try {
await Auth.update({token: newToken}, {where: {id: id}});

View File

@@ -5,12 +5,12 @@ import {Logger} from '../logger';
export class UserTools extends BaseDatabase {
static async listAll() {
let User = BaseDatabase.User;
const User = super.User;
return User.findAll();
}
static async newUser(id, username, password, email, ip, authcode) {
let User = BaseDatabase.User;
const User = super.User;
try {
let user = await User.create({
@@ -32,7 +32,7 @@ export class UserTools extends BaseDatabase {
}
static async deleteUser(id) {
let User = BaseDatabase.User;
const User = super.User;
try {
await User.destroy({where: {id: id}});
@@ -44,7 +44,7 @@ export class UserTools extends BaseDatabase {
}
static async getUserByID(id) {
let User = BaseDatabase.User;
const User = super.User;
try {
let user = await User.findOne({where: {id: id}});
@@ -57,7 +57,7 @@ export class UserTools extends BaseDatabase {
}
static async getUser(column, search) {
let User = BaseDatabase.User;
const User = super.User;
try {
let user;
@@ -90,7 +90,7 @@ export class UserTools extends BaseDatabase {
}
static async updateIP(id, newIP) {
let User = BaseDatabase.User;
const User = super.User;
try {
await User.update({ip: newIP}, {where: {id: id}});
@@ -102,7 +102,7 @@ export class UserTools extends BaseDatabase {
}
static async authUser(id) {
let User = BaseDatabase.User;
const User = super.User;
try {
let user = await User.update({verified: true}, {where: {id: id}});

View File

@@ -14,7 +14,7 @@ export class PermaLink {
for (let i = 0; i < 7; i++)
endpoint += possible[Math.floor(Math.random() * possible.length)];
if (await Database.permalink.getNoteByEndpoint(endpoint) == -1)
if (await Database.PermaNotes.getNoteByEndpoint(endpoint) == -1)
break;
}

View File

@@ -6,19 +6,19 @@ import {Logger} from '../logger';
export class Password extends User {
static async gen(passwordSecret) {
let prehash = await sha256(passwordSecret);
let toHash = Buffer.from(prehash).toString('base64');
let salt = await bcrypt.genSaltSync(10);
let hash = await bcrypt.hashSync(toHash, salt);
const prehash = await sha256(passwordSecret);
const toHash = Buffer.from(prehash).toString('base64');
const salt = await bcrypt.genSaltSync(10);
const hash = await bcrypt.hashSync(toHash, salt);
return hash;
}
static async compare(password, hashToCompare) {
try {
let prehash = await sha256(password);
let toHash = Buffer.from(prehash).toString('base64');
let res = await bcrypt.compareSync(toHash, hashToCompare);
const prehash = await sha256(password);
const toHash = Buffer.from(prehash).toString('base64');
const res = await bcrypt.compareSync(toHash, hashToCompare);
return res;
} catch (e) {

View File

@@ -4,9 +4,9 @@ import {User} from './user';
export class Token extends User {
static async gen(status, clientID, clientSecret) {
let preGen = clientID + ':' + clientSecret;
const preGen = clientID + ':' + clientSecret;
let token = await jwt.sign(status, preGen);
const token = await jwt.sign(status, preGen);
return token;
}

View File

@@ -9,7 +9,7 @@ export class User extends BaseUser {
}
async insert() {
this._instance = await Database.users.newUser(this.id, this.username, this.password, this.email, this.ip, this.authcode)
this._instance = await Database.Users.newUser(this.id, this.username, this.password, this.email, this.ip, this.authcode);
if (this._instance == -1) return -1;
Logger.debug(`New user [${this.id}] ${this.username}`);
}

View File

@@ -6,7 +6,7 @@ import {Config} from './config/config';
let app;
let server;
let router
let router;
export class Server {
static get App() {return app}