HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
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();
    }
}