File: D:/HostingSpaces/brameda/brameda.nl/app/Komma/Shop/Orders/OrderPolicy.php
<?php
namespace App\Komma\Shop\Orders;
use App\Komma\Base\Policy;
use App\Komma\Shop\Orders\Models\Order;
use App\Komma\Users\Models\KmsUserRole;
use App\Komma\Users\Models\KmsUser;
use Illuminate\Auth\Access\HandlesAuthorization;
class OrderPolicy extends Policy
{
use HandlesAuthorization;
protected $forModelName = Order::class;
/**
* Create a new policy instance.
*
* @return void
*/
public function __construct()
{
$this->ignoreAdminStatusForMethods[] = 'createShipmentForOrder'; //Even admins pas this ability test.
$this->ignoreAdminStatusForMethods[] = 'createShipmentGroupForOrder'; //Even admins pas this ability test.\
// parent::$DEBUG = OrderPolicy::class;
}
public function create(KmsUser $user): bool
{
$this->debug('create', false);
return false;
}
/**
* For whom it is allowed to search orders
*
* @param KmsUser $user
* @return bool
*/
public function search(KmsUser $user) {
$result = $user->isAtLeast(KmsUserRole::Editor);
return $result;
}
/**
* @param KmsUser $user
* @param Order $order
* @return bool
*/
public function changeOrderStatus(KmsUser $user, Order $order)
{
return true;
}
/**
* Check if it is allowed to create shipments for the order
*
* @param KmsUser $user
* @param Order $order
* @return bool
*/
public function createShipmentForOrder(KmsUser $user, Order $order)
{
if(!OrderStatus::isValidItem($order->status, true)) return false;
$allowedStatuses = [
// OrderStatus::NEW,
// OrderStatus::PENDING,
// OrderStatus::AWAITING_PAYMENT,
OrderStatus::AWAITING_FULFILLMENT,
OrderStatus::AWAITING_SHIPMENT,
OrderStatus::AWAITING_PICKUP,
OrderStatus::PARTIALLY_SHIPPED,
// OrderStatus::COMPLETED,
// OrderStatus::SHIPPED,
// OrderStatus::CANCELED,
// OrderStatus::DECLINED,
// OrderStatus::REFUNDED,
// OrderStatus::PARTIALLY_REFUNDED,
OrderStatus::DISPUTED,
// OrderStatus::VERIFICATION,
];
$result = (in_array($order->status, $allowedStatuses, true));
// $this->debug('createShipmentForOrder', $result);
return $result;
}
/**
* Check if it is allowed to create shipments for the order
*
* @param KmsUser $user
* @param Order $order
* @return bool
*/
public function createShipmentGroupForOrder(KmsUser $user, Order $order)
{
if(!OrderStatus::isValidItem($order->status, true)) return false;
$allowedStatuses = [
// OrderStatus::NEW,
// OrderStatus::PENDING,
// OrderStatus::AWAITING_PAYMENT,
// OrderStatus::AWAITING_FULFILLMENT,
OrderStatus::AWAITING_SHIPMENT,
// OrderStatus::AWAITING_PICKUP,
// OrderStatus::PARTIALLY_SHIPPED,
// OrderStatus::COMPLETED,
// OrderStatus::SHIPPED,
// OrderStatus::CANCELED,
// OrderStatus::DECLINED,
// OrderStatus::REFUNDED,
// OrderStatus::PARTIALLY_REFUNDED,
// OrderStatus::DISPUTED,
// OrderStatus::VERIFICATION,
];
return (in_array($order->status, $allowedStatuses, true));
}
}