-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapi.js
More file actions
126 lines (111 loc) · 2.87 KB
/
Copy pathapi.js
File metadata and controls
126 lines (111 loc) · 2.87 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
const { config } = require("dotenv");
const { join } = require("path");
const { ok } = require("assert");
const env = process.env.NODE_ENV || "dev";
ok(env == "prod" || env == "dev", "A .env é inválida ambiente de DEV ou PROD");
const configPath = join(__dirname, "./config", `.env.${env}`);
config({
path: configPath
});
console.log("CAMINHO DA PASTA", __dirname);
const Hapi = require("@hapi/hapi");
const UsuarioRoute = require("./src/routes/usuarioRoutes");
const AuthRoute = require("./src/routes/authRoutes");
const HappiSwagger = require("hapi-swagger");
const Vision = require("vision");
const Inert = require("inert");
const HapiJwt = require("hapi-auth-jwt2");
const HapiAuthCookie = require("hapi-auth-cookie");
const UtilRoutes = require("./src/routes/utilRoutes");
const SendRoute = require("./src/routes/sendRoutes");
const JWT_SECRET = process.env.JWT_SECRET;
const app = new Hapi.Server({
port: process.env.PORT,
routes: {
security: true,
payload: { maxBytes: 55555555 },
cors: {
origin: ["*"],
credentials: true,
additionalHeaders: [
"Access-Control-Allow-Origin",
"Access-Control-Request-Method",
"Access-Control-Allow-Credentials",
"Allow-Origin",
"Origin",
"cache-control",
"x-requested-with",
"Access-Control-Allow-Headers"
]
}
}
});
app.state("data", {
ttl: 365 * 24 * 60 * 60 * 1000,
encoding: "base64json",
isSecure: false,
isHttpOnly: false,
ignoreErrors: false,
isSameSite: false,
clearInvalid: false, // remove invalid cookies
strictHeader: true // don't allow violations of RFC 6265
});
function mapRoutes(instance, methods) {
return methods.map(method => instance[method]()); // pegar dinamicamente o nome dos metodos ex: [list,create,update]
}
async function main() {
const swaggerOptions = {
info: {
title: "APIs Operadoras Cliente",
version: "v1.0"
},
lang: "pt"
};
const health = require("hapi-and-healthy");
await app.register([
HapiJwt,
Vision,
Inert,
HapiAuthCookie,
//Cors,
health,
{
plugin: HappiSwagger,
options: swaggerOptions
//options:{ origins: ['*']}
}
]);
app.auth.strategy("jwt", "jwt", {
key: JWT_SECRET,
// options:{
// expiresIn: 20
// }
validate: async (dado, request) => {
//verifica no banco se o usuário continua ativo
const result = await contextUsers.read({
username: dado.username.toLowerCase(),
id: dado.id
});
if (!result) {
return {
isValid: false
};
} else {
return {
isValid: true
};
}
}
});
app.auth.default("jwt");
app.route([
...mapRoutes(new UsuarioRoute(), UsuarioRoute.methods()),
...mapRoutes(new AuthRoute(), AuthRoute.methods()),
...mapRoutes(new UtilRoutes(), UtilRoutes.methods()),
...mapRoutes(new SendRoute(), SendRoute.methods())
]);
await app.start();
console.log("Servidor rodando na porta", app.info.port);
return app;
}
module.exports = main();