132 lines
5.0 KiB
PHP
132 lines
5.0 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Requests;
|
|
|
|
use App\Storage;
|
|
use Illuminate\Foundation\Http\FormRequest;
|
|
|
|
class StoreStorageRequest 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()
|
|
{
|
|
$result = [];
|
|
|
|
switch ($this->method())
|
|
{
|
|
case 'POST':
|
|
$result = [
|
|
'name' => 'required|unique:storages|max:255',
|
|
'source' => 'required|max:255',
|
|
];
|
|
|
|
switch ($this->get('source'))
|
|
{
|
|
case 'AmazonS3Source':
|
|
$result['auth_url'] = 'sometimes|url';
|
|
$result['access_key'] = 'sometimes|required';
|
|
$result['secret_key'] = 'sometimes|required';
|
|
$result['service_region'] = 'sometimes|required';
|
|
$result['container_name'] = 'sometimes|required';
|
|
break;
|
|
|
|
case 'LocalFilesystemSource':
|
|
$result['location'] = 'sometimes|required|is_dir|dir_empty|is_writeable';
|
|
break;
|
|
|
|
case 'OpenStackSource':
|
|
$result['auth_url'] = 'sometimes|required';
|
|
$result['tenant_name'] = 'sometimes|required';
|
|
$result['username'] = 'sometimes|required';
|
|
$result['password'] = 'sometimes|required';
|
|
$result['service_name'] = 'sometimes|required';
|
|
$result['service_region'] = 'sometimes|required';
|
|
$result['container_name'] = 'sometimes|required';
|
|
$result['cdn_url'] = 'sometimes|url';
|
|
break;
|
|
|
|
case 'RackspaceSource':
|
|
$result['username'] = 'sometimes|required';
|
|
$result['password'] = 'sometimes|required';
|
|
$result['service_region'] = 'sometimes|required';
|
|
$result['container_name'] = 'sometimes|required';
|
|
break;
|
|
|
|
case 'BackblazeB2Source':
|
|
$result['access_key'] = 'sometimes|required';
|
|
$result['secret_key'] = 'sometimes|required';
|
|
$result['container_name'] = 'sometimes|required';
|
|
break;
|
|
|
|
case 'DropboxSource':
|
|
$result['external_service_id'] = 'sometimes|required';
|
|
break;
|
|
}
|
|
break;
|
|
|
|
case 'PATCH':
|
|
case 'PUT':
|
|
$storageId = intval($this->segment(3));
|
|
$storage = Storage::find($storageId);
|
|
$result = [
|
|
'name' => 'required|max:255|unique:storages,name,' . $storageId
|
|
];
|
|
|
|
switch ($storage->source)
|
|
{
|
|
case 'AmazonS3Source':
|
|
$result['auth_url'] = 'sometimes|url';
|
|
$result['access_key'] = 'sometimes|required';
|
|
$result['secret_key'] = 'sometimes|required';
|
|
$result['service_region'] = 'sometimes|required';
|
|
$result['container_name'] = 'sometimes|required';
|
|
break;
|
|
|
|
case 'OpenStackSource':
|
|
$result['auth_url'] = 'sometimes|required';
|
|
$result['tenant_name'] = 'sometimes|required';
|
|
$result['username'] = 'sometimes|required';
|
|
$result['password'] = 'sometimes|required';
|
|
$result['service_name'] = 'sometimes|required';
|
|
$result['service_region'] = 'sometimes|required';
|
|
$result['container_name'] = 'sometimes|required';
|
|
$result['cdn_url'] = 'sometimes|url';
|
|
break;
|
|
|
|
case 'RackspaceSource':
|
|
$result['username'] = 'sometimes|required';
|
|
$result['password'] = 'sometimes|required';
|
|
$result['service_region'] = 'sometimes|required';
|
|
$result['container_name'] = 'sometimes|required';
|
|
break;
|
|
|
|
case 'BackblazeB2Source':
|
|
$result['access_key'] = 'sometimes|required';
|
|
$result['secret_key'] = 'sometimes|required';
|
|
$result['container_name'] = 'sometimes|required';
|
|
break;
|
|
|
|
case 'DropboxSource':
|
|
$result['external_service_id'] = 'sometimes|required';
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
|
|
return $result;
|
|
}
|
|
} |