File: D:/HostingSpaces/SBogers10/shop.komma.nl/app/Addresses/AddressPolicy.php
<?php declare(strict_types=1);
namespace App\Addresses;
use App\Addresses\Models\Address;
use App\Users\SiteUser;
use App\Users\SiteUserInterface;
class AddressPolicy
{
/**
* Determine if it is allowed to update an existing resource after editing it on the site front
*
* @param SiteUserInterface|null $user
* @param AddressInterface $address
*
* @return bool
*/
public function update(SiteUserInterface $user, AddressInterface $address): bool
{
return
$user->account_address_id === $address->id ||
$address->site_user_id === $user->id ||
$user->invoice_address_id === $address->id ||
$user->shipping_address_id === $address->id;
}
/**
* Determine if it is allowed to store a new resource after editing it on the site front
*
* @param SiteUserInterface|null $user
*
* @return bool
*/
public function store(SiteUserInterface $user): bool
{
return $user !== null;
}
/**
* Determine if it is allowed to destroy an existing resource on the site front
*
* @param SiteUserInterface|null $user
* @param AddressInterface $address
*
* @return bool
*/
public function delete(SiteUserInterface $user, AddressInterface $address): bool
{
return
$user->account_address_id === $address->id ||
$address->site_user_id === $user->id ||
$user->invoice_address_id === $address->id ||
$user->shipping_address_id === $address->id;
}
/**
* Determine if it is allowed to mark an address as the users account address
*
* @param SiteUserInterface|null $user
* @param AddressInterface $address
*
* @return bool
*/
public function mark_as_account_address(SiteUserInterface $user, AddressInterface $address): bool
{
return
$user->account_address_id === $address->id ||
$address->site_user_id === $user->id ||
$user->invoice_address_id === $address->id ||
$user->shipping_address_id === $address->id;
}
/**
* Determine if it is allowed to mark an address as the users shipping address
*
* @param SiteUser|null $user
* @param Address $address
*
* @return bool
*/
public function mark_as_shipping_address(SiteUser $user, Address $address): bool
{
return
$user->account_address_id === $address->id ||
$address->site_user_id === $user->id ||
$user->invoice_address_id === $address->id ||
$user->shipping_address_id === $address->id;
}
/**
* Determine if it is allowed to mark an address as the users shipping address for the current checkout session
*
* @param SiteUser|null $user
* @param Address $address
*
* @return bool
*/
public function mark_as_shipping_address_for_checkout(SiteUser $user, Address $address): bool
{
return $address->site_user_id === $user->id;
}
/**
* Determine if it is allowed to mark an address as the users invoice address
*
* @param SiteUser|null $user
* @param Address $address
*
* @return bool
*/
public function mark_as_invoice_address(SiteUser $user, Address $address): bool
{
return
$user->account_address_id === $address->id ||
$address->site_user_id === $user->id ||
$user->invoice_address_id === $address->id ||
$user->shipping_address_id === $address->id;
}
/**
* Determine if it is allowed to mark an address as the users invoice address for the current checkout process
*
* @param SiteUser|null $user
* @param Address $address
*
* @return bool
*/
public function mark_as_invoice_address_for_checkout(SiteUser $user, Address $address): bool
{
\Log::debug('check invoice rights: '.$address->site_user_id.' '.$user->id);
return $address->site_user_id === $user->id;
}
/**
* Wheter or not a user may retrieve its account address
*/
public function get_account_address() {
return auth()->guard('site')->check();
}
}