Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Showing
with
176 additions
and 8 deletions.
- +2 −2 app/Http/Controllers/V1/Admin/Expense/ExpensesController.php
- +3 −2 app/Http/Controllers/V1/Admin/Expense/UploadReceiptController.php
- +6 −4 app/Http/Controllers/V1/Admin/Settings/CompanyController.php
- +40 −0 app/Http/Requests/AvatarRequest.php
- +34 −0 app/Http/Requests/CompanyLogoRequest.php
- +6 −0 app/Http/Requests/ExpenseRequest.php
- +85 −0 app/Rules/Base64Mime.php
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@@ -0,0 +1,40 @@ | ||
<?php | ||
|
||
namespace Crater\Http\Requests; | ||
|
||
use Crater\Rules\Base64Mime; | ||
use Illuminate\Foundation\Http\FormRequest; | ||
|
||
class AvatarRequest extends FormRequest | ||
{ | ||
/** | ||
* Determine if the user is authorized to make this request. | ||
* | ||
* @return bool | ||
*/ | ||
public function authorize() | ||
{ | ||
return true; | ||
} | ||
|
||
/** | ||
* Get the validation rules that apply to the request. | ||
* | ||
* @return array | ||
*/ | ||
public function rules() | ||
{ | ||
return [ | ||
'admin_avatar' => [ | ||
'nullable', | ||
'file', | ||
'mimes:gif,jpg,png', | ||
'max:20000' | ||
], | ||
'avatar' => [ | ||
'nullable', | ||
new Base64Mime(['gif', 'jpg', 'png']) | ||
] | ||
]; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@@ -0,0 +1,34 @@ | ||
<?php | ||
|
||
namespace Crater\Http\Requests; | ||
|
||
use Crater\Rules\Base64Mime; | ||
use Illuminate\Foundation\Http\FormRequest; | ||
|
||
class CompanyLogoRequest extends FormRequest | ||
{ | ||
/** | ||
* Determine if the user is authorized to make this request. | ||
* | ||
* @return bool | ||
*/ | ||
public function authorize() | ||
{ | ||
return true; | ||
} | ||
|
||
/** | ||
* Get the validation rules that apply to the request. | ||
* | ||
* @return array | ||
*/ | ||
public function rules() | ||
{ | ||
return [ | ||
'company_logo' => [ | ||
'nullable', | ||
new Base64Mime(['gif', 'jpg', 'png']) | ||
] | ||
]; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@@ -0,0 +1,85 @@ | ||
<?php | ||
|
||
namespace Crater\Rules; | ||
|
||
use Illuminate\Contracts\Validation\Rule; | ||
|
||
class Base64Mime implements Rule | ||
{ | ||
private $attribute; | ||
private $extensions; | ||
|
||
/** | ||
* Create a new rule instance. | ||
* | ||
* @return void | ||
*/ | ||
public function __construct(array $extensions) | ||
{ | ||
$this->extensions = $extensions; | ||
} | ||
|
||
/** | ||
* Determine if the validation rule passes. | ||
* | ||
* @param string $attribute | ||
* @param mixed $value | ||
* @return bool | ||
*/ | ||
public function passes($attribute, $value) | ||
{ | ||
$this->attribute = $attribute; | ||
|
||
try { | ||
$data = json_decode($value)->data; | ||
} catch (\Exception $e) { | ||
return False; | ||
} | ||
|
||
$pattern = '/^data:\w+\/[\w\+]+;base64,[\w\+\=\/]+$/'; | ||
|
||
if(!preg_match($pattern, $data)) { | ||
return False; | ||
} | ||
|
||
$data = explode(',', $data); | ||
|
||
if(!isset($data[1]) || empty($data[1])) { | ||
return False; | ||
} | ||
|
||
try { | ||
$data = base64_decode($data[1]); | ||
$f = finfo_open(); | ||
$result = finfo_buffer($f, $data, FILEINFO_EXTENSION); | ||
|
||
if($result === '???') | ||
return False; | ||
|
||
if(strpos($result, '/')) { | ||
foreach(explode('/', $result) as $ext) { | ||
if(in_array($ext, $this->extensions)) | ||
return True; | ||
} | ||
} else { | ||
if(in_array($result, $this->extensions)) | ||
return True; | ||
} | ||
} catch (\Exception $e) { | ||
return False; | ||
} | ||
|
||
return False; | ||
|
||
} | ||
|
||
/** | ||
* Get the validation error message. | ||
* | ||
* @return string | ||
*/ | ||
public function message() | ||
{ | ||
return 'The ' . $this->attribute . ' must be a json with file of type: ' . implode(', ', $this->extensions) . ' encoded in base64.'; | ||
} | ||
} |