Browse Source

Fix request authentication. Add middleware support to requests

master
David Ludwig 4 years ago
parent
commit
a6d9465b11
4 changed files with 27 additions and 14 deletions
  1. +6
    -6
      src/server/services/WebServer/requests/Request.ts
  2. +5
    -5
      src/server/services/WebServer/requests/RequestImdbMovieRequest.ts
  3. +13
    -0
      src/server/services/WebServer/requests/RequestMovieRequest.ts
  4. +3
    -3
      src/server/services/WebServer/requests/RequestTmdbMovieRequest.ts

+ 6
- 6
src/server/services/WebServer/requests/Request.ts View File

@ -6,16 +6,16 @@ export default class Request
* Handle the incoming request
*/
public async handle(request: FastifyRequest, reply: FastifyReply) {
if (!this.checkFormat(request)) {
reply.status(401);
if (!this.isAuthorized(request)) {
reply.status(403);
return {
status: "unauthorized"
status: "Forbidden"
};
}
if (!this.checkFormat(request)) {
reply.status(400);
return {
status: "bad request"
status: "Bad request"
};
}
try {
@ -23,7 +23,7 @@ export default class Request
} catch(errors) {
reply.status(422);
return {
status: "unprocessable entities",
status: "Unprocessable entities",
errors
};
}
@ -34,7 +34,7 @@ export default class Request
/**
* Check if the user is authorized to make this request
*/
public isAuthorized() {
public isAuthorized(request: FastifyRequest) {
return true;
}


+ 5
- 5
src/server/services/WebServer/requests/RequestImdbMovieRequest.ts View File

@ -1,11 +1,11 @@
import { FastifyRequest } from "fastify";
import validate from "validate.js";
import Request from "./Request";
import { MiddlewareRequest } from "../middleware";
import { IAuthMiddlewareParams } from "../middleware/auth";
import RequestMovieRequest from "./RequestMovieRequest";
export default class RequestImdbMovieRequest extends Request
export default class RequestImdbMovieRequest<T extends IAuthMiddlewareParams> extends RequestMovieRequest<T>
{
public validate(request: FastifyRequest) {
public validate(request: MiddlewareRequest<T>) {
return validate.async(request.params, {
imdb_id: {
presence: {


+ 13
- 0
src/server/services/WebServer/requests/RequestMovieRequest.ts View File

@ -0,0 +1,13 @@
import { MiddlewareRequest } from "../middleware";
import { IAuthMiddlewareParams } from "../middleware/auth";
import Request from "./Request";
export default class RequestMovieRequest<T extends IAuthMiddlewareParams> extends Request
{
/**
* Ensure the user is able to request movies
*/
public isAuthorized(request: MiddlewareRequest<T>) {
return true;
}
}

+ 3
- 3
src/server/services/WebServer/requests/RequestTmdbMovieRequest.ts View File

@ -1,9 +1,9 @@
import { FastifyRequest } from "fastify";
import validate from "validate.js";
import Request from "./Request";
import { IAuthMiddlewareParams } from "../middleware/auth";
import RequestMovieRequest from "./RequestMovieRequest";
export default class RequestTmdbMovieRequest extends Request
export default class RequestTmdbMovieRequest<T extends IAuthMiddlewareParams> extends RequestMovieRequest<T>
{
public validate(request: FastifyRequest) {
return validate.async(request.params, {


Loading…
Cancel
Save