# depicter/trunk/app/src/Middleware/CapabilityMiddleware.php

Depicter — Popup &amp; Slider Builder, version trunk. 45 lines.

- Page: https://pluginprobe.com/plugins/depicter/trunk/code/app/src/Middleware/CapabilityMiddleware.php
- Raw: https://pluginprobe.com/plugins/depicter/trunk/raw/app/src/Middleware/CapabilityMiddleware.php
- Modified: 2025-12-27T08:49:18+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/depicter/trunk/code/app/src/Middleware/CapabilityMiddleware.php#L10-L20`.

```php
<?php
namespace Depicter\Middleware;


use WPEmerge\Requests\RequestInterface;
use WPEmerge\Responses\ResponseService;

class CapabilityMiddleware {

	/**
	 * Response service.
	 *
	 * @var ResponseService
	 */
	protected $responseService = null;

	/**
	 * Constructor.
	 *
	 * @codeCoverageIgnore
	 * @param ResponseService $responseService
	 */
	public function __construct( ResponseService $responseService ) {
		$this->responseService = $responseService;
	}

	/**
	 * @param RequestInterface $request
	 * @param                  $next
	 * @param string           $capability
	 *
	 * @return mixed|ResponseService
	 */
	public function handle( RequestInterface $request, $next, string $capability = 'manage_options' ){
		// ignore the request if the current user doesn't have sufficient permissions
		if ( ! current_user_can( $capability ) ) {
			return $this->responseService->json([
				'errors' => [ __( sprintf( "Sorry, insufficient permission to perform this action! '%s' capability is required!", $capability ), 'depicter' ) ]
			])->withStatus(403);
		}

		return $next( $request );
	}
}

```
