Skip to main content

Overview

The Blog Marketing Platform implements a robust Role-Based Access Control (RBAC) system with 6 distinct user roles, each with specific permissions that control access to features and content management capabilities.

User Roles

Creador

Platform owner with complete access to all features and settings

Administrador

System manager with user and content oversight capabilities

Editor

Content manager who can edit any post and moderate comments

Escritor

Content creator who can write and submit posts for review

Autor

Writer who can publish posts directly without review

Comentador

Reader with commenting and reaction privileges only

Role Details

1. Creador (Creator)

Role ID: 1
Access Level: Complete platform control
This is the highest privilege level, typically assigned to the platform owner or founder.
Permissions:
  • admin_completo - Full administrative access
  • asignar_roles - Assign and modify user roles
  • crear_categoria - Create content categories
  • editar_categoria - Edit category settings
  • eliminar_categoria - Delete categories
  • crear_post - Create blog posts
  • editar_post_cualquiera - Edit any post
  • editar_post_propio - Edit own posts
  • publicar_post - Publish posts
  • rechazar_post - Reject post submissions
  • comentar - Write comments
  • reaccionar - React to content
Capabilities:
  • Full system configuration
  • User role management
  • Complete content control
  • Analytics access
  • Platform settings

2. Administrador (Administrator)

Role ID: 2
Access Level: System management
Permissions:
  • asignar_roles - Manage user roles
  • crear_categoria - Create categories
  • editar_categoria - Edit categories
  • eliminar_categoria - Delete categories
  • editar_post_cualquiera - Edit any post
  • publicar_post - Publish posts
  • rechazar_post - Reject submissions
  • crear_post - Create posts
  • editar_post_propio - Edit own posts
  • comentar - Comment on posts
  • reaccionar - React to content
Capabilities:
  • User management
  • Content oversight
  • Category management
  • Comment moderation
  • Analytics dashboard
Restrictions:
  • Cannot modify system-critical settings
  • Cannot delete the creator account

3. Editor

Role ID: 3
Access Level: Content management
Permissions:
  • editar_post_cualquiera - Edit any user’s posts
  • publicar_post - Publish posts
  • rechazar_post - Reject submissions
  • crear_post - Create own posts
  • editar_post_propio - Edit own posts
  • comentar - Write comments
  • reaccionar - React to content
Capabilities:
  • Review and approve posts
  • Edit content from any author
  • Manage editorial workflow
  • Moderate comments
  • Access content analytics
Restrictions:
  • Cannot create or delete categories
  • Cannot manage users or roles
  • Cannot access system settings

4. Escritor (Writer)

Role ID: 4
Access Level: Content creation
Permissions:
  • crear_post - Create blog posts
  • editar_post_propio - Edit own posts only
  • comentar - Write comments
  • reaccionar - React to content
Capabilities:
  • Create new posts
  • Edit own draft posts
  • Submit posts for review
  • View own analytics
  • Comment on published posts
Restrictions:
  • Cannot publish posts directly (requires approval)
  • Cannot edit other users’ posts
  • Cannot manage categories
  • Limited analytics access (own posts only)
Posts created by Writers enter “Pending Review” status and require approval from an Editor or Administrator before publication.

5. Autor (Author)

Role ID: 5
Access Level: Independent publishing
Permissions:
  • crear_post - Create posts
  • editar_post_propio - Edit own posts
  • publicar_post - Publish own posts directly
  • comentar - Write comments
  • reaccionar - React to content
Capabilities:
  • Create and publish posts independently
  • Edit own published posts
  • View own post analytics
  • Manage own content
Restrictions:
  • Cannot edit others’ posts
  • Cannot manage categories
  • Cannot moderate comments
Key Difference from Writer:
  • Authors can publish posts directly without editorial review
  • Suitable for trusted, experienced content creators

6. Comentador (Commenter)

Role ID: 6
Access Level: Reader engagement
Permissions:
  • comentar - Write comments
  • reaccionar - React to posts and comments
Capabilities:
  • Read all published posts
  • Write and edit own comments
  • Like posts and comments
  • Reply to other comments
Restrictions:
  • Cannot create posts
  • Cannot access dashboard
  • Cannot view analytics
  • Cannot moderate content

Permission Types

The platform defines 12 core permissions:
type Permission = 
  | 'admin_completo'           // Full admin access
  | 'asignar_roles'            // Role management
  | 'comentar'                 // Write comments
  | 'crear_categoria'          // Create categories
  | 'crear_post'               // Create posts
  | 'editar_categoria'         // Edit categories
  | 'editar_post_cualquiera'   // Edit any post
  | 'editar_post_propio'       // Edit own posts
  | 'eliminar_categoria'       // Delete categories
  | 'publicar_post'            // Publish posts
  | 'reaccionar'               // React to content
  | 'rechazar_post';           // Reject posts

Managing Roles & Permissions

Get All Roles

import { getAllRoles } from '@/services/rbacService';

const roles = await getAllRoles();
// Returns:
// [
//   { id: 1, nombre: 'Creador', descripcion: 'Acceso completo' },
//   { id: 2, nombre: 'Administrador', descripcion: 'Gestión del sistema' },
//   ...
// ]

Get All Permissions

import { getAllPermisos } from '@/services/rbacService';

const permissions = await getAllPermisos();

Assign Permission to Role

import { assignPermisoToRole } from '@/services/rbacService';

// Give Editor role the ability to moderate comments
await assignPermisoToRole(3, 15); // roleId: 3, permisoId: 15

Revoke Permission

import { revokePermisoFromRole } from '@/services/rbacService';

// Remove permission from role
await revokePermisoFromRole(roleId, permisoId);

Check Role Permission

import { roleHasPermiso } from '@/services/rbacService';

const canModerate = await roleHasPermiso(3, 'moderar_comentarios');
if (canModerate) {
  // Allow moderation actions
}

Get Role Permissions

import { getPermisosDeRol } from '@/services/rbacService';

const editorPermissions = await getPermisosDeRol(3);
console.log('Editor can:', editorPermissions);

User Role Assignment

Change User Role

import { changeUserRole } from '@/services/usersService';

// Promote user to Editor
await changeUserRole(userId, 'editor');

// Downgrade to Commenter
await changeUserRole(userId, 'comentador');
Only users with the asignar_roles permission (Creador and Administrador) can change user roles. Attempting to change roles without permission will fail.

Role-Based UI Access

The platform controls UI elements based on user roles:
import { useAuth } from '@/hooks/useAuth';

function Dashboard() {
  const { user } = useAuth();
  
  const canPublish = user.permissions.includes('publicar_post');
  const canEditAny = user.permissions.includes('editar_post_cualquiera');
  const canManageUsers = user.permissions.includes('asignar_roles');
  
  return (
    <div>
      {canPublish && <PublishButton />}
      {canEditAny && <EditAllPostsButton />}
      {canManageUsers && <UserManagementPanel />}
    </div>
  );
}

Permission Matrix

FeatureCreadorAdminEditorEscritorAutorComentador
Create Posts
Edit Own Posts
Edit Any Post
Publish Posts
Reject Posts
Create Categories
Manage Categories
Assign Roles
Moderate Comments
Write Comments
View AnalyticsFullFullContentOwnOwn
System Settings

User Statistics by Role

Each user tracks role-specific statistics:
interface User {
  id: number;
  role: Role;
  permissions: Permission[];
  stats: {
    postsCreated?: number;          // Escritor, Autor
    commentsApproved?: number;      // Editor
    usersManaged?: number;          // Admin, Creador
    postsEdited?: number;           // Editor
    postsPublished?: number;        // Editor, Autor
    commentsModerated?: number;     // Editor
    totalViews?: number;            // All content creators
  };
}

Best Practices

Role Assignment

  • Start new users as Comentador
  • Promote based on contribution quality
  • Use Escritor for trial content creators
  • Reserve Autor for trusted writers

Security

  • Regularly audit role assignments
  • Limit Administrador count
  • Review permissions quarterly
  • Never share Creador access

Workflow

  • Editorial teams: Editor + Escritor
  • Trusted bloggers: Autor role
  • Guest writers: Escritor with review
  • Community: Comentador by default

Analytics

  • Track role effectiveness
  • Monitor content quality by role
  • Adjust permissions based on needs
  • Provide role-based training

Creating Custom Roles

While the platform includes 6 default roles, administrators can create custom roles:
import { createRol } from '@/services/rbacService';

const newRole = await createRol({
  nombre: 'Content Curator',
  descripcion: 'Manages featured content and collections'
});

// Assign specific permissions
await assignPermisoToRole(newRole.id, permisoId);

Build docs developers (and LLMs) love