<?php
/**
 * @package Hafenstudios\Kurato
 */

namespace Hafenstudios\Kurato\Rest;

defined( 'ABSPATH' ) || exit;

/**
 * Gemeinsame Basis der Kurato-REST-Controller.
 *
 * Buendelt die immer gleichen Berechtigungspruefungen (Lesen = hs_view_contacts,
 * Aendern = hs_manage_contacts) und den einheitlichen Berechtigungsfehler, damit
 * die Controller nicht jeweils denselben Code fuehren.
 */
abstract class AbstractController {

	/**
	 * Lese-Berechtigung.
	 *
	 * @return bool|\WP_Error
	 */
	public function can_view() {
		return current_user_can( 'hs_view_contacts' ) ? true : $this->forbidden();
	}

	/**
	 * Schreib-Berechtigung.
	 *
	 * @return bool|\WP_Error
	 */
	public function can_manage() {
		return current_user_can( 'hs_manage_contacts' ) ? true : $this->forbidden();
	}

	/**
	 * Einheitlicher Berechtigungsfehler.
	 *
	 * @return \WP_Error
	 */
	protected function forbidden() {
		return new \WP_Error(
			'kurato_forbidden',
			__( 'Sie haben keine Berechtigung fuer diese Aktion. Bitte wenden Sie sich an eine Administratorin oder einen Administrator.', 'kurato' ),
			array( 'status' => rest_authorization_required_code() )
		);
	}
}
