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/topswtw.komma.pro/app/KommaApp/Shop/Orders/OrderToken.php
<?php


namespace KommaApp\Shop\Orders;


use Illuminate\Support\Facades\URL;

class OrderToken
{
    private $secret = 'T0ps!P@y123';
    private $cryptData = ['orderId','invoice_first_name','created_at'];

    /**
     * Generate a token specifically for an order
     * Used f.e. for completing pending payments
     *
     * @param $data
     * @return bool
     */
    public function generate($data)
    {
        if ( ! $this->validate($data)) return false;

        return \Hash::make( $this->dataString($data) . $this->secret);
    }

    /**
     * @param $data
     * @param $hashed
     * @return bool
     */
    public function check($data, $hashed)
    {
        if ( ! $this->validate($data)) return false;

        return \Hash::check( $this->dataString($data) . $this->secret, $hashed);
    }

    /**
     * @param $data
     * @return bool
     */
    private function validate($data)
    {
        // Check if all data exists in data
        foreach($this->cryptData as $value)
        {
            if ( ! isset($data[$value])) return false;
        }
        return true;
    }

    /**
     * @param $data
     * @return string
     */
    private function dataString($data)
    {
        $dataString = '';
        foreach($this->cryptData as $value)
        {
            $value == 'created_at' ? $addString = $data['created_at']->timestamp: $addString = $data[$value];
            $dataString .= $addString;
        }
        return $dataString;
    }
}