Skip to content

Commit

Permalink
Login normal
Browse files Browse the repository at this point in the history
  • Loading branch information
martin-i-silva committed Aug 8, 2020
1 parent 0cd58bb commit 6080292
Show file tree
Hide file tree
Showing 9 changed files with 266 additions and 35 deletions.
91 changes: 91 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
"bcrypt": "^5.0.0",
"body-parser": "^1.19.0",
"express": "^4.17.1",
"jsonwebtoken": "^8.5.1",
"mongoose": "^5.9.27",
"mongoose-unique-validator": "^2.0.3",
"underscore": "^1.10.2"
Expand Down
13 changes: 13 additions & 0 deletions server/config/config.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,21 @@ process.env.PORT = process.env.PORT || 3000;
// Entorno
// ======================
// si la variable no existe entonces estoy en entorno de desarrollo

process.env.NODE_ENV = process.env.NODE_ENV || 'dev';

// ======================
// Vencimiento del token
// ======================
// expira en 60 seg 60 min 24 hs 30 dias
process.env.CADUCIDAD_TOKEN = 60 * 60 * 24 * 30

// ======================
// SEED o semilla de autenticacion
// ======================

process.env.SEED = process.env.SEED || 'este-es-el-seed-desarrollo'


// ======================
// Base de datos
Expand Down
56 changes: 56 additions & 0 deletions server/middlewares/Autenticacion.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
const jwt = require('jsonwebtoken')

// ======================
// Verificar token
// ======================

let verificaToken = (req, res, next)=>{

let token = req.get('Authorization');

jwt.verify(token, process.env.SEED, (err, decoded)=>{
if(err){
return res.status(401).json({
ok: false,
err: {
message: 'Error: Token no valido'
}
});
}
req.usuario = decoded.usuario;
next();
})
};

// ======================
// Verificar AdminRole
// ======================

let verificaAdmin_Role = (req, res, next)=>{

let usuario = req.usuario

if(usuario.role === "ADMIN_ROLE"){
next();
}else {
return res.json({
ok: false,
err: {
message: 'El usuario no es administrador'
}
});
}






}



module.exports = {
verificaToken,
verificaAdmin_Role
}
3 changes: 1 addition & 2 deletions server/models/usuario.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ let usuarioSchema = new Schema({
},
email:{
type: String,
unique: true,
unique: [true, "El correo debe ser unico"],
required: [true, 'El correo es necesario']
},
password:{
Expand All @@ -24,7 +24,6 @@ let usuarioSchema = new Schema({
},
img: {
type: String,
required: false
},
role:{
type: String,
Expand Down
10 changes: 10 additions & 0 deletions server/routes/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
const express = require('express');

const app = express()

app.use( require('./usuario'))
app.use( require('./login'))



module.exports = app;
54 changes: 54 additions & 0 deletions server/routes/login.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
const express = require('express');
const bcrypt = require('bcrypt');
const jwt = require('jsonwebtoken');

const Usuario = require('../models/usuario');

const app = express()

app.post('/login', (req, res)=>{

let body = req.body;

Usuario.findOne({email: body.email}, (err, usuarioDB)=>{
if(err){
return res.status(500).json({
ok: false,
err
})
}
if(!usuarioDB){
return res.status(400).json({
ok: false,
err:{
message: '(Usuario) o contraseña incorrectos' // esto se hace en desarrollo para identificar que falló, en produccion no se tiene que poner
}
})
}

if (!bcrypt.compareSync(body.password, usuarioDB.password)){
return res.status(400).json({
ok: false,
err:{
message: 'Usuario o (contraseña) incorrectos' // esto se hace en desarrollo para identificar que falló, en produccion no se tiene que poner
}
})
}

let token = jwt.sign({
usuario: usuarioDB
}, process.env.SEED, { expiresIn: process.env.CADUCIDAD_TOKEN})


res.json({
ok: true,
usuario: usuarioDB,
token

})
})

})


module.exports = app;
Loading

0 comments on commit 6080292

Please sign in to comment.