Skip to content

Commit 5468717

Browse files
author
AlexAlexandru
committed
added base64 validation
1 parent 889215f commit 5468717

File tree

4 files changed

+58
-0
lines changed

4 files changed

+58
-0
lines changed
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<?php
2+
3+
namespace Josegonzalez\Upload\Validation;
4+
5+
use Josegonzalez\Upload\Validation\Traits\Base64ValidationTrait;
6+
7+
class Base64Validation
8+
{
9+
use Base64ValidationTrait;
10+
}

src/Validation/DefaultValidation.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@
22

33
namespace Josegonzalez\Upload\Validation;
44

5+
use Josegonzalez\Upload\Validation\Traits\Base64ValidationTrait;
56
use Josegonzalez\Upload\Validation\Traits\ImageValidationTrait;
67
use Josegonzalez\Upload\Validation\Traits\UploadValidationTrait;
78

89
class DefaultValidation
910
{
1011
use ImageValidationTrait;
1112
use UploadValidationTrait;
13+
use Base64ValidationTrait;
1214
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<?php
2+
3+
namespace Josegonzalez\Upload\Validation\Traits;
4+
5+
trait Base64ValidationTrait {
6+
7+
/**
8+
* Allows only the specified mime type to be upload when using base64 uploader
9+
*
10+
* @param mixed $check Value to check
11+
* @param string $allowedMimeType Allowed mime type
12+
* @return bool Success
13+
*/
14+
public static function isMimeType($check, $allowedMimeType)
15+
{
16+
$f = finfo_open();
17+
$mimeType = finfo_buffer($f, base64_decode($check), FILEINFO_MIME_TYPE);
18+
return $mimeType === $allowedMimeType;
19+
}
20+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<?php
2+
3+
namespace Josegonzalez\Upload\Test\TestCase\Validation;
4+
5+
6+
use Cake\TestSuite\TestCase;
7+
use Josegonzalez\Upload\Validation\Base64Validation;
8+
9+
class Base64ValidationTest extends TestCase
10+
{
11+
12+
public function teardown()
13+
{
14+
parent::tearDown();
15+
}
16+
17+
public function testIsMimeTypeOK() {
18+
$png = 'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAB3RJTUUH4AMUECwX5I9GIwAAACFJREFUOMtj/P//PwM1ARMDlcGogaMGjho4auCogUPFQABpCwMlgqgSYAAAAABJRU5ErkJggg==';
19+
$this->assertTrue(Base64Validation::isMimeType($png, 'image/png'));
20+
}
21+
22+
public function testIsMimeTypeInvalid() {
23+
$phpCode = 'PD9waHAgZWNobyAnQ2FrZVBocCc7ID8+';
24+
$this->assertFalse(Base64Validation::isMimeType($phpCode, 'image/png'));
25+
}
26+
}

0 commit comments

Comments
 (0)