mirror of
https://github.com/xuthus83/pigallery2.git
synced 2025-01-14 14:43:17 +08:00
refactoring middleware rendering methods
This commit is contained in:
parent
7d246dc909
commit
9ceac016aa
@ -1,17 +1,18 @@
|
|||||||
|
///<reference path="ExtendedRequest.d.ts"/>
|
||||||
|
///<reference path="../../typings/main.d.ts"/>
|
||||||
|
|
||||||
|
|
||||||
import {UserManager} from "../model/UserManager";
|
import {UserManager} from "../model/UserManager";
|
||||||
import {NextFunction, Request, Response} from "express";
|
import {NextFunction, Request, Response} from "express";
|
||||||
import {BaseMWs} from "./BaseMWs";
|
|
||||||
import {Error, ErrorCodes} from "../../common/entities/Error";
|
import {Error, ErrorCodes} from "../../common/entities/Error";
|
||||||
import {UserRoles} from "../../common/entities/User";
|
import {UserRoles} from "../../common/entities/User";
|
||||||
import {Utils} from "../../common/Utils";
|
|
||||||
|
|
||||||
export class AuthenticationMWs extends BaseMWs{
|
export class AuthenticationMWs {
|
||||||
|
|
||||||
|
|
||||||
public static authenticate(req:Request, res:Response, next:NextFunction){
|
public static authenticate(req:Request, res:Response, next:NextFunction){
|
||||||
if (typeof req.session.user === 'undefined') {
|
if (typeof req.session.user === 'undefined') {
|
||||||
return super.renderError(res,new Error(ErrorCodes.NOT_AUTHENTICATED));
|
return next(new Error(ErrorCodes.NOT_AUTHENTICATED));
|
||||||
}
|
}
|
||||||
return next();
|
return next();
|
||||||
}
|
}
|
||||||
@ -19,7 +20,7 @@ export class AuthenticationMWs extends BaseMWs{
|
|||||||
public static authorise(role:UserRoles){
|
public static authorise(role:UserRoles){
|
||||||
return (req:Request, res:Response, next:NextFunction) => {
|
return (req:Request, res:Response, next:NextFunction) => {
|
||||||
if (req.session.user.role < role) {
|
if (req.session.user.role < role) {
|
||||||
return super.renderError(res, new Error(ErrorCodes.NOT_AUTHORISED));
|
return next(new Error(ErrorCodes.NOT_AUTHORISED));
|
||||||
}
|
}
|
||||||
return next();
|
return next();
|
||||||
};
|
};
|
||||||
@ -27,7 +28,7 @@ export class AuthenticationMWs extends BaseMWs{
|
|||||||
|
|
||||||
public static inverseAuthenticate(req:Request, res:Response, next:NextFunction){
|
public static inverseAuthenticate(req:Request, res:Response, next:NextFunction){
|
||||||
if (typeof req.session.user !== 'undefined') {
|
if (typeof req.session.user !== 'undefined') {
|
||||||
return super.renderError(res,new Error(ErrorCodes.ALREADY_AUTHENTICATED));
|
return next(new Error(ErrorCodes.ALREADY_AUTHENTICATED));
|
||||||
}
|
}
|
||||||
return next();
|
return next();
|
||||||
}
|
}
|
||||||
@ -45,7 +46,7 @@ export class AuthenticationMWs extends BaseMWs{
|
|||||||
password: req.body.loginCredential.password
|
password: req.body.loginCredential.password
|
||||||
}, (err, result) => {
|
}, (err, result) => {
|
||||||
if ((err) || (!result)) {
|
if ((err) || (!result)) {
|
||||||
return super.renderError(res,new Error(ErrorCodes.CREDENTIAL_NOT_FOUND));
|
return next(new Error(ErrorCodes.CREDENTIAL_NOT_FOUND));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -57,15 +58,6 @@ export class AuthenticationMWs extends BaseMWs{
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
public static renderUser(req:Request, res:Response, next:NextFunction){
|
|
||||||
if(!(req.session.user)){
|
|
||||||
return super.renderError(res,new Error(ErrorCodes.GENERAL_ERROR));
|
|
||||||
}
|
|
||||||
|
|
||||||
let user = Utils.clone(req.session.user);
|
|
||||||
delete user.password;
|
|
||||||
super.renderMessage(res,user);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
@ -1,21 +0,0 @@
|
|||||||
|
|
||||||
import {NextFunction, Request, Response} from "express";
|
|
||||||
import {Message} from "../../common/entities/Message";
|
|
||||||
import {Error} from "../../common/entities/Error";
|
|
||||||
|
|
||||||
export class BaseMWs {
|
|
||||||
|
|
||||||
protected static renderMessage<T>(res:Response, content:T){
|
|
||||||
let message = new Message<T> (null,content);
|
|
||||||
res.json(message);
|
|
||||||
}
|
|
||||||
protected static renderError(res:Response, error:Error){
|
|
||||||
let message = new Message<any> (error,null);
|
|
||||||
res.json(message);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static renderOK(req:Request, res:Response, next:NextFunction){
|
|
||||||
let message = new Message<string> (null,"ok");
|
|
||||||
res.json(message);
|
|
||||||
}
|
|
||||||
}
|
|
14
backend/middlewares/ExtendedRequest.d.ts
vendored
Normal file
14
backend/middlewares/ExtendedRequest.d.ts
vendored
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
|
||||||
|
declare module Express {
|
||||||
|
export interface Request{
|
||||||
|
resultPipe?:any
|
||||||
|
body?:{
|
||||||
|
loginCredential
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface Session {
|
||||||
|
user?;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,10 +0,0 @@
|
|||||||
|
|
||||||
declare namespace Express {
|
|
||||||
|
|
||||||
export interface Request {
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface Session {
|
|
||||||
user?;
|
|
||||||
}
|
|
||||||
}
|
|
@ -2,15 +2,14 @@
|
|||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
import * as fs from 'fs';
|
import * as fs from 'fs';
|
||||||
import {NextFunction, Request, Response} from "express";
|
import {NextFunction, Request, Response} from "express";
|
||||||
import {BaseMWs} from "./BaseMWs";
|
|
||||||
import {Error, ErrorCodes} from "../../common/entities/Error";
|
import {Error, ErrorCodes} from "../../common/entities/Error";
|
||||||
import {GalleryManager} from "../model/GalleryManager";
|
import {GalleryManager} from "../model/GalleryManager";
|
||||||
import {Directory} from "../../common/entities/Directory";
|
import {Directory} from "../../common/entities/Directory";
|
||||||
|
|
||||||
export class GalleryMWs extends BaseMWs{
|
export class GalleryMWs {
|
||||||
|
|
||||||
|
|
||||||
public static listDirectory(req:Request, res:Response, next:NextFunction){
|
public static listDirectory(req:Request, res:Response, next:NextFunction){
|
||||||
let directoryName = "/";
|
let directoryName = "/";
|
||||||
if(req.params.directory){
|
if(req.params.directory){
|
||||||
directoryName = req.params.directory;
|
directoryName = req.params.directory;
|
||||||
@ -23,15 +22,15 @@ export class GalleryMWs extends BaseMWs{
|
|||||||
|
|
||||||
GalleryManager.listDirectory(directoryName,(err,directory:Directory) => {
|
GalleryManager.listDirectory(directoryName,(err,directory:Directory) => {
|
||||||
if(err || !directory){
|
if(err || !directory){
|
||||||
return super.renderError(res,new Error(ErrorCodes.GENERAL_ERROR,err));
|
return next(new Error(ErrorCodes.GENERAL_ERROR,err));
|
||||||
}
|
}
|
||||||
|
req.resultPipe = directory;
|
||||||
return super.renderMessage(res,directory);
|
return next();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public static renderImage(req:Request, res:Response, next:NextFunction){
|
public static loadImage(req:Request, res:Response, next:NextFunction){
|
||||||
let directoryName = "/";
|
let directoryName = "/";
|
||||||
if(req.params.directory){
|
if(req.params.directory){
|
||||||
directoryName = req.params.directory;
|
directoryName = req.params.directory;
|
||||||
@ -44,23 +43,24 @@ export class GalleryMWs extends BaseMWs{
|
|||||||
if(fs.statSync(fullImagePath).isDirectory()){
|
if(fs.statSync(fullImagePath).isDirectory()){
|
||||||
return next();
|
return next();
|
||||||
}
|
}
|
||||||
|
|
||||||
return res.sendFile(fullImagePath);
|
req.resultPipe = fullImagePath;
|
||||||
|
return next();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static renderThumbnail(req:Request, res:Response, next:NextFunction){
|
public static loadThumbnail(req:Request, res:Response, next:NextFunction){
|
||||||
//TODO: implement
|
//TODO: implement
|
||||||
return super.renderError(res,new Error(ErrorCodes.GENERAL_ERROR));
|
return next(new Error(ErrorCodes.GENERAL_ERROR));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static search(req:Request, res:Response, next:NextFunction){
|
public static search(req:Request, res:Response, next:NextFunction){
|
||||||
//TODO: implement
|
//TODO: implement
|
||||||
return super.renderError(res,new Error(ErrorCodes.GENERAL_ERROR));
|
return next(new Error(ErrorCodes.GENERAL_ERROR));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static autocomplete(req:Request, res:Response, next:NextFunction){
|
public static autocomplete(req:Request, res:Response, next:NextFunction){
|
||||||
//TODO: implement
|
//TODO: implement
|
||||||
return super.renderError(res,new Error(ErrorCodes.GENERAL_ERROR));
|
return next(new Error(ErrorCodes.GENERAL_ERROR));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
54
backend/middlewares/RenderingMWs.ts
Normal file
54
backend/middlewares/RenderingMWs.ts
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
|
||||||
|
import {NextFunction, Request, Response} from "express";
|
||||||
|
import {Error, ErrorCodes} from "../../common/entities/Error";
|
||||||
|
import {Utils} from "../../common/Utils";
|
||||||
|
import {Message} from "../../common/entities/Message";
|
||||||
|
|
||||||
|
export class RenderingMWs {
|
||||||
|
|
||||||
|
public static renderResult(req:Request, res:Response, next:NextFunction){
|
||||||
|
if(!req.resultPipe)
|
||||||
|
return next();
|
||||||
|
|
||||||
|
return RenderingMWs.renderMessage(res,req.resultPipe);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static renderSessionUser(req:Request, res:Response, next:NextFunction){
|
||||||
|
if(!(req.session.user)){
|
||||||
|
return next(new Error(ErrorCodes.GENERAL_ERROR));
|
||||||
|
}
|
||||||
|
|
||||||
|
let user = Utils.clone(req.session.user);
|
||||||
|
delete user.password;
|
||||||
|
RenderingMWs.renderMessage(res,user);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static renderFile(req:Request, res:Response, next:NextFunction){
|
||||||
|
if(!req.resultPipe)
|
||||||
|
return next();
|
||||||
|
|
||||||
|
return res.sendFile(req.resultPipe);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static renderOK(req:Request, res:Response, next:NextFunction){
|
||||||
|
let message = new Message<string> (null,"ok");
|
||||||
|
res.json(message);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static renderError(err:any, req:Request, res:Response, next:NextFunction):any{
|
||||||
|
if(err instanceof Error) {
|
||||||
|
let message = new Message<any> (err,null);
|
||||||
|
return res.json(message);
|
||||||
|
}
|
||||||
|
return next(err);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
protected static renderMessage<T>(res:Response, content:T){
|
||||||
|
let message = new Message<T> (null,content);
|
||||||
|
res.json(message);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -1,10 +1,9 @@
|
|||||||
|
|
||||||
import {UserManager} from "../model/UserManager";
|
import {UserManager} from "../model/UserManager";
|
||||||
import {NextFunction, Request, Response} from "express";
|
import {NextFunction, Request, Response} from "express";
|
||||||
import {BaseMWs} from "./BaseMWs";
|
|
||||||
import {Error, ErrorCodes} from "../../common/entities/Error";
|
import {Error, ErrorCodes} from "../../common/entities/Error";
|
||||||
|
|
||||||
export class UserMWs extends BaseMWs{
|
export class UserMWs {
|
||||||
|
|
||||||
public static changePassword(req:Request, res:Response, next:NextFunction){
|
public static changePassword(req:Request, res:Response, next:NextFunction){
|
||||||
if ((typeof req.body === 'undefined') || (typeof req.body.userModReq === 'undefined')
|
if ((typeof req.body === 'undefined') || (typeof req.body.userModReq === 'undefined')
|
||||||
@ -16,7 +15,7 @@ export class UserMWs extends BaseMWs{
|
|||||||
|
|
||||||
UserManager.changePassword(req.body.userModReq, (err, result) =>{
|
UserManager.changePassword(req.body.userModReq, (err, result) =>{
|
||||||
if ((err) || (!result)) {
|
if ((err) || (!result)) {
|
||||||
return super.renderError(res,new Error(ErrorCodes.GENERAL_ERROR));
|
return next(new Error(ErrorCodes.GENERAL_ERROR));
|
||||||
}
|
}
|
||||||
|
|
||||||
return next();
|
return next();
|
||||||
@ -31,7 +30,7 @@ export class UserMWs extends BaseMWs{
|
|||||||
|
|
||||||
UserManager.createUser(req.body.newUser, (err, result) =>{
|
UserManager.createUser(req.body.newUser, (err, result) =>{
|
||||||
if ((err) || (!result)) {
|
if ((err) || (!result)) {
|
||||||
return super.renderError(res,new Error(ErrorCodes.USER_CREATION_ERROR));
|
return next(new Error(ErrorCodes.USER_CREATION_ERROR));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -48,7 +47,7 @@ export class UserMWs extends BaseMWs{
|
|||||||
|
|
||||||
UserManager.deleteUser(req.body.userModReq.id, (err, result) =>{
|
UserManager.deleteUser(req.body.userModReq.id, (err, result) =>{
|
||||||
if ((err) || (!result)) {
|
if ((err) || (!result)) {
|
||||||
return super.renderError(res,new Error(ErrorCodes.GENERAL_ERROR));
|
return next(new Error(ErrorCodes.GENERAL_ERROR));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -66,7 +65,7 @@ export class UserMWs extends BaseMWs{
|
|||||||
|
|
||||||
UserManager.changeRole(req.body.userModReq, (err, result) =>{
|
UserManager.changeRole(req.body.userModReq, (err, result) =>{
|
||||||
if ((err) || (!result)) {
|
if ((err) || (!result)) {
|
||||||
return super.renderError(res,new Error(ErrorCodes.GENERAL_ERROR));
|
return next(new Error(ErrorCodes.GENERAL_ERROR));
|
||||||
}
|
}
|
||||||
|
|
||||||
return next();
|
return next();
|
||||||
@ -77,11 +76,11 @@ export class UserMWs extends BaseMWs{
|
|||||||
public static listUsers(req:Request, res:Response, next:NextFunction){
|
public static listUsers(req:Request, res:Response, next:NextFunction){
|
||||||
UserManager.find({}, (err, result) =>{
|
UserManager.find({}, (err, result) =>{
|
||||||
if ((err) || (!result)) {
|
if ((err) || (!result)) {
|
||||||
return super.renderError(res,new Error(ErrorCodes.GENERAL_ERROR));
|
return next(new Error(ErrorCodes.GENERAL_ERROR));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
req.resultPipe = result;
|
||||||
super.renderMessage(res,result);
|
return next();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,11 +1,10 @@
|
|||||||
|
|
||||||
import {UserManager} from "../model/UserManager";
|
import {UserManager} from "../model/UserManager";
|
||||||
import {NextFunction, Request, Response} from "express";
|
import {NextFunction, Request, Response} from "express";
|
||||||
import {BaseMWs} from "./BaseMWs";
|
|
||||||
import {Error, ErrorCodes} from "../../common/entities/Error";
|
import {Error, ErrorCodes} from "../../common/entities/Error";
|
||||||
import {UserRoles} from "../../common/entities/User";
|
import {UserRoles} from "../../common/entities/User";
|
||||||
|
|
||||||
export class UserRequestConstrainsMWs extends BaseMWs{
|
export class UserRequestConstrainsMWs {
|
||||||
|
|
||||||
|
|
||||||
public static forceSelfRequest(req:Request, res:Response, next:NextFunction){
|
public static forceSelfRequest(req:Request, res:Response, next:NextFunction){
|
||||||
@ -13,7 +12,7 @@ export class UserRequestConstrainsMWs extends BaseMWs{
|
|||||||
return next();
|
return next();
|
||||||
}
|
}
|
||||||
if(req.session.user.id !== req.params.id){
|
if(req.session.user.id !== req.params.id){
|
||||||
return super.renderError(res,new Error(ErrorCodes.NOT_AUTHORISED));
|
return next(new Error(ErrorCodes.NOT_AUTHORISED));
|
||||||
}
|
}
|
||||||
|
|
||||||
return next();
|
return next();
|
||||||
@ -26,7 +25,7 @@ export class UserRequestConstrainsMWs extends BaseMWs{
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(req.session.user.id === req.params.id){
|
if(req.session.user.id === req.params.id){
|
||||||
return super.renderError(res,new Error(ErrorCodes.NOT_AUTHORISED));
|
return next(new Error(ErrorCodes.NOT_AUTHORISED));
|
||||||
}
|
}
|
||||||
|
|
||||||
return next();
|
return next();
|
||||||
@ -43,10 +42,10 @@ export class UserRequestConstrainsMWs extends BaseMWs{
|
|||||||
|
|
||||||
UserManager.find({minRole:UserRoles.Admin}, (err, result) =>{
|
UserManager.find({minRole:UserRoles.Admin}, (err, result) =>{
|
||||||
if ((err) || (!result)) {
|
if ((err) || (!result)) {
|
||||||
return super.renderError(res,new Error(ErrorCodes.GENERAL_ERROR));
|
return next(new Error(ErrorCodes.GENERAL_ERROR));
|
||||||
}
|
}
|
||||||
if(result.length <= 1) {
|
if(result.length <= 1) {
|
||||||
return super.renderError(res, new Error(ErrorCodes.GENERAL_ERROR));
|
return next(new Error(ErrorCodes.GENERAL_ERROR));
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
21
backend/routes/ErrorRouter.ts
Normal file
21
backend/routes/ErrorRouter.ts
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
///<reference path="../../typings/main.d.ts"/>
|
||||||
|
|
||||||
|
import {RenderingMWs} from "../middlewares/RenderingMWs";
|
||||||
|
|
||||||
|
export class ErrorRouter{
|
||||||
|
constructor(private app) {
|
||||||
|
|
||||||
|
this.addError();
|
||||||
|
}
|
||||||
|
|
||||||
|
private addError() {
|
||||||
|
this.app.use("/api/*",
|
||||||
|
RenderingMWs.renderError
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
import {AuthenticationMWs} from "../middlewares/AuthenticationMWs";
|
import {AuthenticationMWs} from "../middlewares/AuthenticationMWs";
|
||||||
import {GalleryMWs} from "../middlewares/GalleryMWs";
|
import {GalleryMWs} from "../middlewares/GalleryMWs";
|
||||||
|
import {RenderingMWs} from "../middlewares/RenderingMWs";
|
||||||
|
|
||||||
export class GalleryRouter{
|
export class GalleryRouter{
|
||||||
constructor(private app){
|
constructor(private app){
|
||||||
@ -17,7 +18,8 @@ export class GalleryRouter{
|
|||||||
private addDirectoryList() {
|
private addDirectoryList() {
|
||||||
this.app.get(["/api/gallery/:directory","/api/gallery/"],
|
this.app.get(["/api/gallery/:directory","/api/gallery/"],
|
||||||
AuthenticationMWs.authenticate,
|
AuthenticationMWs.authenticate,
|
||||||
GalleryMWs.listDirectory
|
GalleryMWs.listDirectory,
|
||||||
|
RenderingMWs.renderResult
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -25,28 +27,32 @@ export class GalleryRouter{
|
|||||||
private addGetImage() {
|
private addGetImage() {
|
||||||
this.app.get(["/api/gallery/:directory/:image","/api/gallery/:image"],
|
this.app.get(["/api/gallery/:directory/:image","/api/gallery/:image"],
|
||||||
AuthenticationMWs.authenticate,
|
AuthenticationMWs.authenticate,
|
||||||
GalleryMWs.renderImage
|
GalleryMWs.loadImage,
|
||||||
|
RenderingMWs.renderFile
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
private addGetImageThumbnail() {
|
private addGetImageThumbnail() {
|
||||||
this.app.get("/api/gallery/:directory/:image/thumbnail",
|
this.app.get("/api/gallery/:directory/:image/thumbnail",
|
||||||
AuthenticationMWs.authenticate,
|
AuthenticationMWs.authenticate,
|
||||||
GalleryMWs.renderThumbnail
|
GalleryMWs.loadThumbnail,
|
||||||
|
RenderingMWs.renderFile
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
private addSearch() {
|
private addSearch() {
|
||||||
this.app.get("/api/gallery/search",
|
this.app.get("/api/gallery/search",
|
||||||
AuthenticationMWs.authenticate,
|
AuthenticationMWs.authenticate,
|
||||||
GalleryMWs.search
|
GalleryMWs.search,
|
||||||
|
RenderingMWs.renderResult
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
private addAutoComplete() {
|
private addAutoComplete() {
|
||||||
this.app.get("/api/gallery/autocomplete",
|
this.app.get("/api/gallery/autocomplete",
|
||||||
AuthenticationMWs.authenticate,
|
AuthenticationMWs.authenticate,
|
||||||
GalleryMWs.autocomplete
|
GalleryMWs.autocomplete,
|
||||||
|
RenderingMWs.renderResult
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
import {AuthenticationMWs} from "../middlewares/AuthenticationMWs";
|
import {AuthenticationMWs} from "../middlewares/AuthenticationMWs";
|
||||||
import {UserRoles} from "../../common/entities/User";
|
import {UserRoles} from "../../common/entities/User";
|
||||||
|
|
||||||
export class AdminRouter{
|
export class SharingRouter{
|
||||||
constructor(private app) {
|
constructor(private app) {
|
||||||
|
|
||||||
this.addGetSharing();
|
this.addGetSharing();
|
||||||
|
@ -4,6 +4,7 @@ import {UserMWs} from "../middlewares/UserMWs";
|
|||||||
import {UserRoles} from "../../common/entities/User";
|
import {UserRoles} from "../../common/entities/User";
|
||||||
import {AuthenticationMWs} from "../middlewares/AuthenticationMWs";
|
import {AuthenticationMWs} from "../middlewares/AuthenticationMWs";
|
||||||
import {UserRequestConstrainsMWs} from "../middlewares/UserRequestConstrainsMWs";
|
import {UserRequestConstrainsMWs} from "../middlewares/UserRequestConstrainsMWs";
|
||||||
|
import {RenderingMWs} from "../middlewares/RenderingMWs";
|
||||||
|
|
||||||
export class UserRouter{
|
export class UserRouter{
|
||||||
constructor(private app){
|
constructor(private app){
|
||||||
@ -22,14 +23,14 @@ export class UserRouter{
|
|||||||
this.app.post("/api/user/login",
|
this.app.post("/api/user/login",
|
||||||
AuthenticationMWs.inverseAuthenticate,
|
AuthenticationMWs.inverseAuthenticate,
|
||||||
AuthenticationMWs.login,
|
AuthenticationMWs.login,
|
||||||
AuthenticationMWs.renderUser
|
RenderingMWs.renderSessionUser
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
private addGetSessionUser() {
|
private addGetSessionUser() {
|
||||||
this.app.get("/api/user/login",
|
this.app.get("/api/user/login",
|
||||||
AuthenticationMWs.authenticate,
|
AuthenticationMWs.authenticate,
|
||||||
AuthenticationMWs.renderUser
|
RenderingMWs.renderSessionUser
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -39,7 +40,7 @@ export class UserRouter{
|
|||||||
AuthenticationMWs.authenticate,
|
AuthenticationMWs.authenticate,
|
||||||
UserRequestConstrainsMWs.forceSelfRequest,
|
UserRequestConstrainsMWs.forceSelfRequest,
|
||||||
UserMWs.changePassword,
|
UserMWs.changePassword,
|
||||||
UserMWs.renderOK
|
RenderingMWs.renderOK
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -49,7 +50,7 @@ export class UserRouter{
|
|||||||
AuthenticationMWs.authenticate,
|
AuthenticationMWs.authenticate,
|
||||||
AuthenticationMWs.authorise(UserRoles.Admin),
|
AuthenticationMWs.authorise(UserRoles.Admin),
|
||||||
UserMWs.createUser,
|
UserMWs.createUser,
|
||||||
UserMWs.renderOK
|
RenderingMWs.renderOK
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -59,7 +60,7 @@ export class UserRouter{
|
|||||||
AuthenticationMWs.authorise(UserRoles.Admin),
|
AuthenticationMWs.authorise(UserRoles.Admin),
|
||||||
UserRequestConstrainsMWs.notSelfRequest,
|
UserRequestConstrainsMWs.notSelfRequest,
|
||||||
UserMWs.deleteUser,
|
UserMWs.deleteUser,
|
||||||
UserMWs.renderOK
|
RenderingMWs.renderOK
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -68,7 +69,8 @@ export class UserRouter{
|
|||||||
this.app.post("/api/user/list",
|
this.app.post("/api/user/list",
|
||||||
AuthenticationMWs.authenticate,
|
AuthenticationMWs.authenticate,
|
||||||
AuthenticationMWs.authorise(UserRoles.Admin),
|
AuthenticationMWs.authorise(UserRoles.Admin),
|
||||||
UserMWs.listUsers
|
UserMWs.listUsers,
|
||||||
|
RenderingMWs.renderResult
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -78,7 +80,7 @@ export class UserRouter{
|
|||||||
AuthenticationMWs.authorise(UserRoles.Admin),
|
AuthenticationMWs.authorise(UserRoles.Admin),
|
||||||
UserRequestConstrainsMWs.notSelfRequestOr2Admins,
|
UserRequestConstrainsMWs.notSelfRequestOr2Admins,
|
||||||
UserMWs.changeRole,
|
UserMWs.changeRole,
|
||||||
UserMWs.renderOK
|
RenderingMWs.renderOK
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -9,6 +9,10 @@ import {PublicRouter} from "./routes/PublicRouter";
|
|||||||
import {UserRouter} from "./routes/UserRouter";
|
import {UserRouter} from "./routes/UserRouter";
|
||||||
import {GalleryRouter} from "./routes/GalleryRouter";
|
import {GalleryRouter} from "./routes/GalleryRouter";
|
||||||
import {AdminRouter} from "./routes/AdminRouter";
|
import {AdminRouter} from "./routes/AdminRouter";
|
||||||
|
import {Error} from "../common/entities/Error";
|
||||||
|
import {json} from "body-parser";
|
||||||
|
import {ErrorRouter} from "./routes/ErrorRouter";
|
||||||
|
import {SharingRouter} from "./routes/SharingRouter";
|
||||||
|
|
||||||
|
|
||||||
export class Server {
|
export class Server {
|
||||||
@ -47,11 +51,16 @@ export class Server {
|
|||||||
*/
|
*/
|
||||||
// for parsing application/json
|
// for parsing application/json
|
||||||
this.app.use(_bodyParser.json());
|
this.app.use(_bodyParser.json());
|
||||||
|
|
||||||
|
|
||||||
new PublicRouter(this.app);
|
new PublicRouter(this.app);
|
||||||
|
|
||||||
new UserRouter(this.app);
|
new UserRouter(this.app);
|
||||||
new GalleryRouter(this.app);
|
new GalleryRouter(this.app);
|
||||||
|
new SharingRouter(this.app);
|
||||||
new AdminRouter(this.app);
|
new AdminRouter(this.app);
|
||||||
|
|
||||||
|
new ErrorRouter(this.app);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -103,7 +112,7 @@ export class Server {
|
|||||||
? 'Pipe ' + this.port
|
? 'Pipe ' + this.port
|
||||||
: 'Port ' + this.port;
|
: 'Port ' + this.port;
|
||||||
|
|
||||||
// handle specific listen errors with friendly messages
|
// handle specific listen error with friendly messages
|
||||||
switch (error.code) {
|
switch (error.code) {
|
||||||
case 'EACCES':
|
case 'EACCES':
|
||||||
console.error(bind + ' requires elevated privileges');
|
console.error(bind + ' requires elevated privileges');
|
||||||
|
@ -1,5 +1,10 @@
|
|||||||
import {Error} from "./Error";
|
import {Error} from "./Error";
|
||||||
|
|
||||||
export class Message<T>{
|
export class Message<T>{
|
||||||
constructor(public errors:Error,public result:T){}
|
public error:Error = null;
|
||||||
|
public result:T = null;
|
||||||
|
constructor(error:Error, result:T){
|
||||||
|
this.error = error;
|
||||||
|
this.result = result;
|
||||||
|
}
|
||||||
}
|
}
|
@ -14,7 +14,6 @@ import {GalleryService} from "./gallery/gallery.service";
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'pi-gallery2-app',
|
selector: 'pi-gallery2-app',
|
||||||
template: `<router-outlet></router-outlet>`,
|
template: `<router-outlet></router-outlet>`,
|
||||||
|
@ -36,7 +36,7 @@ export class GalleryComponent implements OnInit{
|
|||||||
let directoryName = this._params.get('directory');
|
let directoryName = this._params.get('directory');
|
||||||
directoryName = directoryName ? directoryName : "";
|
directoryName = directoryName ? directoryName : "";
|
||||||
this._galleryService.getDirectory(directoryName).then(( message:Message<Directory>) => {
|
this._galleryService.getDirectory(directoryName).then(( message:Message<Directory>) => {
|
||||||
if(message.errors){
|
if(message.error){
|
||||||
//TODO: implement
|
//TODO: implement
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -27,8 +27,8 @@ export class AuthenticationService{
|
|||||||
private getSessionUser(){
|
private getSessionUser(){
|
||||||
this._userService.getSessionUser().then( (message:Message<User>) =>{
|
this._userService.getSessionUser().then( (message:Message<User>) =>{
|
||||||
console.log(message);
|
console.log(message);
|
||||||
if(message.errors){
|
if(message.error){
|
||||||
console.log(message.errors);
|
console.log(message.error);
|
||||||
}else{
|
}else{
|
||||||
this._user = message.result;
|
this._user = message.result;
|
||||||
this.OnAuthenticated.trigger(this._user);
|
this.OnAuthenticated.trigger(this._user);
|
||||||
@ -39,8 +39,8 @@ export class AuthenticationService{
|
|||||||
public login(credential:LoginCredential){
|
public login(credential:LoginCredential){
|
||||||
this._userService.login(credential).then( (message:Message<User>) =>{
|
this._userService.login(credential).then( (message:Message<User>) =>{
|
||||||
console.log(message);
|
console.log(message);
|
||||||
if(message.errors){
|
if(message.error){
|
||||||
console.log(message.errors);
|
console.log(message.error);
|
||||||
}else{
|
}else{
|
||||||
this._user = message.result;
|
this._user = message.result;
|
||||||
this.OnAuthenticated.trigger(this._user);
|
this.OnAuthenticated.trigger(this._user);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user