اذهب إلى المحتوى
  • 0

أريد أن أضيف دور أدمن فى هذا الكود node js

أحمد عبد الله2

السؤال

أبنى متجرا و ال user ثلاثة انواع منهم user - vendor - admin قمت بكتابة كود حتى افرق بين صلاحيات البائع (vendor) والمستخدم العادى (user) ولكنى اريد ان اضيف دور ثالث ألا وهو Admin 

هذا هو الكود باستخدام express-jwt 

 

const jwt = require("express-jwt");
const api = process.env.API_URL;

function authFN() {
  return jwt({
    secret: process.env.SECRET,
    algorithms: ["HS256"],
    isRevoked: isRevoked,
  }).unless({
    path: [
      `${api}/user/login`,
      `${api}/catgs`,
      `${api}/user`,
      { url: `${api}/test`, methods: ["GET", "OPTIONS"] },
    ],
  });
}

async function isRevoked(req, payload, done) {
  if (!payload.isVendor) {
    done(null, true);
  }

  done();
}
module.exports = authFN;

 

أى نوع من التغييرات ينبغى ان اطبقها على isRevoked function او على unless ؟؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

في حالتك يمكن ان يكون استخدام jsonwebtoken مع express-jwt-permissions خيار افضل حيث تكون الشيفرة كالتالي

import * as jwt from 'jsonwebtoken';

 authenticate(req, res, next) {
  const payload = {
    name: 'John',
    surname: 'Smith',
    username: 'john.smith',
    permissions: ['USER', 'ADMIN',"VENDOR"],
  };
  const options = {
    expiresIn: Number(process.env.JWT_TTL),
  };
  const token = jwt.sign(payload, process.env.JWT_SECRET, options);
  res.status(201).send({ token });
}

ثم يمكنك التحقق في المسارات متى تحتاج كل نوع 

const guard = require("express-jwt-permissions")();

// all user routes
routes.use('/api', guard.check('USER'));
// ...

// all admin routes
routes.use('/api/admin/', guard.check('ADMIN'));
// ...

قم بالقراءة قليلا حول استخدام jsonwebtoken مع express اما عن استخدام express-jwt-permissions فهو مباشر 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...