No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Autenticación: gestión de permisos

11/29
Recursos

Aportes 14

Preguntas 2

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Regístrate o inicia sesión para participar.

Ojito Ojito… en el video logró hacer el PUT porque el lo creo por SU propia cuenta cuando nos dejó el reto de que lo crearamos nosotros …

REVISA LA DOCUMENTACION DE LA CLASE PARA VER COMO LO HIZO

EN => API/COMPONENT/USER/NETWORK

Funciones anónimas complican el debug, funciones con nombres facilitan la vida. Sabias palabras del prof… 😃

Es más fácil hacer revisión de fallos cuando las funciones tienen nombres, que cuando son fuciones anónimas.

No tengo muy claro como el middelware de secure.js, entra en ejecución, no veo que en ningun momento que lo llamen o lo importen, alguien me puede decir; ¿como entra a ejecutarse este archivo si nada lo esta llamando?

de donde viene la función next() ? se que ejecuta la siguiente función (creo…) pero no explico o no me escuche de donde, es propia de Node ?

middleware = intermediario

Autenticación: gestión de permisos

Creamos user/secure.js:

const auth = require('../../../auth');

module.exports = function checkAuth(action) {
  function middleware(req, res, next) {
    switch (action) {
      case 'update':
        const owner = req.body.id;
        auth.check.own(req, owner);
        break;
      default:
        next();
        break;
    }

    return middleware;
  }
}

Actualizamos ./auth/index.js:

const { header } = require('express/lib/request');
const jwt = require('jsonwebtoken');
const config = require('../config');

const secret = config.jwt.secret;

function sign(data) {
  return jwt.sign(data, secret);
}

function verify(token) {
  return jwt.verify(token, secret);
}

const check = {
  own: function(req, owner) {
    const decoded = decodeHeader(req);
    console.log(decoded);
  }
}

function getToken(auth) {
  if (!auth) {
    throw new Error('¡No viene token!');
  }

  if (auth.indexOf('Bearer ') === -1) {
    throw new Error('¡Formato inválido!');
  }

  let token = auth.replace('Bearer ', '');

  return token;
}

function decodeHeader(req) {
  const authorization = req.headers.authorization || '';
  const token = getToken(authorization);
  const decoded = verify(token);

  req.user = decoded;

  return decoded;
}

module.exports = {
  sign
}

Actualizamos ./config.js:

module.exports = {
  api: {
    port: process.env.API_PORT || 3000,
  },
  jwt: {
    secret: process.env.JWT_SECRET || 'notASecret!'
  }
}

a alguien más le pasa que cuando le hablan de middleware no tiene idea de que es lo que hablan ?
Alguien me lo podría explicar en palabras muy simples? 😦

Tip de funciones anónimas vs funciones normales

que es Bearer???

Ok, Muy interesante

decode Token

Aunque en el router deberia ir una ruta con un params id como esta:

router.put('/:id', upsert);

ya que el profesor definió las siguientes:

router.post('/', upsert); router.put('/', upsert);

para respetar estas rutas tuve que adaptar en el “store/dummy.js” el metodo upsert para que permita editar tomando en cuenta que el id (en este caso) vendria desde el body.

async function upsert(tabla, data) {
    if (!db[tabla]) {
        db[tabla] = [];
    }

    for (let i = 0; i < db[tabla].length; i++) {
        if(db[tabla][i].id === data.id){
            db[tabla][i] = data;
            return;
        }
    }
     db[tabla].push(data);
    console.log(db);
}