added ShareTest test methods

This commit is contained in:
Peter Papp
2021-02-28 16:45:34 +01:00
parent 81dc7d7ed7
commit b82f34ed4d
8 changed files with 246 additions and 51 deletions
@@ -5,8 +5,9 @@ namespace App\Http\Controllers\FileFunctions;
use App\Http\Requests\Share\CreateShareRequest;
use App\Http\Requests\Share\UpdateShareRequest;
use App\Http\Resources\ShareResource;
use App\Models\Share;
use App\Models\Zip;
use App\Notifications\SharedSendViaEmail;
use App\Zip;
use Illuminate\Contracts\Routing\ResponseFactory;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
@@ -15,7 +16,6 @@ use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Notification;
use Illuminate\Support\Str;
use App\Share;
use Validator;
class ShareController extends Controller
@@ -38,40 +38,43 @@ class ShareController extends Controller
* Generate file share link
*
* @param CreateShareRequest $request
* @param $id
* @return ShareResource
*/
public function store(CreateShareRequest $request)
public function store(CreateShareRequest $request, $id)
{
// TODO: poriesit binarny string
do {
// Generate unique token
$token = Str::random(16);
} while (Share::where(DB::raw('BINARY `token`'), $token)->exists());
} while (Share::where('token', $token)->exists());
// Create shared options
$options = [
'password' => $request->has('password') ? Hash::make($request->password) : null,
'type' => $request->type === 'folder' ? 'folder' : 'file',
'protected' => $request->isPassword,
'permission' => $request->permission,
'item_id' => $request->unique_id,
'expire_in' => $request->expiration,
'user_id' => Auth::id(),
'token' => $token,
'password' => $request->has('password') ? Hash::make($request->password) : null,
'type' => $request->type === 'folder' ? 'folder' : 'file',
'is_protected' => $request->isPassword,
'permission' => $request->permission ?? null,
'item_id' => $id,
'expire_in' => $request->expiration ?? null,
'user_id' => Auth::id(),
'token' => $token,
];
// Return created shared record
$share = new ShareResource(Share::create($options));
// Send shared link via email
if ($request->has('emails')) {
foreach ($request->emails as $email) {
Notification::route('mail', $email)->notify(new SharedSendViaEmail($token));
Notification::route('mail', $email)->notify(
new SharedSendViaEmail($token)
);
}
}
return $share;
// Return created shared record
return new ShareResource(Share::create($options));
}
/**
@@ -137,8 +140,9 @@ class ShareController extends Controller
* @param $token
* @param $request
*/
public function shared_send_via_email(Request $request, $token)
public function send_to_emails_recipients(Request $request, $token)
{
// TODO: pridat validation request
// Make validation of array of emails
$validator = Validator::make($request->all(), [
'emails.*' => 'required|email',
@@ -148,9 +152,11 @@ class ShareController extends Controller
if ($validator->fails()) abort(400, 'Bad email input');
// Send shared link via email
if($request->has('emails')) {
if ($request->has('emails')) {
foreach ($request->emails as $email) {
Notification::route('mail', $email)->notify(new SharedSendViaEmail($token));
Notification::route('mail', $email)
->notify(new SharedSendViaEmail($token));
}
}
@@ -6,8 +6,8 @@ use App\Http\Controllers\Controller;
use App\Http\Requests\Share\AuthenticateShareRequest;
use App\Http\Resources\ShareResource;
use App\Http\Tools\Guardian;
use App\Setting;
use http\Env\Response;
use App\Models\Share;
use App\Models\Setting;
use Illuminate\Contracts\View\Factory;
use Illuminate\Support\Facades\Cookie;
use Illuminate\Support\Facades\DB;
@@ -15,10 +15,9 @@ use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Collection;
use Illuminate\Http\Request;
use Illuminate\Support\Arr;
use App\Folder;
use App\File;
use App\User;
use App\Share;
use App\Models\Folder;
use App\Models\File;
use App\Models\User;
use Illuminate\Support\Facades\Storage;
class FileSharingController extends Controller
@@ -43,14 +42,14 @@ class FileSharingController extends Controller
Cookie::queue('shared_access_token', '', -1);
// Set cookies
if ((int) $shared->protected) {
if ((int) $shared->is_protected) {
// Set shared token
Cookie::queue('shared_token', $token, 43200);
}
// Check if shared is image file and then show it
if ($shared->type === 'file' && ! (int) $shared->protected) {
if ($shared->type === 'file' && ! (int) $shared->is_protected) {
$image = File::where('user_id', $shared->user_id)
->where('type', 'image')
@@ -26,12 +26,11 @@ class CreateShareRequest extends FormRequest
{
return [
'isPassword' => 'required|boolean',
'unique_id' => 'required|integer',
'type' => 'required|string',
'expiration' => 'integer|nullable',
'permission' => 'string',
'password' => 'string',
'emails.*' => 'email'
'emails.*' => 'email'
];
}
}
+9 -9
View File
@@ -19,15 +19,15 @@ class ShareResource extends JsonResource
'id' => (string)$this->id,
'type' => 'shares',
'attributes' => [
'permission' => $this->permission,
'protected' => (int) $this->protected,
'item_id' => (int) $this->item_id,
'expire_in' => (int) $this->expire_in,
'token' => $this->token,
'link' => $this->link,
'type' => $this->type,
'created_at' => $this->created_at,
'updated_at' => $this->updated_at,
'permission' => $this->permission,
'is_protected' => $this->is_protected,
'item_id' => $this->item_id,
'expire_in' => (int)$this->expire_in,
'token' => $this->token,
'link' => $this->link,
'type' => $this->type,
'created_at' => $this->created_at,
'updated_at' => $this->updated_at,
]
]
];