# payplug/1.0.5/src/Gateway/PayplugPermissions.php

PayPlug for WooCommerce (Official), version 1.0.5. 113 lines.

- Page: https://pluginprobe.com/plugins/payplug/1.0.5/code/src/Gateway/PayplugPermissions.php
- Raw: https://pluginprobe.com/plugins/payplug/1.0.5/raw/src/Gateway/PayplugPermissions.php
- Modified: 2018-09-12T09:16:00+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/payplug/1.0.5/code/src/Gateway/PayplugPermissions.php#L10-L20`.

```php
<?php

namespace Payplug\PayplugWoocommerce\Gateway;

// Exit if accessed directly
if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

use Payplug\Authentication;
use Payplug\Exception\ConfigurationNotSetException;

class PayplugPermissions {

	const OPTION_NAME = 'payplug_permission';
	const LIVE_MODE = 'use_live_mode';
	const SAVE_CARD = 'can_save_cards';

	/**
	 * @var PayplugGateway
	 */
	private $gateway;

	/**
	 * The current mode for the gateway.
	 *
	 * @var string
	 */
	private $gateway_mode;

	/**
	 * @var array
	 */
	private $permissions;

	/**
	 * PayplugPermissions constructor.
	 *
	 * @param PayplugGateway $gateway
	 */
	public function __construct( PayplugGateway $gateway ) {
		$this->gateway      = $gateway;
		$this->gateway_mode = $gateway->get_current_mode();
		$this->load_permissions();
	}

	/**
	 * Get all permissions.
	 *
	 * @return array
	 */
	public function get_permissions() {
		return $this->permissions;
	}

	/**
	 * Check if user has specific permission.
	 *
	 * @param string $user_can
	 *
	 * @return bool
	 */
	public function has_permissions( $user_can ) {
		if ( empty( $user_can ) ) {
			return false;
		}

		return isset( $this->permissions[ $user_can ] ) && true === $this->permissions[ $user_can ];
	}

	/**
	 * Delete permissions for the current mode.
	 *
	 * @return bool
	 */
	public function clear_permissions() {
		return delete_transient( $this->get_key() );
	}

	/**
	 * Load permissions for the current mode.
	 */
	protected function load_permissions() {

		$payplug_permissions = get_transient( $this->get_key() );
		if ( ! empty( $payplug_permissions ) ) {
			$this->permissions = $payplug_permissions;

			return true;
		}

		try {
			$response          = Authentication::getPermissions();
			$this->permissions = ! empty( $response ) ? $response : [];
			set_transient( $this->get_key(), $this->permissions, DAY_IN_SECONDS );

			return true;
		} catch ( ConfigurationNotSetException $e ) {
			$this->permissions = [];
		}

		return false;
	}

	/**
	 * Build the key to retrieve the permissions.
	 *
	 * @return string
	 */
	protected function get_key() {
		return self::OPTION_NAME . '_' . $this->gateway_mode;
	}
}
```
