@dax-crafta/auth
Version:
A powerful, flexible, and secure authentication plugin for the Crafta framework. Supports JWT, social login, 2FA, RBAC, audit logging, and enterprise-grade security features.
48 lines (40 loc) • 1.15 kB
JavaScript
const Role = require('../models/role');
class RoleService {
async createRole(roleData) {
const role = new Role(roleData);
await role.save();
return role;
}
async getRoleByName(name) {
return Role.findOne({ name });
}
async updateRole(name, updates) {
return Role.findOneAndUpdate(
{ name },
updates,
{ new: true, runValidators: true }
);
}
async deleteRole(name) {
const role = await Role.findOne({ name });
if (role.isSystem) {
throw new Error('Cannot delete system role');
}
await role.remove();
}
async assignPermissions(roleName, permissions) {
const role = await Role.findOne({ name: roleName });
role.permissions = permissions;
await role.save();
return role;
}
async checkPermission(role, resource, action) {
const roleDoc = await Role.findOne({ name: role });
if (!roleDoc) return false;
return roleDoc.permissions.some(p =>
p.resource === resource &&
(p.actions.includes(action) || p.actions.includes('manage'))
);
}
}
module.exports = RoleService;