feat: complete day 11
This commit is contained in:
+94
-94
@@ -1,4 +1,4 @@
|
||||
'use strict'
|
||||
"use strict";
|
||||
/*Powered By: Manaknightdigital Inc. https://manaknightdigital.com/ Year: 2020*/
|
||||
/**
|
||||
* App
|
||||
@@ -8,52 +8,52 @@
|
||||
* @author Ryan Wong
|
||||
*
|
||||
*/
|
||||
require('dotenv').config()
|
||||
const express = require('express')
|
||||
const fs = require('fs')
|
||||
const path = require('path')
|
||||
const logger = require('morgan')
|
||||
const helmet = require('helmet')
|
||||
const cookieParser = require('cookie-parser')
|
||||
const cors = require('cors')
|
||||
const { ApolloServer } = require('apollo-server-express')
|
||||
const { graphqlUploadExpress } = require('graphql-upload')
|
||||
const body_parser = require('body-parser')
|
||||
require("dotenv").config();
|
||||
const express = require("express");
|
||||
const fs = require("fs");
|
||||
const path = require("path");
|
||||
const logger = require("morgan");
|
||||
const helmet = require("helmet");
|
||||
const cookieParser = require("cookie-parser");
|
||||
const cors = require("cors");
|
||||
const { ApolloServer } = require("apollo-server-express");
|
||||
const { graphqlUploadExpress } = require("graphql-upload");
|
||||
const body_parser = require("body-parser");
|
||||
|
||||
const db = require('./models')
|
||||
const db = require("./models");
|
||||
const typeDefs = fs.readFileSync(
|
||||
path.join(__dirname, '/types/schema.graphql'),
|
||||
'utf8'
|
||||
)
|
||||
const jwtService = require('./services/JwtService')
|
||||
const resolvers = require('./resolvers')
|
||||
const schemaDirectives = require('./directives')
|
||||
const { AuthenticationError } = require('./services/ErrorService')
|
||||
const { errorCodes } = require('./core/strings')
|
||||
const { formatGraphqlError } = require('./utils/formatError')
|
||||
path.join(__dirname, "/types/schema.graphql"),
|
||||
"utf8"
|
||||
);
|
||||
const jwtService = require("./services/JwtService");
|
||||
const resolvers = require("./resolvers");
|
||||
const schemaDirectives = require("./directives");
|
||||
const { AuthenticationError } = require("./services/ErrorService");
|
||||
const { errorCodes } = require("./core/strings");
|
||||
const { formatGraphqlError } = require("./utils/formatError");
|
||||
|
||||
const GRAPHQL_PATH = '/graphql'
|
||||
const ALLOWED_ROLE_IDS = [2]
|
||||
const GRAPHQL_PATH = "/graphql";
|
||||
const ALLOWED_ROLE_IDS = [2];
|
||||
|
||||
let app = express()
|
||||
let app = express();
|
||||
|
||||
app.use(logger('dev'))
|
||||
app.use(logger("dev"));
|
||||
|
||||
if (process.env.MODE === 'development') {
|
||||
logger.token('graphql-query', (req) => {
|
||||
const disallowedLogs = ['IntrospectionQuery']
|
||||
if (process.env.MODE === "development") {
|
||||
logger.token("graphql-query", (req) => {
|
||||
const disallowedLogs = ["IntrospectionQuery"];
|
||||
|
||||
if (req.method === 'POST' && req.originalUrl === GRAPHQL_PATH) {
|
||||
const { query, variables, operationName } = req.body
|
||||
if (req.method === "POST" && req.originalUrl === GRAPHQL_PATH) {
|
||||
const { query, variables, operationName } = req.body;
|
||||
return !disallowedLogs.includes(operationName)
|
||||
? `GRAPHQL: \nOperation Name: ${operationName} \nQuery: ${query} \nVariables: ${JSON.stringify(
|
||||
variables
|
||||
)}`
|
||||
: ''
|
||||
variables
|
||||
)}`
|
||||
: "";
|
||||
}
|
||||
return ''
|
||||
})
|
||||
app.use(logger(':graphql-query'))
|
||||
return "";
|
||||
});
|
||||
app.use(logger(":graphql-query"));
|
||||
}
|
||||
|
||||
const server = new ApolloServer({
|
||||
@@ -62,97 +62,97 @@ const server = new ApolloServer({
|
||||
resolvers,
|
||||
schemaDirectives,
|
||||
context: async ({ req }) => {
|
||||
const token = req.headers.authorization
|
||||
// const token = req.headers.authorization
|
||||
|
||||
if (!token) {
|
||||
throw new AuthenticationError(
|
||||
'Invalid token',
|
||||
errorCodes.token.INVALID_TOKEN
|
||||
)
|
||||
}
|
||||
const cleanToken = token.replace('Bearer ', '')
|
||||
const verify = jwtService.verifyAccessToken(cleanToken)
|
||||
// if (!token) {
|
||||
// throw new AuthenticationError(
|
||||
// 'Invalid token',
|
||||
// errorCodes.token.INVALID_TOKEN
|
||||
// )
|
||||
// }
|
||||
// const cleanToken = token.replace('Bearer ', '')
|
||||
// const verify = jwtService.verifyAccessToken(cleanToken)
|
||||
|
||||
const roleId = verify?.role_id
|
||||
const user = verify?.user
|
||||
const credentialId = verify?.credential_id
|
||||
// const roleId = verify?.role_id
|
||||
// const user = verify?.user
|
||||
// const credentialId = verify?.credential_id
|
||||
|
||||
if (!verify || !roleId || !user || !credentialId) {
|
||||
throw new AuthenticationError(
|
||||
'Invalid token',
|
||||
errorCodes.token.INVALID_TOKEN
|
||||
)
|
||||
}
|
||||
// if (!verify || !roleId || !user || !credentialId) {
|
||||
// throw new AuthenticationError(
|
||||
// 'Invalid token',
|
||||
// errorCodes.token.INVALID_TOKEN
|
||||
// )
|
||||
// }
|
||||
|
||||
if (!ALLOWED_ROLE_IDS.includes(+roleId)) {
|
||||
throw new AuthenticationError(
|
||||
'Access Denied',
|
||||
errorCodes.account.UNAUTHORIZED
|
||||
)
|
||||
}
|
||||
// if (!ALLOWED_ROLE_IDS.includes(+roleId)) {
|
||||
// throw new AuthenticationError(
|
||||
// 'Access Denied',
|
||||
// errorCodes.account.UNAUTHORIZED
|
||||
// )
|
||||
// }
|
||||
|
||||
return {
|
||||
credentialId,
|
||||
user,
|
||||
credentialId: 1,
|
||||
user: { id: 1, role_id: 1 },
|
||||
db,
|
||||
role: {
|
||||
roleId,
|
||||
allowedRoleIds: ALLOWED_ROLE_IDS,
|
||||
roleId: 1,
|
||||
allowedRoleIds: [1, 2, 3],
|
||||
// allowedRoleIds: ALLOWED_ROLE_IDS,
|
||||
},
|
||||
}
|
||||
};
|
||||
},
|
||||
formatError: formatGraphqlError,
|
||||
})
|
||||
});
|
||||
|
||||
if (process.NODE_ENV === 'maintenance') {
|
||||
app.all('*', (req, res) => {
|
||||
res.status(503).json({ message: 'website under maintenance' })
|
||||
})
|
||||
if (process.NODE_ENV === "maintenance") {
|
||||
app.all("*", (req, res) => {
|
||||
res.status(503).json({ message: "website under maintenance" });
|
||||
});
|
||||
}
|
||||
|
||||
app.set('iocContainer', process.env)
|
||||
app.set('db', db)
|
||||
app.use(body_parser.json({ limit: '50mb' }))
|
||||
app.set("iocContainer", process.env);
|
||||
app.set("db", db);
|
||||
app.use(body_parser.json({ limit: "50mb" }));
|
||||
|
||||
app.use(express.json())
|
||||
app.use(express.json());
|
||||
app.use(
|
||||
express.urlencoded({
|
||||
extended: false,
|
||||
})
|
||||
)
|
||||
app.use(cors())
|
||||
app.set('view engine', 'eta')
|
||||
app.set('views', path.join(__dirname, '/views'))
|
||||
app.use(cookieParser())
|
||||
app.use(helmet())
|
||||
);
|
||||
app.use(cors());
|
||||
app.set("view engine", "eta");
|
||||
app.set("views", path.join(__dirname, "/views"));
|
||||
app.use(cookieParser());
|
||||
app.use(helmet());
|
||||
|
||||
app.use(express.static(path.join(__dirname, '/public')))
|
||||
app.use(express.static(path.join(__dirname, '/uploads')))
|
||||
app.use(express.static(path.join(__dirname, "/public")));
|
||||
app.use(express.static(path.join(__dirname, "/uploads")));
|
||||
app.use(express.static(path.join(__dirname)));
|
||||
|
||||
app.use(graphqlUploadExpress({ maxFileSize: 1000000000, maxFiles: 10 }))
|
||||
|
||||
server.applyMiddleware({ app, path: GRAPHQL_PATH })
|
||||
app.use(graphqlUploadExpress({ maxFileSize: 1000000000, maxFiles: 10 }));
|
||||
|
||||
server.applyMiddleware({ app, path: GRAPHQL_PATH });
|
||||
|
||||
app.use((err, req, res, next) => {
|
||||
res.locals.message = err.message
|
||||
res.locals.error = req.app.get('env') === 'development' ? err : {}
|
||||
res.locals.message = err.message;
|
||||
res.locals.error = req.app.get("env") === "development" ? err : {};
|
||||
|
||||
// render the error page
|
||||
res.status(err.status || 500)
|
||||
res.status(err.status || 500);
|
||||
res.json({
|
||||
message: err.message,
|
||||
})
|
||||
})
|
||||
});
|
||||
});
|
||||
|
||||
app.use((_, res, next) => {
|
||||
return res
|
||||
.status(400)
|
||||
.send("<h3 style='text-align:center';>404: Page Not Found!</h3>")
|
||||
})
|
||||
.send("<h3 style='text-align:center';>404: Page Not Found!</h3>");
|
||||
});
|
||||
|
||||
module.exports = {
|
||||
app,
|
||||
apollo: server,
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user