Role-based authorization library for Node.js using MongoDB generated by llama3.
npm i role-authorization-mongo-llama3
First, import the necessary modules and initialize the RoleAuthMongo
object:
import express from "express";
import { RoleAuthMongo } from "role-authorization-mongo-llama3";
const app = express();
app.use(express.json());
const roleAuthMongo = new RoleAuthMongo({
db: {
connectionString: "mongodb://localhost:27017/rbac-test",
},
});
const roleService = roleAuthMongo.getRoleService();
const userService = roleAuthMongo.getUserService();
Finally, define your API endpoints:
app.post("/users", async (req, res) => {
const { userId, email, roles } = req.body;
try {
const user = await userService.createUser(userId, email, roles);
res.status(201).json(user);
} catch (err) {
res.status(500).json({ error: err.message });
}
});
app.post("/roles", async (req, res) => {
const { roleName, description, permissions } = req.body;
try {
const role = await roleService.createRole(roleName, description, permissions);
res.status(201).json(role);
} catch (err) {
res.status(500).json({ error: err.message });
}
});
app.get("/protected-resource", roleAuthMongo.isAuthorized, async (req, res) => {
res.status(200).json({ message: "Authorized to access protected resource" });
});
app.get("/user-protected-resource", roleAuthMongo.isAuthorized, async (req, res) => {
res.status(200).json({ message: "Authorized to access user protected resource" });
});
app.get("/editor-resource", roleAuthMongo.isAuthorized, async (req, res) => {
res.status(200).json({ message: "Authorized to access editor resource" });
});
app.listen(3000, () => {
console.log("Server listening on port 3000");
});
This project is licensed under the MIT License.