aboutsummaryrefslogtreecommitdiffhomepage
path: root/main
diff options
context:
space:
mode:
authorMarvin Borner2018-04-27 18:41:52 +0200
committerMarvin Borner2018-04-27 18:41:52 +0200
commit9482331ffd72dcac24a0303ac5e4ece6a5eb0e8b (patch)
treefbbe88e15c88bbd3d2946ea03889368a17d2e050 /main
parent4595d19b8db1ed258bbfa24ac2af8768c105354d (diff)
Added image viewer site
Diffstat (limited to 'main')
-rw-r--r--main/app/sprinkles/admin/routes/posts.php3
-rw-r--r--main/app/sprinkles/admin/src/Controller/PostController.php48
2 files changed, 34 insertions, 17 deletions
diff --git a/main/app/sprinkles/admin/routes/posts.php b/main/app/sprinkles/admin/routes/posts.php
index 918af24..fa2ee4a 100644
--- a/main/app/sprinkles/admin/routes/posts.php
+++ b/main/app/sprinkles/admin/routes/posts.php
@@ -9,8 +9,7 @@
/**
* Routes for posting.
*/
-
-$app->get('/image/{PostID}', 'UserFrosting\Sprinkle\Admin\Controller\PostController:postImage')->add('authGuard');
+$app->get('/image/{PostID}', 'UserFrosting\Sprinkle\Admin\Controller\PostController:showImage')->add('authGuard');
$app->group('/api/posts', function () {
$this->post('/image', 'UserFrosting\Sprinkle\Admin\Controller\PostController:postImage');
diff --git a/main/app/sprinkles/admin/src/Controller/PostController.php b/main/app/sprinkles/admin/src/Controller/PostController.php
index 9f63b50..3b77bfe 100644
--- a/main/app/sprinkles/admin/src/Controller/PostController.php
+++ b/main/app/sprinkles/admin/src/Controller/PostController.php
@@ -18,6 +18,8 @@ use UserFrosting\Support\Exception\BadRequestException;
use Slim\Http\Request;
use Slim\Http\Response;
use Slim\Http\UploadedFile;
+use Illuminate\Database\Capsule\Manager as DB;
+use UserFrosting\Support\Exception\NotFoundException;
/**
* Controller class for user-related requests, including listing users, CRUD for users, etc.
@@ -27,33 +29,39 @@ use Slim\Http\UploadedFile;
class PostController extends SimpleController
{
- public function showImage($request, $response, $args) {
-
+ public function showImage(Request $request, Response $response, $args) {
+ // check if user is authorized
$authorizer = $this->ci->authorizer;
$currentUser = $this->ci->currentUser;
if (!$authorizer->checkAccess($currentUser, 'view_image')) {
throw new ForbiddenException();
}
-
$postID = $args['PostID'];
- }
- public function postImage(Request $request, Response $response) {
- function moveUploadedFile($directory, UploadedFile $uploadedFile) {
- $extension = pathinfo($uploadedFile->getClientFilename(), PATHINFO_EXTENSION);
- $basename = bin2hex(random_bytes(8)); // see http://php.net/manual/en/function.random-bytes.php
- $filename = sprintf('%s.%0.8s', $basename, $extension);
- $uploadedFile->moveTo($directory . DIRECTORY_SEPARATOR . $filename);
- return $filename;
+ // get filename from database
+ $FileRequestedImage = DB::table('image_posts')
+ ->where('PostID', '=', $postID)
+ ->value('File');
+
+ if ($FileRequestedImage) {
+ $FileType = pathinfo($FileRequestedImage, PATHINFO_EXTENSION);
+
+ // echo image
+ $response->write(file_get_contents(__DIR__ . '/../../../../../uploads/' . $FileRequestedImage));
+ return $response->withHeader('Content-type', 'image/' . $FileType);
+ } else {
+ throw new NotFoundException();
}
+ }
+ public function postImage(Request $request, Response $response) {
+ // check if user is authorized
$authorizer = $this->ci->authorizer;
$currentUser = $this->ci->currentUser;
if (!$authorizer->checkAccess($currentUser, 'post_image')) {
throw new ForbiddenException();
}
- $directory = __DIR__ . '/../../../../../uploads'; // It's ugly but it is flexible..
$uploadedFiles = $request->getUploadedFiles();
$uploadedFile = $uploadedFiles['image'];
@@ -63,9 +71,19 @@ class PostController extends SimpleController
return $response->withStatus(406);
} else if ($uploadedFile->getSize() > 10485760) {
return $response->withStatus(413);
- } else {
- $filename = moveUploadedFile($directory, $uploadedFile);
- $response->write('uploaded ' . $filename . '<br/>');
+ } else { // Upload is accepted
+ // Move file to upload directory
+ $extension = pathinfo($uploadedFile->getClientFilename(), PATHINFO_EXTENSION);
+ $basename = bin2hex(random_bytes(8));
+ $filename = sprintf('%s.%0.8s', $basename, $extension);
+ $uploadedFile->moveTo(__DIR__ . '/../../../../../uploads' . DIRECTORY_SEPARATOR . $filename);
+
+ // Store in Database
+ DB::table('image_posts')->insert(
+ ['UserID' => $currentUser->id, 'File' => $filename]
+ );
+
+ $response->write('Uploaded successfully! <br/>');
}
}