Skip to content

Commit 94a27f0

Browse files
author
Ricardo0998
committed
First commit
0 parents  commit 94a27f0

File tree

11 files changed

+1982
-0
lines changed

11 files changed

+1982
-0
lines changed

.env

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
PORT=8080

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
node_modules
2+
src/dabase/firebase.json

app.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
require('dotenv').config();
2+
3+
const Server = require('./src/models/server');
4+
const server = new Server();
5+
6+
server.listen();

package-lock.json

Lines changed: 1806 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
{
2+
"name": "gcc-server",
3+
"version": "0.0.1",
4+
"description": "",
5+
"main": "index.js",
6+
"scripts": {
7+
"start": "node app.js",
8+
"start:sync": "nodemon app.js"
9+
},
10+
"keywords": [],
11+
"author": "",
12+
"license": "ISC",
13+
"dependencies": {
14+
"bcryptjs": "^2.4.3",
15+
"cors": "^2.8.5",
16+
"dotenv": "^10.0.0",
17+
"express": "^4.17.1",
18+
"express-validator": "^6.12.1",
19+
"firebase-admin": "^9.11.0"
20+
}
21+
}

src/controllers/usuarios.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
const { response, request } = require('express');
2+
const firebase = require('../database/config');
3+
4+
const obtenerUsuario = async (req = request, res = response) => {
5+
res.json({
6+
ok: true,
7+
msg: 'GET'
8+
});
9+
};
10+
11+
const guardarUsuario = async (req = request, res = response) => {
12+
res.json({
13+
ok: true,
14+
msg: 'POST'
15+
});
16+
};
17+
18+
module.exports = {
19+
obtenerUsuario,
20+
guardarUsuario,
21+
}

src/database/config.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
// Firebase-admin
2+
var admin = require('firebase-admin');
3+
4+
// Inicializar el proyecto de firebase
5+
admin.initializeApp({
6+
credential: admin.credential.cert(require('./firebase.json')),
7+
});
8+
9+
// Obtenemos la instancia de firebase para la base de datos y autentificación
10+
const db = admin.firestore();
11+
const auth = admin.auth();
12+
13+
module.exports = {
14+
db,
15+
auth
16+
};

src/middlewares/validate-firebase.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
// Firebase-admin
2+
const firebase = require('../database/config');
3+
4+
/**
5+
* Método para validar el token de autenticación
6+
*
7+
* @param {string} [token = '']
8+
*/
9+
const esTokenValido = async (token = '') => {
10+
return firebase.auth
11+
.verifyIdToken(token)
12+
.then((decodedToken) => {
13+
console.log('Token validado: ', decodedToken);
14+
})
15+
.catch(() => {
16+
return Promise.reject(`El token ${token} es incorrecto`);
17+
});
18+
}
19+
20+
module.exports = {
21+
esTokenValido,
22+
}

src/middlewares/validate.js

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
const { validationResult } = require('express-validator');
2+
3+
4+
/**
5+
* Método que valida los campos de la petición
6+
*
7+
* @param {any} req
8+
* @param {any} res
9+
* @param {any} next
10+
* @return {*}
11+
*/
12+
const validarCampos = (req, res, next) => {
13+
const errors = validationResult(req)
14+
if (!errors.isEmpty()) {
15+
return res.status(400).json(errors);
16+
}
17+
18+
next();
19+
}
20+
21+
module.exports = {
22+
validarCampos
23+
}

src/models/server.js

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
const express = require('express')
2+
const cors = require('cors');
3+
4+
/**
5+
* Clase para inicializar el servidor con su configuración
6+
*
7+
* @class Server
8+
*/
9+
class Server {
10+
constructor() {
11+
// Express
12+
this.app = express();
13+
// Puerto
14+
this.port = process.env.PORT;
15+
// Path para usuarios
16+
this.usuariosPath = '/api/usuarios';
17+
18+
// Middelewares
19+
this.middelewares();
20+
21+
// Rutas
22+
this.routes();
23+
}
24+
25+
routes() {
26+
this.app.use(this.usuariosPath, require('../routes/usuarios'));
27+
}
28+
29+
listen() {
30+
this.app.listen(this.port, () => {
31+
console.log('Server corriendo en puerto: ', this.port);
32+
});
33+
}
34+
35+
middelewares() {
36+
// CORS
37+
this.app.use(cors());
38+
// Lectura y parseo del body
39+
this.app.use(express.json());
40+
}
41+
}
42+
43+
module.exports = Server;

0 commit comments

Comments
 (0)