# Backend Codeigniter Filters

> Middleware/filters, authentication, CORS.

- Skill: `valec3/backend-codeigniter-filters` (Agent Skill)
- Install (CLI): `npx skillmds add valec3/backend-codeigniter-filters`
- Raw SKILL.md: https://api.skillmd.com/api/skills/valec3/backend-codeigniter-filters/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: valec3 (https://skillmd.com/u/valec3)
- Updated: 2026-09-10
- Page: https://skillmd.com/skills/valec3/backend-codeigniter-filters

---


# Backend CodeIgniter Filters

## When to use this skill
- Authentication
- CORS
- Rate limiting
- Request/response modification

## Workflow
- [ ] Create filter class
- [ ] Register in Config/Filters.php
- [ ] Apply to routes
- [ ] Handle before/after
- [ ] Return responses or modify request

## Instructions

### Auth Filter
```php
<?php

namespace App\Filters;

use CodeIgniter\HTTP\RequestInterface;
use CodeIgniter\HTTP\ResponseInterface;
use CodeIgniter\Filters\FilterInterface;

class AuthFilter implements FilterInterface
{
    public function before(RequestInterface $request, $arguments = null)
    {
        $token = $request->getHeaderLine('Authorization');
        
        if (!$this->validateToken($token)) {
            return Services::response()
                ->setJSON(['error' => 'Unauthorized'])
                ->setStatusCode(401);
        }
    }

    public function after(RequestInterface $request, ResponseInterface $response, $arguments = null)
    {
        // Post-processing
    }
}
```

### CORS Filter
```php
<?php

class CorsFilter implements FilterInterface
{
    public function before(RequestInterface $request, $arguments = null)
    {
        header('Access-Control-Allow-Origin: *');
        header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE');
        header('Access-Control-Allow-Headers: Content-Type, Authorization');

        if ($request->getMethod() === 'options') {
            exit;
        }
    }
}
```

## Resources
- before() runs before controller
- after() runs after controller
- Return response to short-circuit

