From 23cc90a42dbb57a538f9b6c1de1d1955159da1ef Mon Sep 17 00:00:00 2001 From: Braun Patrik Date: Wed, 12 Jul 2017 18:31:19 +0200 Subject: [PATCH] improving database settings --- backend/middlewares/AdminMWs.ts | 6 +++--- backend/middlewares/RenderingMWs.ts | 2 +- backend/model/PasswordHelper.ts | 8 ++++---- backend/model/mysql/MySQLConnection.ts | 6 +++++- common/config/private/PrivateConfigClass.ts | 6 ++++++ .../gallery/lightbox/lightbox.gallery.component.ts | 1 + frontend/app/model/network/network.service.ts | 3 +++ .../database/database.settings.component.html | 6 +++--- .../settings/database/database.settings.component.ts | 11 ++++++++++- .../settings/database/database.settings.service.ts | 2 +- package.json | 2 +- 11 files changed, 38 insertions(+), 15 deletions(-) diff --git a/backend/middlewares/AdminMWs.ts b/backend/middlewares/AdminMWs.ts index 82cd6863..f5497059 100644 --- a/backend/middlewares/AdminMWs.ts +++ b/backend/middlewares/AdminMWs.ts @@ -20,7 +20,7 @@ export class AdminMWs { const databaseSettings = req.body.databaseSettings; try { - if (Config.Server.database.type == DatabaseType.mysql) { + if (databaseSettings.type == DatabaseType.mysql) { await MySQLConnection.tryConnection(databaseSettings); } Config.Server.database = databaseSettings; @@ -50,12 +50,12 @@ export class AdminMWs { const databaseSettings = req.body.databaseSettings; try { - if (Config.Server.database.type == DatabaseType.mysql) { + if (databaseSettings.type == DatabaseType.mysql) { await MySQLConnection.tryConnection(databaseSettings); } return next(); } catch (err) { - return next(new Error(ErrorCodes.SETTINGS_ERROR, "Error saving database settings", err)); + return next(new Error(ErrorCodes.SETTINGS_ERROR, "Settings error: " + JSON.stringify(err, null, ' '), err)); } } } diff --git a/backend/middlewares/RenderingMWs.ts b/backend/middlewares/RenderingMWs.ts index a4e6022d..fe68bca2 100644 --- a/backend/middlewares/RenderingMWs.ts +++ b/backend/middlewares/RenderingMWs.ts @@ -51,7 +51,7 @@ export class RenderingMWs { public static renderConfig(req: Request, res: Response, next: NextFunction) { - let message = new Message(null, Config); + let message = new Message(null, Config.original()); res.json(message); } diff --git a/backend/model/PasswordHelper.ts b/backend/model/PasswordHelper.ts index ddc49ae8..45baed31 100644 --- a/backend/model/PasswordHelper.ts +++ b/backend/model/PasswordHelper.ts @@ -1,12 +1,12 @@ -import * as bcrypt from "bcryptjs"; +import * as bcryptjs from "bcryptjs"; export class PasswordHelper { public static cryptPassword(password) { - const salt = bcrypt.genSaltSync(10); - return bcrypt.hashSync(password, salt); + const salt = bcryptjs.genSaltSync(10); + return bcryptjs.hashSync(password, salt); } public static comparePassword(password, encryptedPassword) { - return bcrypt.compareSync(password, encryptedPassword); + return bcryptjs.compareSync(password, encryptedPassword); } } diff --git a/backend/model/mysql/MySQLConnection.ts b/backend/model/mysql/MySQLConnection.ts index ed827ef0..c6d1af78 100644 --- a/backend/model/mysql/MySQLConnection.ts +++ b/backend/model/mysql/MySQLConnection.ts @@ -1,5 +1,5 @@ import "reflect-metadata"; -import {Connection, createConnection} from "typeorm"; +import {Connection, createConnection, getConnection} from "typeorm"; import {UserEntity} from "./enitites/UserEntity"; import {UserRoles} from "../../../common/entities/UserDTO"; import {PhotoEntity, PhotoMetadataEntity} from "./enitites/PhotoEntity"; @@ -53,6 +53,10 @@ export class MySQLConnection { } public static async tryConnection(config: DataBaseConfig) { + try { + await getConnection("test").close(); + } catch (err) { + } const conn = await createConnection({ name: "test", driver: { diff --git a/common/config/private/PrivateConfigClass.ts b/common/config/private/PrivateConfigClass.ts index 71a832c4..ac1730af 100644 --- a/common/config/private/PrivateConfigClass.ts +++ b/common/config/private/PrivateConfigClass.ts @@ -52,5 +52,11 @@ export class PrivateConfigClass extends PublicConfigClass implements IPrivateCon public save() { ConfigLoader.saveConfigFile(path.join(__dirname, './../../../config.json'), this); } + + public original(): PrivateConfigClass { + let cfg = new PrivateConfigClass(); + cfg.load(); + return cfg; + } } diff --git a/frontend/app/gallery/lightbox/lightbox.gallery.component.ts b/frontend/app/gallery/lightbox/lightbox.gallery.component.ts index ed41f458..25f2a7e8 100644 --- a/frontend/app/gallery/lightbox/lightbox.gallery.component.ts +++ b/frontend/app/gallery/lightbox/lightbox.gallery.component.ts @@ -164,6 +164,7 @@ export class GalleryLightboxComponent implements OnDestroy { public hide() { this.controllersVisible = false; this.fullScreenService.exitFullScreen(); + this.pause(); const lightboxDimension = this.activePhoto.getDimension(); lightboxDimension.top -= this.getBodyScrollTop(); diff --git a/frontend/app/model/network/network.service.ts b/frontend/app/model/network/network.service.ts index 86e6e9a6..cfd48742 100644 --- a/frontend/app/model/network/network.service.ts +++ b/frontend/app/model/network/network.service.ts @@ -70,6 +70,9 @@ export class NetworkService { } private static handleError(error: any) { + if (error.code) { + return Promise.reject(error); + } // TODO: in a real world app do something better // instead of just logging it to the console console.error(error); diff --git a/frontend/app/settings/database/database.settings.component.html b/frontend/app/settings/database/database.settings.component.html index 935d083f..f8d89308 100644 --- a/frontend/app/settings/database/database.settings.component.html +++ b/frontend/app/settings/database/database.settings.component.html @@ -7,7 +7,7 @@

Type:

@@ -25,12 +25,12 @@