> ## Documentation Index
> Fetch the complete documentation index at: https://docs.zopio.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# crud-permissions

> Generate permissions configuration and middleware for a model

# CRUD Permissions Command

The `crud-permissions` command generates permissions configuration and middleware for a model in your `zopio` project. This helps implement role-based access control (RBAC) for your CRUD operations.

## Usage

```bash theme={"system"}
zopio crud-permissions [options]
```

## Options

| Option                     | Description                                             |
| -------------------------- | ------------------------------------------------------- |
| `-m, --model <name>`       | Model name                                              |
| `-r, --roles <roles>`      | Roles in format "admin:all,user:read,editor:read,write" |
| `-o, --output <directory>` | Output directory for permissions files                  |
| `-h, --help`               | Display help for command                                |

## Examples

### Generate permissions for a User model

```bash theme={"system"}
zopio crud-permissions --model User --roles "admin:all,user:read,editor:read,write"
```

### Generate permissions with a custom output directory

```bash theme={"system"}
zopio crud-permissions --model Product --roles "admin:all,manager:all,staff:read,write,customer:read" --output src/permissions
```

## Generated Files

When you run the `crud-permissions` command, the following files will be generated:

1. **Permissions Configuration**: Defines permissions for each role
2. **Middleware**: Express middleware for enforcing permissions
3. **React Hook**: Custom hook for checking permissions in React components

### Example Permissions Configuration

```javascript theme={"system"}
export const UserPermissions = {
  admin: {
    create: true,
    read: true,
    update: true,
    delete: true
  },
  user: {
    create: false,
    read: true,
    update: false,
    delete: false
  },
  editor: {
    create: false,
    read: true,
    update: true,
    delete: false
  }
};
```

### Example Express Middleware Usage

```javascript theme={"system"}
import { UserPermissionMiddleware } from './middleware/user.permissions';

// Apply middleware to routes
router.get('/user', UserPermissionMiddleware.read, controller.getAll);
router.post('/user', UserPermissionMiddleware.create, controller.create);
router.put('/user/:id', UserPermissionMiddleware.update, controller.update);
router.delete('/user/:id', UserPermissionMiddleware.delete, controller.delete);
```

### Example React Hook Usage

```javascript theme={"system"}
import { useUserPermissions } from './hooks/useUserPermissions';

function UserComponent() {
  const { canRead, canCreate, canUpdate, canDelete } = useUserPermissions();
  
  return (
    <div>
      {canRead && <UserList />}
      {canCreate && <button>Create User</button>}
      {canUpdate && <button>Edit User</button>}
      {canDelete && <button>Delete User</button>}
    </div>
  );
}
```

## Related Commands

* [`crud`](/cli/01_commands/crud) - Generate basic CRUD operations
* [`crud-unified`](/cli/01_commands/crud-unified) - Generate a complete CRUD setup
