Laravel 10.x Shift #49
@@ -19,7 +19,7 @@ class AnalyticsConductor extends Conductor
|
|||||||
* The Model Class
|
* The Model Class
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
protected $class = '\App\Models\Analytics';
|
protected $class = \App\Models\Analytics::class;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The default sorting field
|
* The default sorting field
|
||||||
@@ -41,7 +41,7 @@ class AnalyticsConductor extends Conductor
|
|||||||
* @param Model $model The model.
|
* @param Model $model The model.
|
||||||
* @return boolean Allow model to be visible.
|
* @return boolean Allow model to be visible.
|
||||||
*/
|
*/
|
||||||
public static function viewable(Model $model)
|
public static function viewable(Model $model): bool
|
||||||
{
|
{
|
||||||
$user = auth()->user();
|
$user = auth()->user();
|
||||||
return ($user !== null && $user->hasPermission('admin/analytics') === true);
|
return ($user !== null && $user->hasPermission('admin/analytics') === true);
|
||||||
@@ -52,7 +52,7 @@ class AnalyticsConductor extends Conductor
|
|||||||
*
|
*
|
||||||
* @return boolean Allow creating model.
|
* @return boolean Allow creating model.
|
||||||
*/
|
*/
|
||||||
public static function creatable()
|
public static function creatable(): bool
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -63,7 +63,7 @@ class AnalyticsConductor extends Conductor
|
|||||||
* @param Model $model The model.
|
* @param Model $model The model.
|
||||||
* @return boolean Allow updating model.
|
* @return boolean Allow updating model.
|
||||||
*/
|
*/
|
||||||
public static function updatable(Model $model)
|
public static function updatable(Model $model): bool
|
||||||
{
|
{
|
||||||
$user = auth()->user();
|
$user = auth()->user();
|
||||||
return ($user !== null && $user->hasPermission('admin/analytics') === true);
|
return ($user !== null && $user->hasPermission('admin/analytics') === true);
|
||||||
@@ -75,7 +75,7 @@ class AnalyticsConductor extends Conductor
|
|||||||
* @param Model $model The model.
|
* @param Model $model The model.
|
||||||
* @return boolean Allow deleting model.
|
* @return boolean Allow deleting model.
|
||||||
*/
|
*/
|
||||||
public static function destroyable(Model $model)
|
public static function destroyable(Model $model): bool
|
||||||
{
|
{
|
||||||
$user = auth()->user();
|
$user = auth()->user();
|
||||||
return ($user !== null && $user->hasPermission('admin/analytics') === true);
|
return ($user !== null && $user->hasPermission('admin/analytics') === true);
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ class ArticleConductor extends Conductor
|
|||||||
* The Model Class
|
* The Model Class
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
protected $class = '\App\Models\Article';
|
protected $class = \App\Models\Article::class;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The default sorting field
|
* The default sorting field
|
||||||
@@ -39,9 +39,8 @@ class ArticleConductor extends Conductor
|
|||||||
* Run a scope query on the collection before anything else.
|
* Run a scope query on the collection before anything else.
|
||||||
*
|
*
|
||||||
* @param Builder $builder The builder in use.
|
* @param Builder $builder The builder in use.
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function scope(Builder $builder)
|
public function scope(Builder $builder): void
|
||||||
{
|
{
|
||||||
$user = auth()->user();
|
$user = auth()->user();
|
||||||
if ($user === null || $user->hasPermission('admin/articles') === false) {
|
if ($user === null || $user->hasPermission('admin/articles') === false) {
|
||||||
@@ -56,7 +55,7 @@ class ArticleConductor extends Conductor
|
|||||||
* @param Model $model The model.
|
* @param Model $model The model.
|
||||||
* @return boolean Allow model to be visible.
|
* @return boolean Allow model to be visible.
|
||||||
*/
|
*/
|
||||||
public static function viewable(Model $model)
|
public static function viewable(Model $model): bool
|
||||||
{
|
{
|
||||||
if (Carbon::parse($model->publish_at)->isFuture() === true) {
|
if (Carbon::parse($model->publish_at)->isFuture() === true) {
|
||||||
$user = auth()->user();
|
$user = auth()->user();
|
||||||
@@ -73,7 +72,7 @@ class ArticleConductor extends Conductor
|
|||||||
*
|
*
|
||||||
* @return boolean Allow creating model.
|
* @return boolean Allow creating model.
|
||||||
*/
|
*/
|
||||||
public static function creatable()
|
public static function creatable(): bool
|
||||||
{
|
{
|
||||||
$user = auth()->user();
|
$user = auth()->user();
|
||||||
return ($user !== null && $user->hasPermission('admin/articles') === true);
|
return ($user !== null && $user->hasPermission('admin/articles') === true);
|
||||||
@@ -85,7 +84,7 @@ class ArticleConductor extends Conductor
|
|||||||
* @param Model $model The model.
|
* @param Model $model The model.
|
||||||
* @return boolean Allow updating model.
|
* @return boolean Allow updating model.
|
||||||
*/
|
*/
|
||||||
public static function updatable(Model $model)
|
public static function updatable(Model $model): bool
|
||||||
{
|
{
|
||||||
$user = auth()->user();
|
$user = auth()->user();
|
||||||
return ($user !== null && $user->hasPermission('admin/articles') === true);
|
return ($user !== null && $user->hasPermission('admin/articles') === true);
|
||||||
@@ -97,7 +96,7 @@ class ArticleConductor extends Conductor
|
|||||||
* @param Model $model The model.
|
* @param Model $model The model.
|
||||||
* @return boolean Allow deleting model.
|
* @return boolean Allow deleting model.
|
||||||
*/
|
*/
|
||||||
public static function destroyable(Model $model)
|
public static function destroyable(Model $model): bool
|
||||||
{
|
{
|
||||||
$user = auth()->user();
|
$user = auth()->user();
|
||||||
return ($user !== null && $user->hasPermission('admin/articles') === true);
|
return ($user !== null && $user->hasPermission('admin/articles') === true);
|
||||||
@@ -109,7 +108,7 @@ class ArticleConductor extends Conductor
|
|||||||
* @param array $data The model data to transform.
|
* @param array $data The model data to transform.
|
||||||
* @return array The transformed model.
|
* @return array The transformed model.
|
||||||
*/
|
*/
|
||||||
public function transformFinal(array $data)
|
public function transformFinal(array $data): array
|
||||||
{
|
{
|
||||||
unset($data['user_id']);
|
unset($data['user_id']);
|
||||||
return $data;
|
return $data;
|
||||||
@@ -145,7 +144,7 @@ class ArticleConductor extends Conductor
|
|||||||
* @param mixed $value The current value.
|
* @param mixed $value The current value.
|
||||||
* @return array The new value.
|
* @return array The new value.
|
||||||
*/
|
*/
|
||||||
public function transformHero(mixed $value)
|
public function transformHero(mixed $value): array
|
||||||
{
|
{
|
||||||
return MediaConductor::includeModel(request(), 'hero', Media::find($value));
|
return MediaConductor::includeModel(request(), 'hero', Media::find($value));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -81,7 +81,7 @@ class Conductor
|
|||||||
* @param string $string The string to split.
|
* @param string $string The string to split.
|
||||||
* @return array The split string.
|
* @return array The split string.
|
||||||
*/
|
*/
|
||||||
private function splitString(string $string)
|
private function splitString(string $string): array
|
||||||
{
|
{
|
||||||
$parts = [];
|
$parts = [];
|
||||||
$start = 0;
|
$start = 0;
|
||||||
@@ -143,9 +143,8 @@ class Conductor
|
|||||||
*
|
*
|
||||||
* @param Request $request The user request.
|
* @param Request $request The user request.
|
||||||
* @param array|null $limitFields A list of fields to limit the filter request to.
|
* @param array|null $limitFields A list of fields to limit the filter request to.
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
private function filter(Request $request, array|null $limitFields = null)
|
private function filter(Request $request, array|null $limitFields = null): void
|
||||||
{
|
{
|
||||||
if (is_array($limitFields) === true && count($limitFields) === 0) {
|
if (is_array($limitFields) === true && count($limitFields) === 0) {
|
||||||
$limitFields = null;
|
$limitFields = null;
|
||||||
@@ -210,10 +209,8 @@ class Conductor
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Apple the filter array to the collection.
|
* Apple the filter array to the collection.
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
final public function applyFilters()
|
final public function applyFilters(): void
|
||||||
{
|
{
|
||||||
$parseFunc = function ($filterArray, $query) use (&$parseFunc) {
|
$parseFunc = function ($filterArray, $query) use (&$parseFunc) {
|
||||||
$item = null;
|
$item = null;
|
||||||
@@ -365,7 +362,7 @@ class Conductor
|
|||||||
* @param Request $request The request data.
|
* @param Request $request The request data.
|
||||||
* @return array The processed and transformed collection | the total rows found.
|
* @return array The processed and transformed collection | the total rows found.
|
||||||
*/
|
*/
|
||||||
final public static function request(Request $request)
|
final public static function request(Request $request): array
|
||||||
{
|
{
|
||||||
$conductor_class = get_called_class();
|
$conductor_class = get_called_class();
|
||||||
$conductor = new $conductor_class();
|
$conductor = new $conductor_class();
|
||||||
@@ -457,7 +454,7 @@ class Conductor
|
|||||||
* @param Collection $collection The collection.
|
* @param Collection $collection The collection.
|
||||||
* @return array The processed and transformed model data.
|
* @return array The processed and transformed model data.
|
||||||
*/
|
*/
|
||||||
final public static function collection(Request $request, Collection $collection)
|
final public static function collection(Request $request, Collection $collection): array
|
||||||
{
|
{
|
||||||
$conductor_class = get_called_class();
|
$conductor_class = get_called_class();
|
||||||
$conductor = new $conductor_class();
|
$conductor = new $conductor_class();
|
||||||
@@ -503,9 +500,8 @@ class Conductor
|
|||||||
* @param Builder $query The custom query.
|
* @param Builder $query The custom query.
|
||||||
* @param Request $request The request.
|
* @param Request $request The request.
|
||||||
* @param array|null $limitFields Limit the request to these fields.
|
* @param array|null $limitFields Limit the request to these fields.
|
||||||
* @return Builder
|
|
||||||
*/
|
*/
|
||||||
public static function filterQuery(Builder $query, Request $request, array|null $limitFields = null)
|
public static function filterQuery(Builder $query, Request $request, array|null $limitFields = null): Builder
|
||||||
{
|
{
|
||||||
$conductor_class = get_called_class();
|
$conductor_class = get_called_class();
|
||||||
$conductor = new $conductor_class();
|
$conductor = new $conductor_class();
|
||||||
@@ -525,7 +521,7 @@ class Conductor
|
|||||||
* @param Model|null $model The model.
|
* @param Model|null $model The model.
|
||||||
* @return array The processed and transformed model data.
|
* @return array The processed and transformed model data.
|
||||||
*/
|
*/
|
||||||
final public static function includeModel(Request $request, string $key, mixed $model)
|
final public static function includeModel(Request $request, string $key, mixed $model): array
|
||||||
{
|
{
|
||||||
$fields = [];
|
$fields = [];
|
||||||
|
|
||||||
@@ -553,7 +549,7 @@ class Conductor
|
|||||||
* @param Model|null $model The model.
|
* @param Model|null $model The model.
|
||||||
* @return array The processed and transformed model data.
|
* @return array The processed and transformed model data.
|
||||||
*/
|
*/
|
||||||
final public static function model(mixed $fields, mixed $model)
|
final public static function model(mixed $fields, mixed $model): array
|
||||||
{
|
{
|
||||||
if ($model === null) {
|
if ($model === null) {
|
||||||
return null;
|
return null;
|
||||||
@@ -606,7 +602,7 @@ class Conductor
|
|||||||
*
|
*
|
||||||
* @return integer The current collection count.
|
* @return integer The current collection count.
|
||||||
*/
|
*/
|
||||||
final public function count()
|
final public function count(): int
|
||||||
{
|
{
|
||||||
if ($this->query !== null) {
|
if ($this->query !== null) {
|
||||||
return $this->query->count();
|
return $this->query->count();
|
||||||
@@ -619,9 +615,8 @@ class Conductor
|
|||||||
* Sort the conductor collection.
|
* Sort the conductor collection.
|
||||||
*
|
*
|
||||||
* @param mixed $fields A field name or array of field names to sort. Supports prefix of +/- to change direction.
|
* @param mixed $fields A field name or array of field names to sort. Supports prefix of +/- to change direction.
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
final public function sort(mixed $fields = null)
|
final public function sort(mixed $fields = null): void
|
||||||
{
|
{
|
||||||
$collectionSort = [];
|
$collectionSort = [];
|
||||||
|
|
||||||
@@ -698,9 +693,8 @@ class Conductor
|
|||||||
*
|
*
|
||||||
* @param Model $model The model to append.
|
* @param Model $model The model to append.
|
||||||
* @param array $includes The list of includes to include.
|
* @param array $includes The list of includes to include.
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
final public function applyIncludes(Model $model, array $includes)
|
final public function applyIncludes(Model $model, array $includes): void
|
||||||
{
|
{
|
||||||
foreach ($includes as $include) {
|
foreach ($includes as $include) {
|
||||||
$includeMethodName = 'include' . Str::studly($include);
|
$includeMethodName = 'include' . Str::studly($include);
|
||||||
@@ -718,9 +712,8 @@ class Conductor
|
|||||||
* Limit the returned fields in the conductor collection.
|
* Limit the returned fields in the conductor collection.
|
||||||
*
|
*
|
||||||
* @param array $fields An array of field names.
|
* @param array $fields An array of field names.
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
final public function limitFields(array $fields)
|
final public function limitFields(array $fields): void
|
||||||
{
|
{
|
||||||
if (empty($fields) !== true) {
|
if (empty($fields) !== true) {
|
||||||
$this->query->select(array_diff($fields, $this->includes));
|
$this->query->select(array_diff($fields, $this->includes));
|
||||||
@@ -733,9 +726,8 @@ class Conductor
|
|||||||
* @param string $rawFilter The raw filter string to parse.
|
* @param string $rawFilter The raw filter string to parse.
|
||||||
* @param array|null $limitFields The fields to allow in the filter string.
|
* @param array|null $limitFields The fields to allow in the filter string.
|
||||||
* @param string $outerJoin The join for this filter group.
|
* @param string $outerJoin The join for this filter group.
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
final public function appendFilterString(string $rawFilter, array|null $limitFields = null, string $outerJoin = 'OR')
|
final public function appendFilterString(string $rawFilter, array|null $limitFields = null, string $outerJoin = 'OR'): void
|
||||||
{
|
{
|
||||||
if ($rawFilter === '') {
|
if ($rawFilter === '') {
|
||||||
return;
|
return;
|
||||||
@@ -847,9 +839,8 @@ class Conductor
|
|||||||
* @param string $operator The operator to append.
|
* @param string $operator The operator to append.
|
||||||
* @param string $value The value to append.
|
* @param string $value The value to append.
|
||||||
* @param string $join The join to append.
|
* @param string $join The join to append.
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
final public function appendFilter(string $field, string $operator, string $value, string $join = 'OR')
|
final public function appendFilter(string $field, string $operator, string $value, string $join = 'OR'): void
|
||||||
{
|
{
|
||||||
if (count($this->filterArray) !== 0) {
|
if (count($this->filterArray) !== 0) {
|
||||||
$this->filterArray[] = $join;
|
$this->filterArray[] = $join;
|
||||||
@@ -861,9 +852,8 @@ class Conductor
|
|||||||
* Run a scope query on the collection before anything else.
|
* Run a scope query on the collection before anything else.
|
||||||
*
|
*
|
||||||
* @param Builder $builder The builder in use.
|
* @param Builder $builder The builder in use.
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function scope(Builder $builder)
|
public function scope(Builder $builder): void
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -873,7 +863,7 @@ class Conductor
|
|||||||
* @param Model $model The model in question.
|
* @param Model $model The model in question.
|
||||||
* @return array The array of field names.
|
* @return array The array of field names.
|
||||||
*/
|
*/
|
||||||
public function fields(Model $model)
|
public function fields(Model $model): array
|
||||||
{
|
{
|
||||||
$visibleFields = $model->getVisible();
|
$visibleFields = $model->getVisible();
|
||||||
if (empty($visibleFields) === true) {
|
if (empty($visibleFields) === true) {
|
||||||
@@ -900,7 +890,7 @@ class Conductor
|
|||||||
* @param Model $model The model to transform.
|
* @param Model $model The model to transform.
|
||||||
* @return array The transformed model.
|
* @return array The transformed model.
|
||||||
*/
|
*/
|
||||||
protected function transformModel(Model $model)
|
protected function transformModel(Model $model): array
|
||||||
{
|
{
|
||||||
$result = $this->transform($model);
|
$result = $this->transform($model);
|
||||||
foreach ($result as $key => $value) {
|
foreach ($result as $key => $value) {
|
||||||
@@ -920,7 +910,7 @@ class Conductor
|
|||||||
* @param Model $model The model to transform.
|
* @param Model $model The model to transform.
|
||||||
* @return array The transformed model.
|
* @return array The transformed model.
|
||||||
*/
|
*/
|
||||||
public function transform(Model $model)
|
public function transform(Model $model): array
|
||||||
{
|
{
|
||||||
$result = $model->toArray();
|
$result = $model->toArray();
|
||||||
|
|
||||||
@@ -939,7 +929,7 @@ class Conductor
|
|||||||
* @param array $data The model array to transform.
|
* @param array $data The model array to transform.
|
||||||
* @return array The transformed model.
|
* @return array The transformed model.
|
||||||
*/
|
*/
|
||||||
public function transformFinal(array $data)
|
public function transformFinal(array $data): array
|
||||||
{
|
{
|
||||||
return $data;
|
return $data;
|
||||||
}
|
}
|
||||||
@@ -950,7 +940,7 @@ class Conductor
|
|||||||
* @param Model $model The model in question.
|
* @param Model $model The model in question.
|
||||||
* @return boolean Is the model viewable.
|
* @return boolean Is the model viewable.
|
||||||
*/
|
*/
|
||||||
public static function viewable(Model $model)
|
public static function viewable(Model $model): bool
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -960,7 +950,7 @@ class Conductor
|
|||||||
*
|
*
|
||||||
* @return boolean Is the model creatable.
|
* @return boolean Is the model creatable.
|
||||||
*/
|
*/
|
||||||
public static function creatable()
|
public static function creatable(): bool
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -971,7 +961,7 @@ class Conductor
|
|||||||
* @param Model $model The model in question.
|
* @param Model $model The model in question.
|
||||||
* @return boolean Is the model updatable.
|
* @return boolean Is the model updatable.
|
||||||
*/
|
*/
|
||||||
public static function updatable(Model $model)
|
public static function updatable(Model $model): bool
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -982,7 +972,7 @@ class Conductor
|
|||||||
* @param Model $model The model in question.
|
* @param Model $model The model in question.
|
||||||
* @return boolean Is the model destroyable.
|
* @return boolean Is the model destroyable.
|
||||||
*/
|
*/
|
||||||
public static function destroyable(Model $model)
|
public static function destroyable(Model $model): bool
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ class EventConductor extends Conductor
|
|||||||
* The Model Class
|
* The Model Class
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
protected $class = '\App\Models\Event';
|
protected $class = \App\Models\Event::class;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The default sorting field
|
* The default sorting field
|
||||||
@@ -33,9 +33,8 @@ class EventConductor extends Conductor
|
|||||||
* Run a scope query on the collection before anything else.
|
* Run a scope query on the collection before anything else.
|
||||||
*
|
*
|
||||||
* @param Builder $builder The builder in use.
|
* @param Builder $builder The builder in use.
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function scope(Builder $builder)
|
public function scope(Builder $builder): void
|
||||||
{
|
{
|
||||||
$user = auth()->user();
|
$user = auth()->user();
|
||||||
if ($user === null || $user->hasPermission('admin/events') === false) {
|
if ($user === null || $user->hasPermission('admin/events') === false) {
|
||||||
@@ -51,7 +50,7 @@ class EventConductor extends Conductor
|
|||||||
* @param Model $model The model.
|
* @param Model $model The model.
|
||||||
* @return boolean Allow model to be visible.
|
* @return boolean Allow model to be visible.
|
||||||
*/
|
*/
|
||||||
public static function viewable(Model $model)
|
public static function viewable(Model $model): bool
|
||||||
{
|
{
|
||||||
if (strtolower($model->status) === 'draft' || Carbon::parse($model->publish_at)->isFuture() === true) {
|
if (strtolower($model->status) === 'draft' || Carbon::parse($model->publish_at)->isFuture() === true) {
|
||||||
$user = auth()->user();
|
$user = auth()->user();
|
||||||
@@ -68,7 +67,7 @@ class EventConductor extends Conductor
|
|||||||
*
|
*
|
||||||
* @return boolean Allow creating model.
|
* @return boolean Allow creating model.
|
||||||
*/
|
*/
|
||||||
public static function creatable()
|
public static function creatable(): bool
|
||||||
{
|
{
|
||||||
$user = auth()->user();
|
$user = auth()->user();
|
||||||
return ($user !== null && $user->hasPermission('admin/events') === true);
|
return ($user !== null && $user->hasPermission('admin/events') === true);
|
||||||
@@ -80,7 +79,7 @@ class EventConductor extends Conductor
|
|||||||
* @param Model $model The model.
|
* @param Model $model The model.
|
||||||
* @return boolean Allow updating model.
|
* @return boolean Allow updating model.
|
||||||
*/
|
*/
|
||||||
public static function updatable(Model $model)
|
public static function updatable(Model $model): bool
|
||||||
{
|
{
|
||||||
$user = auth()->user();
|
$user = auth()->user();
|
||||||
return ($user !== null && $user->hasPermission('admin/events') === true);
|
return ($user !== null && $user->hasPermission('admin/events') === true);
|
||||||
@@ -92,7 +91,7 @@ class EventConductor extends Conductor
|
|||||||
* @param Model $model The model.
|
* @param Model $model The model.
|
||||||
* @return boolean Allow deleting model.
|
* @return boolean Allow deleting model.
|
||||||
*/
|
*/
|
||||||
public static function destroyable(Model $model)
|
public static function destroyable(Model $model): bool
|
||||||
{
|
{
|
||||||
$user = auth()->user();
|
$user = auth()->user();
|
||||||
return ($user !== null && $user->hasPermission('admin/events') === true);
|
return ($user !== null && $user->hasPermission('admin/events') === true);
|
||||||
@@ -121,7 +120,7 @@ class EventConductor extends Conductor
|
|||||||
* @param mixed $value The current value.
|
* @param mixed $value The current value.
|
||||||
* @return array The new value.
|
* @return array The new value.
|
||||||
*/
|
*/
|
||||||
public function transformHero(mixed $value)
|
public function transformHero(mixed $value): array
|
||||||
{
|
{
|
||||||
return MediaConductor::includeModel(request(), 'hero', Media::find($value));
|
return MediaConductor::includeModel(request(), 'hero', Media::find($value));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ class MediaConductor extends Conductor
|
|||||||
* The Model Class
|
* The Model Class
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
protected $class = '\App\Models\Media';
|
protected $class = \App\Models\Media::class;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The default sorting field
|
* The default sorting field
|
||||||
@@ -43,7 +43,7 @@ class MediaConductor extends Conductor
|
|||||||
* @param Model $model The model in question.
|
* @param Model $model The model in question.
|
||||||
* @return array The array of field names.
|
* @return array The array of field names.
|
||||||
*/
|
*/
|
||||||
public function fields(Model $model)
|
public function fields(Model $model): array
|
||||||
{
|
{
|
||||||
$fields = parent::fields($model);
|
$fields = parent::fields($model);
|
||||||
|
|
||||||
@@ -59,9 +59,8 @@ class MediaConductor extends Conductor
|
|||||||
* Run a scope query on the collection before anything else.
|
* Run a scope query on the collection before anything else.
|
||||||
*
|
*
|
||||||
* @param Builder $builder The builder in use.
|
* @param Builder $builder The builder in use.
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function scope(Builder $builder)
|
public function scope(Builder $builder): void
|
||||||
{
|
{
|
||||||
$user = auth()->user();
|
$user = auth()->user();
|
||||||
if ($user === null) {
|
if ($user === null) {
|
||||||
@@ -77,7 +76,7 @@ class MediaConductor extends Conductor
|
|||||||
* @param Model $model The model.
|
* @param Model $model The model.
|
||||||
* @return boolean Allow model to be visible.
|
* @return boolean Allow model to be visible.
|
||||||
*/
|
*/
|
||||||
public static function viewable(Model $model)
|
public static function viewable(Model $model): bool
|
||||||
{
|
{
|
||||||
if ($model->permission !== '') {
|
if ($model->permission !== '') {
|
||||||
$user = auth()->user();
|
$user = auth()->user();
|
||||||
@@ -94,7 +93,7 @@ class MediaConductor extends Conductor
|
|||||||
*
|
*
|
||||||
* @return boolean Allow creating model.
|
* @return boolean Allow creating model.
|
||||||
*/
|
*/
|
||||||
public static function creatable()
|
public static function creatable(): bool
|
||||||
{
|
{
|
||||||
$user = auth()->user();
|
$user = auth()->user();
|
||||||
return ($user !== null);
|
return ($user !== null);
|
||||||
@@ -106,7 +105,7 @@ class MediaConductor extends Conductor
|
|||||||
* @param Model $model The model.
|
* @param Model $model The model.
|
||||||
* @return boolean Allow updating model.
|
* @return boolean Allow updating model.
|
||||||
*/
|
*/
|
||||||
public static function updatable(Model $model)
|
public static function updatable(Model $model): bool
|
||||||
{
|
{
|
||||||
$user = auth()->user();
|
$user = auth()->user();
|
||||||
return ($user !== null && (strcasecmp($model->user_id, $user->id) === 0 || $user->hasPermission('admin/media') === true));
|
return ($user !== null && (strcasecmp($model->user_id, $user->id) === 0 || $user->hasPermission('admin/media') === true));
|
||||||
@@ -118,7 +117,7 @@ class MediaConductor extends Conductor
|
|||||||
* @param Model $model The model.
|
* @param Model $model The model.
|
||||||
* @return boolean Allow deleting model.
|
* @return boolean Allow deleting model.
|
||||||
*/
|
*/
|
||||||
public static function destroyable(Model $model)
|
public static function destroyable(Model $model): bool
|
||||||
{
|
{
|
||||||
$user = auth()->user();
|
$user = auth()->user();
|
||||||
return ($user !== null && ($model->user_id === $user->id || $user->hasPermission('admin/media') === true));
|
return ($user !== null && ($model->user_id === $user->id || $user->hasPermission('admin/media') === true));
|
||||||
@@ -130,7 +129,7 @@ class MediaConductor extends Conductor
|
|||||||
* @param array $data The model data to transform.
|
* @param array $data The model data to transform.
|
||||||
* @return array The transformed model.
|
* @return array The transformed model.
|
||||||
*/
|
*/
|
||||||
public function transformFinal(array $data)
|
public function transformFinal(array $data): array
|
||||||
{
|
{
|
||||||
unset($data['user_id']);
|
unset($data['user_id']);
|
||||||
return $data;
|
return $data;
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ class ShortlinkConductor extends Conductor
|
|||||||
* The Model Class
|
* The Model Class
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
protected $class = '\App\Models\Shortlink';
|
protected $class = \App\Models\Shortlink::class;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The default sorting field
|
* The default sorting field
|
||||||
@@ -26,7 +26,7 @@ class ShortlinkConductor extends Conductor
|
|||||||
*
|
*
|
||||||
* @return boolean Allow creating model.
|
* @return boolean Allow creating model.
|
||||||
*/
|
*/
|
||||||
public static function creatable()
|
public static function creatable(): bool
|
||||||
{
|
{
|
||||||
$user = auth()->user();
|
$user = auth()->user();
|
||||||
return ($user !== null && $user->hasPermission('admin/shortlinks') === true);
|
return ($user !== null && $user->hasPermission('admin/shortlinks') === true);
|
||||||
@@ -38,7 +38,7 @@ class ShortlinkConductor extends Conductor
|
|||||||
* @param Model $model The model.
|
* @param Model $model The model.
|
||||||
* @return boolean Allow updating model.
|
* @return boolean Allow updating model.
|
||||||
*/
|
*/
|
||||||
public static function updatable(Model $model)
|
public static function updatable(Model $model): bool
|
||||||
{
|
{
|
||||||
$user = auth()->user();
|
$user = auth()->user();
|
||||||
return ($user !== null && $user->hasPermission('admin/shortlinks') === true);
|
return ($user !== null && $user->hasPermission('admin/shortlinks') === true);
|
||||||
@@ -50,7 +50,7 @@ class ShortlinkConductor extends Conductor
|
|||||||
* @param Model $model The model.
|
* @param Model $model The model.
|
||||||
* @return boolean Allow deleting model.
|
* @return boolean Allow deleting model.
|
||||||
*/
|
*/
|
||||||
public static function destroyable(Model $model)
|
public static function destroyable(Model $model): bool
|
||||||
{
|
{
|
||||||
$user = auth()->user();
|
$user = auth()->user();
|
||||||
return ($user !== null && $user->hasPermission('admin/shortlinks') === true);
|
return ($user !== null && $user->hasPermission('admin/shortlinks') === true);
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ class SubscriptionConductor extends Conductor
|
|||||||
* The Model Class
|
* The Model Class
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
protected $class = '\App\Models\Subscription';
|
protected $class = \App\Models\Subscription::class;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -19,7 +19,7 @@ class SubscriptionConductor extends Conductor
|
|||||||
* @param Model $model The model.
|
* @param Model $model The model.
|
||||||
* @return boolean Allow updating model.
|
* @return boolean Allow updating model.
|
||||||
*/
|
*/
|
||||||
public static function updatable(Model $model)
|
public static function updatable(Model $model): bool
|
||||||
{
|
{
|
||||||
$user = auth()->user();
|
$user = auth()->user();
|
||||||
return ($user !== null && ((strcasecmp($model->email, $user->email) === 0 && $user->email_verified_at !== null) || $user->hasPermission('admin/subscriptions') === true));
|
return ($user !== null && ((strcasecmp($model->email, $user->email) === 0 && $user->email_verified_at !== null) || $user->hasPermission('admin/subscriptions') === true));
|
||||||
@@ -31,7 +31,7 @@ class SubscriptionConductor extends Conductor
|
|||||||
* @param Model $model The model.
|
* @param Model $model The model.
|
||||||
* @return boolean Allow deleting model.
|
* @return boolean Allow deleting model.
|
||||||
*/
|
*/
|
||||||
public static function destroyable(Model $model)
|
public static function destroyable(Model $model): bool
|
||||||
{
|
{
|
||||||
$user = auth()->user();
|
$user = auth()->user();
|
||||||
return ($user !== null && ((strcasecmp($model->email, $user->email) === 0 && $user->email_verified_at !== null) || $user->hasPermission('admin/subscriptions') === true));
|
return ($user !== null && ((strcasecmp($model->email, $user->email) === 0 && $user->email_verified_at !== null) || $user->hasPermission('admin/subscriptions') === true));
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ class UserConductor extends Conductor
|
|||||||
* The Model Class
|
* The Model Class
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
protected $class = '\App\Models\User';
|
protected $class = \App\Models\User::class;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -19,7 +19,7 @@ class UserConductor extends Conductor
|
|||||||
* @param Model $model The model.
|
* @param Model $model The model.
|
||||||
* @return string[] The fields visible.
|
* @return string[] The fields visible.
|
||||||
*/
|
*/
|
||||||
public function fields(Model $model)
|
public function fields(Model $model): array
|
||||||
{
|
{
|
||||||
$user = auth()->user();
|
$user = auth()->user();
|
||||||
if ($user === null || $user->hasPermission('admin/users') === false) {
|
if ($user === null || $user->hasPermission('admin/users') === false) {
|
||||||
@@ -35,7 +35,7 @@ class UserConductor extends Conductor
|
|||||||
* @param Model $model The model to transform.
|
* @param Model $model The model to transform.
|
||||||
* @return array The transformed model.
|
* @return array The transformed model.
|
||||||
*/
|
*/
|
||||||
public function transform(Model $model)
|
public function transform(Model $model): array
|
||||||
{
|
{
|
||||||
$user = auth()->user();
|
$user = auth()->user();
|
||||||
$data = $model->toArray();
|
$data = $model->toArray();
|
||||||
@@ -56,7 +56,7 @@ class UserConductor extends Conductor
|
|||||||
* @param Model $model The model.
|
* @param Model $model The model.
|
||||||
* @return boolean Allow updating model.
|
* @return boolean Allow updating model.
|
||||||
*/
|
*/
|
||||||
public static function updatable(Model $model)
|
public static function updatable(Model $model): bool
|
||||||
{
|
{
|
||||||
$user = auth()->user();
|
$user = auth()->user();
|
||||||
if ($user !== null) {
|
if ($user !== null) {
|
||||||
@@ -72,7 +72,7 @@ class UserConductor extends Conductor
|
|||||||
* @param Model $model The model.
|
* @param Model $model The model.
|
||||||
* @return boolean Allow deleting model.
|
* @return boolean Allow deleting model.
|
||||||
*/
|
*/
|
||||||
public static function destroyable(Model $model)
|
public static function destroyable(Model $model): bool
|
||||||
{
|
{
|
||||||
$user = auth()->user();
|
$user = auth()->user();
|
||||||
return ($user !== null && $user->hasPermission('admin/users') === true);
|
return ($user !== null && $user->hasPermission('admin/users') === true);
|
||||||
|
|||||||
@@ -27,10 +27,8 @@ class MediaMigrate extends Command
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Configure the command options.
|
* Configure the command options.
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
protected function configure()
|
protected function configure(): void
|
||||||
{
|
{
|
||||||
$this->addOption(
|
$this->addOption(
|
||||||
'replace',
|
'replace',
|
||||||
@@ -42,10 +40,8 @@ class MediaMigrate extends Command
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Execute the console command.
|
* Execute the console command.
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function handle()
|
public function handle(): void
|
||||||
{
|
{
|
||||||
$replace = $this->option('replace');
|
$replace = $this->option('replace');
|
||||||
|
|
||||||
|
|||||||
@@ -26,10 +26,8 @@ class MediaRebuild extends Command
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Configure the command options.
|
* Configure the command options.
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
protected function configure()
|
protected function configure(): void
|
||||||
{
|
{
|
||||||
$this->addOption(
|
$this->addOption(
|
||||||
'replace',
|
'replace',
|
||||||
@@ -48,10 +46,8 @@ class MediaRebuild extends Command
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Execute the console command.
|
* Execute the console command.
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function handle()
|
public function handle(): void
|
||||||
{
|
{
|
||||||
$replace = $this->option('replace');
|
$replace = $this->option('replace');
|
||||||
$all = $this->option('replace');
|
$all = $this->option('replace');
|
||||||
|
|||||||
@@ -11,19 +11,16 @@ class Kernel extends ConsoleKernel
|
|||||||
* Define the application's command schedule.
|
* Define the application's command schedule.
|
||||||
*
|
*
|
||||||
* @param \Illuminate\Console\Scheduling\Schedule $schedule The schedule.
|
* @param \Illuminate\Console\Scheduling\Schedule $schedule The schedule.
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
protected function schedule(Schedule $schedule)
|
protected function schedule(Schedule $schedule): void
|
||||||
{
|
{
|
||||||
// $schedule->command('inspire')->hourly();
|
// $schedule->command('inspire')->hourly();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Register the commands for the application.
|
* Register the commands for the application.
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
protected function commands()
|
protected function commands(): void
|
||||||
{
|
{
|
||||||
$this->load(__DIR__ . '/Commands');
|
$this->load(__DIR__ . '/Commands');
|
||||||
|
|
||||||
|
|||||||
@@ -12,24 +12,6 @@ use Symfony\Component\HttpKernel\Exception\HttpException;
|
|||||||
|
|
||||||
class Handler extends ExceptionHandler
|
class Handler extends ExceptionHandler
|
||||||
{
|
{
|
||||||
/**
|
|
||||||
* A list of exception types with their corresponding custom log levels.
|
|
||||||
*
|
|
||||||
* @var array<class-string<\Throwable>, \Psr\Log\LogLevel::*>
|
|
||||||
*/
|
|
||||||
protected $levels = [
|
|
||||||
//
|
|
||||||
];
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A list of the exception types that are not reported.
|
|
||||||
*
|
|
||||||
* @var array<int, class-string<\Throwable>>
|
|
||||||
*/
|
|
||||||
protected $dontReport = [
|
|
||||||
//
|
|
||||||
];
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A list of the inputs that are never flashed to the session on validation exceptions.
|
* A list of the inputs that are never flashed to the session on validation exceptions.
|
||||||
*
|
*
|
||||||
@@ -44,10 +26,8 @@ class Handler extends ExceptionHandler
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Register the exception handling callbacks for the application.
|
* Register the exception handling callbacks for the application.
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function register()
|
public function register(): void
|
||||||
{
|
{
|
||||||
// $this->renderable(function (HttpException $e, $request) {
|
// $this->renderable(function (HttpException $e, $request) {
|
||||||
// if ($request->is('api/*')) {
|
// if ($request->is('api/*')) {
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ class SubscriptionFilter extends FilterAbstract
|
|||||||
*
|
*
|
||||||
* @var mixed
|
* @var mixed
|
||||||
*/
|
*/
|
||||||
protected $class = '\App\Models\Subscription';
|
protected $class = \App\Models\Subscription::class;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
namespace App\Http\Controllers\Api;
|
namespace App\Http\Controllers\Api;
|
||||||
|
|
||||||
|
use Illuminate\Http\JsonResponse;
|
||||||
use App\Enum\HttpResponseCodes;
|
use App\Enum\HttpResponseCodes;
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
@@ -23,9 +24,8 @@ class ApiController extends Controller
|
|||||||
* @param array $data Response data.
|
* @param array $data Response data.
|
||||||
* @param integer $respondCode Response status code.
|
* @param integer $respondCode Response status code.
|
||||||
* @param array $headers Response headers.
|
* @param array $headers Response headers.
|
||||||
* @return \Illuminate\Http\JsonResponse
|
|
||||||
*/
|
*/
|
||||||
public function respondJson(array $data, int $respondCode = HttpResponseCodes::HTTP_OK, array $headers = [])
|
public function respondJson(array $data, int $respondCode = HttpResponseCodes::HTTP_OK, array $headers = []): JsonResponse
|
||||||
{
|
{
|
||||||
return response()->json($data, $respondCode, $headers);
|
return response()->json($data, $respondCode, $headers);
|
||||||
}
|
}
|
||||||
@@ -34,9 +34,8 @@ class ApiController extends Controller
|
|||||||
* Return forbidden message
|
* Return forbidden message
|
||||||
*
|
*
|
||||||
* @param string $message Response message.
|
* @param string $message Response message.
|
||||||
* @return \Illuminate\Http\JsonResponse
|
|
||||||
*/
|
*/
|
||||||
public function respondForbidden(string $message = 'You do not have permission to access the resource.')
|
public function respondForbidden(string $message = 'You do not have permission to access the resource.'): JsonResponse
|
||||||
{
|
{
|
||||||
return response()->json(['message' => $message], HttpResponseCodes::HTTP_FORBIDDEN);
|
return response()->json(['message' => $message], HttpResponseCodes::HTTP_FORBIDDEN);
|
||||||
}
|
}
|
||||||
@@ -45,9 +44,8 @@ class ApiController extends Controller
|
|||||||
* Return forbidden message
|
* Return forbidden message
|
||||||
*
|
*
|
||||||
* @param string $message Response message.
|
* @param string $message Response message.
|
||||||
* @return \Illuminate\Http\JsonResponse
|
|
||||||
*/
|
*/
|
||||||
public function respondNotFound(string $message = 'The resource was not found.')
|
public function respondNotFound(string $message = 'The resource was not found.'): JsonResponse
|
||||||
{
|
{
|
||||||
return response()->json(['message' => $message], HttpResponseCodes::HTTP_NOT_FOUND);
|
return response()->json(['message' => $message], HttpResponseCodes::HTTP_NOT_FOUND);
|
||||||
}
|
}
|
||||||
@@ -56,36 +54,32 @@ class ApiController extends Controller
|
|||||||
* Return too large message
|
* Return too large message
|
||||||
*
|
*
|
||||||
* @param string $message Response message.
|
* @param string $message Response message.
|
||||||
* @return \Illuminate\Http\JsonResponse
|
|
||||||
*/
|
*/
|
||||||
public function respondTooLarge(string $message = 'The request entity is too large.')
|
public function respondTooLarge(string $message = 'The request entity is too large.'): JsonResponse
|
||||||
{
|
{
|
||||||
return response()->json(['message' => $message], HttpResponseCodes::HTTP_REQUEST_ENTITY_TOO_LARGE);
|
return response()->json(['message' => $message], HttpResponseCodes::HTTP_REQUEST_ENTITY_TOO_LARGE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return no content
|
* Return no content
|
||||||
* @return \Illuminate\Http\JsonResponse
|
|
||||||
*/
|
*/
|
||||||
public function respondNoContent()
|
public function respondNoContent(): JsonResponse
|
||||||
{
|
{
|
||||||
return response()->json([], HttpResponseCodes::HTTP_NO_CONTENT);
|
return response()->json([], HttpResponseCodes::HTTP_NO_CONTENT);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return created
|
* Return created
|
||||||
* @return \Illuminate\Http\JsonResponse
|
|
||||||
*/
|
*/
|
||||||
public function respondCreated()
|
public function respondCreated(): JsonResponse
|
||||||
{
|
{
|
||||||
return response()->json([], HttpResponseCodes::HTTP_CREATED);
|
return response()->json([], HttpResponseCodes::HTTP_CREATED);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return accepted
|
* Return accepted
|
||||||
* @return \Illuminate\Http\JsonResponse
|
|
||||||
*/
|
*/
|
||||||
public function respondAccepted()
|
public function respondAccepted(): JsonResponse
|
||||||
{
|
{
|
||||||
return response()->json([], HttpResponseCodes::HTTP_ACCEPTED);
|
return response()->json([], HttpResponseCodes::HTTP_ACCEPTED);
|
||||||
}
|
}
|
||||||
@@ -95,9 +89,8 @@ class ApiController extends Controller
|
|||||||
*
|
*
|
||||||
* @param string $message Error message.
|
* @param string $message Error message.
|
||||||
* @param integer $responseCode Resource code.
|
* @param integer $responseCode Resource code.
|
||||||
* @return \Illuminate\Http\JsonResponse
|
|
||||||
*/
|
*/
|
||||||
public function respondError(string $message, int $responseCode = HttpResponseCodes::HTTP_UNPROCESSABLE_ENTITY)
|
public function respondError(string $message, int $responseCode = HttpResponseCodes::HTTP_UNPROCESSABLE_ENTITY): JsonResponse
|
||||||
{
|
{
|
||||||
return response()->json([
|
return response()->json([
|
||||||
'message' => $message
|
'message' => $message
|
||||||
@@ -109,9 +102,8 @@ class ApiController extends Controller
|
|||||||
*
|
*
|
||||||
* @param array $errors Error messages.
|
* @param array $errors Error messages.
|
||||||
* @param integer $responseCode Resource code.
|
* @param integer $responseCode Resource code.
|
||||||
* @return \Illuminate\Http\JsonResponse
|
|
||||||
*/
|
*/
|
||||||
public function respondWithErrors(array $errors, int $responseCode = HttpResponseCodes::HTTP_UNPROCESSABLE_ENTITY)
|
public function respondWithErrors(array $errors, int $responseCode = HttpResponseCodes::HTTP_UNPROCESSABLE_ENTITY): JsonResponse
|
||||||
{
|
{
|
||||||
$keys = array_keys($errors);
|
$keys = array_keys($errors);
|
||||||
$error = $errors[$keys[0]];
|
$error = $errors[$keys[0]];
|
||||||
@@ -132,13 +124,12 @@ class ApiController extends Controller
|
|||||||
*
|
*
|
||||||
* @param array|Model|Collection $data Resource data.
|
* @param array|Model|Collection $data Resource data.
|
||||||
* @param array $options Respond options.
|
* @param array $options Respond options.
|
||||||
* @return \Illuminate\Http\JsonResponse
|
|
||||||
*/
|
*/
|
||||||
protected function respondAsResource(
|
protected function respondAsResource(
|
||||||
mixed $data,
|
mixed $data,
|
||||||
array $options = [],
|
array $options = [],
|
||||||
$validationFn = null
|
$validationFn = null
|
||||||
) {
|
): JsonResponse {
|
||||||
$isCollection = $options['isCollection'] ?? false;
|
$isCollection = $options['isCollection'] ?? false;
|
||||||
$appendData = $options['appendData'] ?? null;
|
$appendData = $options['appendData'] ?? null;
|
||||||
$resourceName = $options['resourceName'] ?? null;
|
$resourceName = $options['resourceName'] ?? null;
|
||||||
|
|||||||
@@ -126,7 +126,7 @@ class ArticleController extends ApiController
|
|||||||
* @throws BindingResolutionException
|
* @throws BindingResolutionException
|
||||||
* @throws InvalidCastException
|
* @throws InvalidCastException
|
||||||
*/
|
*/
|
||||||
public function getAttachments(Request $request, Article $article)
|
public function getAttachments(Request $request, Article $article): JsonResponse
|
||||||
{
|
{
|
||||||
if (ArticleConductor::viewable($article) === true) {
|
if (ArticleConductor::viewable($article) === true) {
|
||||||
$medium = $article->attachments->map(function ($attachment) {
|
$medium = $article->attachments->map(function ($attachment) {
|
||||||
@@ -148,7 +148,7 @@ class ArticleController extends ApiController
|
|||||||
* @throws BindingResolutionException
|
* @throws BindingResolutionException
|
||||||
* @throws MassAssignmentException
|
* @throws MassAssignmentException
|
||||||
*/
|
*/
|
||||||
public function storeAttachment(Request $request, Article $article)
|
public function storeAttachment(Request $request, Article $article): JsonResponse
|
||||||
{
|
{
|
||||||
if (ArticleConductor::updatable($article) === true) {
|
if (ArticleConductor::updatable($article) === true) {
|
||||||
if ($request->has("medium") && Media::find($request->medium)) {
|
if ($request->has("medium") && Media::find($request->medium)) {
|
||||||
@@ -167,11 +167,10 @@ class ArticleController extends ApiController
|
|||||||
*
|
*
|
||||||
* @param Request $request The user request.
|
* @param Request $request The user request.
|
||||||
* @param Article $article The related model.
|
* @param Article $article The related model.
|
||||||
* @return JsonResponse
|
|
||||||
* @throws BindingResolutionException
|
* @throws BindingResolutionException
|
||||||
* @throws MassAssignmentException
|
* @throws MassAssignmentException
|
||||||
*/
|
*/
|
||||||
public function updateAttachments(Request $request, Article $article)
|
public function updateAttachments(Request $request, Article $article): JsonResponse
|
||||||
{
|
{
|
||||||
if (ArticleConductor::updatable($article) === true) {
|
if (ArticleConductor::updatable($article) === true) {
|
||||||
$mediaIds = $request->attachments;
|
$mediaIds = $request->attachments;
|
||||||
@@ -216,10 +215,9 @@ class ArticleController extends ApiController
|
|||||||
* @param Request $request The user request.
|
* @param Request $request The user request.
|
||||||
* @param Article $article The model.
|
* @param Article $article The model.
|
||||||
* @param Media $medium The attachment medium.
|
* @param Media $medium The attachment medium.
|
||||||
* @return JsonResponse
|
|
||||||
* @throws BindingResolutionException
|
* @throws BindingResolutionException
|
||||||
*/
|
*/
|
||||||
public function deleteAttachment(Request $request, Article $article, Media $medium)
|
public function deleteAttachment(Request $request, Article $article, Media $medium): JsonResponse
|
||||||
{
|
{
|
||||||
if (ArticleConductor::updatable($article) === true) {
|
if (ArticleConductor::updatable($article) === true) {
|
||||||
$attachments = $article->attachments;
|
$attachments = $article->attachments;
|
||||||
|
|||||||
@@ -31,9 +31,8 @@ class AuthController extends ApiController
|
|||||||
* Current User details
|
* Current User details
|
||||||
*
|
*
|
||||||
* @param Request $request Current request data.
|
* @param Request $request Current request data.
|
||||||
* @return JsonResponse
|
|
||||||
*/
|
*/
|
||||||
public function me(Request $request)
|
public function me(Request $request): JsonResponse
|
||||||
{
|
{
|
||||||
$user = $request->user()->makeVisible(['permissions']);
|
$user = $request->user()->makeVisible(['permissions']);
|
||||||
return $this->respondAsResource($user);
|
return $this->respondAsResource($user);
|
||||||
@@ -87,9 +86,8 @@ class AuthController extends ApiController
|
|||||||
* Logout current user
|
* Logout current user
|
||||||
*
|
*
|
||||||
* @param Request $request Current request data.
|
* @param Request $request Current request data.
|
||||||
* @return JsonResponse
|
|
||||||
*/
|
*/
|
||||||
public function logout(Request $request)
|
public function logout(Request $request): JsonResponse
|
||||||
{
|
{
|
||||||
$user = $request->user();
|
$user = $request->user();
|
||||||
|
|
||||||
|
|||||||
@@ -116,7 +116,7 @@ class EventController extends ApiController
|
|||||||
* @param Event $event The event model.
|
* @param Event $event The event model.
|
||||||
* @return JsonResponse Returns the event attachments.
|
* @return JsonResponse Returns the event attachments.
|
||||||
*/
|
*/
|
||||||
public function getAttachments(Request $request, Event $event)
|
public function getAttachments(Request $request, Event $event): JsonResponse
|
||||||
{
|
{
|
||||||
if (EventConductor::viewable($event) === true) {
|
if (EventConductor::viewable($event) === true) {
|
||||||
$medium = $event->attachments->map(function ($attachment) {
|
$medium = $event->attachments->map(function ($attachment) {
|
||||||
@@ -136,7 +136,7 @@ class EventController extends ApiController
|
|||||||
* @param Event $event The event model.
|
* @param Event $event The event model.
|
||||||
* @return JsonResponse The response.
|
* @return JsonResponse The response.
|
||||||
*/
|
*/
|
||||||
public function storeAttachment(Request $request, Event $event)
|
public function storeAttachment(Request $request, Event $event): JsonResponse
|
||||||
{
|
{
|
||||||
if (EventConductor::updatable($event) === true) {
|
if (EventConductor::updatable($event) === true) {
|
||||||
if ($request->has("medium") === true && Media::find($request->medium) !== null) {
|
if ($request->has("medium") === true && Media::find($request->medium) !== null) {
|
||||||
@@ -155,9 +155,8 @@ class EventController extends ApiController
|
|||||||
*
|
*
|
||||||
* @param Request $request The user request.
|
* @param Request $request The user request.
|
||||||
* @param Event $event The related model.
|
* @param Event $event The related model.
|
||||||
* @return JsonResponse
|
|
||||||
*/
|
*/
|
||||||
public function updateAttachments(Request $request, Event $event)
|
public function updateAttachments(Request $request, Event $event): JsonResponse
|
||||||
{
|
{
|
||||||
if (EventConductor::updatable($event) === true) {
|
if (EventConductor::updatable($event) === true) {
|
||||||
$mediaIds = $request->attachments;
|
$mediaIds = $request->attachments;
|
||||||
@@ -203,9 +202,8 @@ class EventController extends ApiController
|
|||||||
* @param Request $request The user request.
|
* @param Request $request The user request.
|
||||||
* @param Event $event The model.
|
* @param Event $event The model.
|
||||||
* @param Media $medium The attachment medium.
|
* @param Media $medium The attachment medium.
|
||||||
* @return JsonResponse
|
|
||||||
*/
|
*/
|
||||||
public function deleteAttachment(Request $request, Event $event, Media $medium)
|
public function deleteAttachment(Request $request, Event $event, Media $medium): JsonResponse
|
||||||
{
|
{
|
||||||
if (EventConductor::updatable($event) === true) {
|
if (EventConductor::updatable($event) === true) {
|
||||||
$attachments = $event->attachments;
|
$attachments = $event->attachments;
|
||||||
|
|||||||
@@ -145,9 +145,8 @@ class UserController extends ApiController
|
|||||||
* Register a new user
|
* Register a new user
|
||||||
*
|
*
|
||||||
* @param \App\Http\Requests\UserRegisterRequest $request The register user request.
|
* @param \App\Http\Requests\UserRegisterRequest $request The register user request.
|
||||||
* @return \Illuminate\Http\Response
|
|
||||||
*/
|
*/
|
||||||
public function register(UserRegisterRequest $request)
|
public function register(UserRegisterRequest $request): JsonResponse
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$userData = $request->only([
|
$userData = $request->only([
|
||||||
@@ -286,9 +285,8 @@ class UserController extends ApiController
|
|||||||
* Resend a new verify email
|
* Resend a new verify email
|
||||||
*
|
*
|
||||||
* @param \App\Http\Requests\UserResendVerifyEmailRequest $request The resend verify email request.
|
* @param \App\Http\Requests\UserResendVerifyEmailRequest $request The resend verify email request.
|
||||||
* @return \Illuminate\Http\Response
|
|
||||||
*/
|
*/
|
||||||
public function resendVerifyEmail(UserResendVerifyEmailRequest $request)
|
public function resendVerifyEmail(UserResendVerifyEmailRequest $request): JsonResponse
|
||||||
{
|
{
|
||||||
UserCode::clearExpired();
|
UserCode::clearExpired();
|
||||||
|
|
||||||
@@ -340,9 +338,8 @@ class UserController extends ApiController
|
|||||||
*
|
*
|
||||||
* @param Request $request The http request.
|
* @param Request $request The http request.
|
||||||
* @param User $user The specified user.
|
* @param User $user The specified user.
|
||||||
* @return JsonResponse
|
|
||||||
*/
|
*/
|
||||||
public function eventList(Request $request, User $user)
|
public function eventList(Request $request, User $user): JsonResponse
|
||||||
{
|
{
|
||||||
if ($request->user() !== null && ($request->user() === $user || $request->user()->hasPermission('admin/events') === true)) {
|
if ($request->user() !== null && ($request->user() === $user || $request->user()->hasPermission('admin/events') === true)) {
|
||||||
$collection = $user->events;
|
$collection = $user->events;
|
||||||
|
|||||||
@@ -3,13 +3,11 @@
|
|||||||
namespace App\Http\Controllers;
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
|
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
|
||||||
use Illuminate\Foundation\Bus\DispatchesJobs;
|
|
||||||
use Illuminate\Foundation\Validation\ValidatesRequests;
|
use Illuminate\Foundation\Validation\ValidatesRequests;
|
||||||
use Illuminate\Routing\Controller as BaseController;
|
use Illuminate\Routing\Controller as BaseController;
|
||||||
|
|
||||||
class Controller extends BaseController
|
class Controller extends BaseController
|
||||||
{
|
{
|
||||||
use AuthorizesRequests;
|
use AuthorizesRequests;
|
||||||
use DispatchesJobs;
|
|
||||||
use ValidatesRequests;
|
use ValidatesRequests;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ class Kernel extends HttpKernel
|
|||||||
|
|
||||||
'api' => [
|
'api' => [
|
||||||
// \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
|
// \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
|
||||||
'throttle:api',
|
\Illuminate\Routing\Middleware\ThrottleRequests::class . ':api',
|
||||||
\Illuminate\Routing\Middleware\SubstituteBindings::class,
|
\Illuminate\Routing\Middleware\SubstituteBindings::class,
|
||||||
// \App\Http\Middleware\ForceJsonResponse::class,
|
// \App\Http\Middleware\ForceJsonResponse::class,
|
||||||
'useSanctumGuard',
|
'useSanctumGuard',
|
||||||
@@ -49,13 +49,13 @@ class Kernel extends HttpKernel
|
|||||||
];
|
];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The application's route middleware.
|
* The application's middleware aliases.
|
||||||
*
|
*
|
||||||
* These middleware may be assigned to groups or used individually.
|
* Aliases may be used to conveniently assign middleware to routes and groups.
|
||||||
*
|
*
|
||||||
* @var array<string, class-string|string>
|
* @var array<string, class-string|string>
|
||||||
*/
|
*/
|
||||||
protected $routeMiddleware = [
|
protected $middlewareAliases = [
|
||||||
'auth' => \App\Http\Middleware\Authenticate::class,
|
'auth' => \App\Http\Middleware\Authenticate::class,
|
||||||
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
|
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
|
||||||
'auth.session' => \Illuminate\Session\Middleware\AuthenticateSession::class,
|
'auth.session' => \Illuminate\Session\Middleware\AuthenticateSession::class,
|
||||||
|
|||||||
@@ -10,9 +10,8 @@ class Authenticate extends Middleware
|
|||||||
* Get the path the user should be redirected to when they are not authenticated.
|
* Get the path the user should be redirected to when they are not authenticated.
|
||||||
*
|
*
|
||||||
* @param mixed $request Request.
|
* @param mixed $request Request.
|
||||||
* @return string|null
|
|
||||||
*/
|
*/
|
||||||
protected function redirectTo(mixed $request)
|
protected function redirectTo(mixed $request): ?string
|
||||||
{
|
{
|
||||||
if ($request->expectsJson() === false) {
|
if ($request->expectsJson() === false) {
|
||||||
return route('login');
|
return route('login');
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
namespace App\Http\Middleware;
|
namespace App\Http\Middleware;
|
||||||
|
|
||||||
|
use Symfony\Component\HttpFoundation\Response;
|
||||||
use Closure;
|
use Closure;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
@@ -10,11 +11,9 @@ class ForceJsonResponse
|
|||||||
/**
|
/**
|
||||||
* Handle an incoming request.
|
* Handle an incoming request.
|
||||||
*
|
*
|
||||||
* @param \Illuminate\Http\Request $request
|
|
||||||
* @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next
|
* @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next
|
||||||
* @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
|
|
||||||
*/
|
*/
|
||||||
public function handle(Request $request, Closure $next)
|
public function handle(Request $request, Closure $next): Response
|
||||||
{
|
{
|
||||||
$request->headers->set('Accept', 'application/json');
|
$request->headers->set('Accept', 'application/json');
|
||||||
return $next($request);
|
return $next($request);
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
namespace App\Http\Middleware;
|
namespace App\Http\Middleware;
|
||||||
|
|
||||||
|
use Symfony\Component\HttpFoundation\Response;
|
||||||
use Closure;
|
use Closure;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use App\Models\Analytics;
|
use App\Models\Analytics;
|
||||||
@@ -11,11 +12,9 @@ class LogRequest
|
|||||||
/**
|
/**
|
||||||
* Handle an incoming request.
|
* Handle an incoming request.
|
||||||
*
|
*
|
||||||
* @param \Illuminate\Http\Request $request
|
|
||||||
* @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next
|
* @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next
|
||||||
* @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
|
|
||||||
*/
|
*/
|
||||||
public function handle(Request $request, Closure $next)
|
public function handle(Request $request, Closure $next): Response
|
||||||
{
|
{
|
||||||
// Make it an after middleware
|
// Make it an after middleware
|
||||||
$response = $next($request);
|
$response = $next($request);
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
namespace App\Http\Middleware;
|
namespace App\Http\Middleware;
|
||||||
|
|
||||||
|
use Symfony\Component\HttpFoundation\Response;
|
||||||
use App\Providers\RouteServiceProvider;
|
use App\Providers\RouteServiceProvider;
|
||||||
use Closure;
|
use Closure;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
@@ -12,12 +13,11 @@ class RedirectIfAuthenticated
|
|||||||
/**
|
/**
|
||||||
* Handle an incoming request.
|
* Handle an incoming request.
|
||||||
*
|
*
|
||||||
* @param Request $request Request.
|
* @param Request $request Request.
|
||||||
* @param Closure(Request): (Response|RedirectResponse) $next Next.
|
* @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next
|
||||||
* @param string|null ...$guards Guards.
|
* @param string|null ...$guards Guards.
|
||||||
* @return Response|RedirectResponse
|
|
||||||
*/
|
*/
|
||||||
public function handle(Request $request, Closure $next, ...$guards)
|
public function handle(Request $request, Closure $next, string ...$guards): Response
|
||||||
{
|
{
|
||||||
$guards = empty($guards) === true ? [null] : $guards;
|
$guards = empty($guards) === true ? [null] : $guards;
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ class TrustHosts extends Middleware
|
|||||||
*
|
*
|
||||||
* @return array<int, string|null>
|
* @return array<int, string|null>
|
||||||
*/
|
*/
|
||||||
public function hosts()
|
public function hosts(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
$this->allSubdomainsOfApplicationUrl(),
|
$this->allSubdomainsOfApplicationUrl(),
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
namespace App\Http\Middleware;
|
namespace App\Http\Middleware;
|
||||||
|
|
||||||
|
use Symfony\Component\HttpFoundation\Response;
|
||||||
use Closure;
|
use Closure;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\Auth;
|
use Illuminate\Support\Facades\Auth;
|
||||||
@@ -11,11 +12,9 @@ class UseSanctumGuard
|
|||||||
/**
|
/**
|
||||||
* Handle an incoming request.
|
* Handle an incoming request.
|
||||||
*
|
*
|
||||||
* @param \Illuminate\Http\Request $request
|
|
||||||
* @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next
|
* @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next
|
||||||
* @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
|
|
||||||
*/
|
*/
|
||||||
public function handle(Request $request, Closure $next)
|
public function handle(Request $request, Closure $next): Response
|
||||||
{
|
{
|
||||||
Auth::shouldUse('sanctum');
|
Auth::shouldUse('sanctum');
|
||||||
return $next($request);
|
return $next($request);
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ class AnalyticsRequest extends BaseRequest
|
|||||||
*
|
*
|
||||||
* @return array<string, mixed>
|
* @return array<string, mixed>
|
||||||
*/
|
*/
|
||||||
public function postRules()
|
public function postRules(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'type' => 'required|string',
|
'type' => 'required|string',
|
||||||
@@ -23,7 +23,7 @@ class AnalyticsRequest extends BaseRequest
|
|||||||
*
|
*
|
||||||
* @return array<string, mixed>
|
* @return array<string, mixed>
|
||||||
*/
|
*/
|
||||||
public function putRules()
|
public function putRules(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'type' => 'string',
|
'type' => 'string',
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ class ArticleRequest extends BaseRequest
|
|||||||
*
|
*
|
||||||
* @return array<string, mixed>
|
* @return array<string, mixed>
|
||||||
*/
|
*/
|
||||||
public function postRules()
|
public function postRules(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'slug' => 'required|string|min:6|unique:articles',
|
'slug' => 'required|string|min:6|unique:articles',
|
||||||
@@ -28,7 +28,7 @@ class ArticleRequest extends BaseRequest
|
|||||||
*
|
*
|
||||||
* @return array<string, mixed>
|
* @return array<string, mixed>
|
||||||
*/
|
*/
|
||||||
public function putRules()
|
public function putRules(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'slug' => [
|
'slug' => [
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ class AuthLoginRequest extends FormRequest
|
|||||||
*
|
*
|
||||||
* @return array<string, mixed>
|
* @return array<string, mixed>
|
||||||
*/
|
*/
|
||||||
public function rules()
|
public function rules(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'email' => 'required|string|min:6|max:255',
|
'email' => 'required|string|min:6|max:255',
|
||||||
|
|||||||
@@ -9,10 +9,8 @@ class BaseRequest extends FormRequest
|
|||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Determine if the user is authorized to make this request.
|
* Determine if the user is authorized to make this request.
|
||||||
*
|
|
||||||
* @return boolean
|
|
||||||
*/
|
*/
|
||||||
public function authorize()
|
public function authorize(): bool
|
||||||
{
|
{
|
||||||
if (request()->isMethod('post') === true && method_exists($this, 'postAuthorize') === true) {
|
if (request()->isMethod('post') === true && method_exists($this, 'postAuthorize') === true) {
|
||||||
return $this->postAuthorize();
|
return $this->postAuthorize();
|
||||||
@@ -30,7 +28,7 @@ class BaseRequest extends FormRequest
|
|||||||
*
|
*
|
||||||
* @return array<string, mixed>
|
* @return array<string, mixed>
|
||||||
*/
|
*/
|
||||||
public function rules()
|
public function rules(): array
|
||||||
{
|
{
|
||||||
$rules = [];
|
$rules = [];
|
||||||
|
|
||||||
@@ -54,9 +52,8 @@ class BaseRequest extends FormRequest
|
|||||||
*
|
*
|
||||||
* @param array $collection1 The first collection of rules.
|
* @param array $collection1 The first collection of rules.
|
||||||
* @param array $collection2 The second collection of rules to merge.
|
* @param array $collection2 The second collection of rules to merge.
|
||||||
* @return array
|
|
||||||
*/
|
*/
|
||||||
private function mergeRules(array $collection1, array $collection2)
|
private function mergeRules(array $collection1, array $collection2): array
|
||||||
{
|
{
|
||||||
$rules = [];
|
$rules = [];
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ class ContactSendRequest extends FormRequest
|
|||||||
*
|
*
|
||||||
* @return array<string, mixed>
|
* @return array<string, mixed>
|
||||||
*/
|
*/
|
||||||
public function rules()
|
public function rules(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'name' => 'required|max:255',
|
'name' => 'required|max:255',
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ class EventRequest extends BaseRequest
|
|||||||
*
|
*
|
||||||
* @return array<string, mixed>
|
* @return array<string, mixed>
|
||||||
*/
|
*/
|
||||||
public function baseRules()
|
public function baseRules(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'title' => 'min:6',
|
'title' => 'min:6',
|
||||||
@@ -42,7 +42,7 @@ class EventRequest extends BaseRequest
|
|||||||
*
|
*
|
||||||
* @return array<string, mixed>
|
* @return array<string, mixed>
|
||||||
*/
|
*/
|
||||||
protected function postRules()
|
protected function postRules(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'title' => 'required',
|
'title' => 'required',
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ class ShortlinkRequest extends BaseRequest
|
|||||||
*
|
*
|
||||||
* @return array<string, mixed>
|
* @return array<string, mixed>
|
||||||
*/
|
*/
|
||||||
public function postRules()
|
public function postRules(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'code' => 'required|string|max:255|min:2|unique:shortlinks',
|
'code' => 'required|string|max:255|min:2|unique:shortlinks',
|
||||||
@@ -24,7 +24,7 @@ class ShortlinkRequest extends BaseRequest
|
|||||||
*
|
*
|
||||||
* @return array<string, mixed>
|
* @return array<string, mixed>
|
||||||
*/
|
*/
|
||||||
public function putRules()
|
public function putRules(): array
|
||||||
{
|
{
|
||||||
$shortlink = $this->route('shortlink');
|
$shortlink = $this->route('shortlink');
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ class SubscriptionRequest extends BaseRequest
|
|||||||
*
|
*
|
||||||
* @return array<string, mixed>
|
* @return array<string, mixed>
|
||||||
*/
|
*/
|
||||||
public function postRules()
|
public function postRules(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'email' => 'required|email|unique:subscriptions',
|
'email' => 'required|email|unique:subscriptions',
|
||||||
@@ -24,7 +24,7 @@ class SubscriptionRequest extends BaseRequest
|
|||||||
*
|
*
|
||||||
* @return array<string, mixed>
|
* @return array<string, mixed>
|
||||||
*/
|
*/
|
||||||
public function destroyRules()
|
public function destroyRules(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'email' => 'required|email',
|
'email' => 'required|email',
|
||||||
@@ -34,10 +34,8 @@ class SubscriptionRequest extends BaseRequest
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the custom error messages.
|
* Get the custom error messages.
|
||||||
*
|
|
||||||
* @return array
|
|
||||||
*/
|
*/
|
||||||
public function messages()
|
public function messages(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'email.unique' => 'This email address has already subscribed',
|
'email.unique' => 'This email address has already subscribed',
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ class UserForgotPasswordRequest extends FormRequest
|
|||||||
*
|
*
|
||||||
* @return array<string, mixed>
|
* @return array<string, mixed>
|
||||||
*/
|
*/
|
||||||
public function rules()
|
public function rules(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'email' => 'required|exists:users,email',
|
'email' => 'required|exists:users,email',
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ class UserRegisterRequest extends FormRequest
|
|||||||
*
|
*
|
||||||
* @return array<string, mixed>
|
* @return array<string, mixed>
|
||||||
*/
|
*/
|
||||||
public function rules()
|
public function rules(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'display_name' => ['required','string','max:255', new Uniqueish('users')],
|
'display_name' => ['required','string','max:255', new Uniqueish('users')],
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ class UserRequest extends BaseRequest
|
|||||||
*
|
*
|
||||||
* @return array<string, mixed>
|
* @return array<string, mixed>
|
||||||
*/
|
*/
|
||||||
public function postRules()
|
public function postRules(): array
|
||||||
{
|
{
|
||||||
$user = auth()->user();
|
$user = auth()->user();
|
||||||
$isAdminUser = $user->hasPermission('admin/users');
|
$isAdminUser = $user->hasPermission('admin/users');
|
||||||
@@ -40,7 +40,7 @@ class UserRequest extends BaseRequest
|
|||||||
*
|
*
|
||||||
* @return array<string, mixed>
|
* @return array<string, mixed>
|
||||||
*/
|
*/
|
||||||
public function putRules()
|
public function putRules(): array
|
||||||
{
|
{
|
||||||
$user = auth()->user();
|
$user = auth()->user();
|
||||||
$ruleUser = $this->route('user');
|
$ruleUser = $this->route('user');
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ class UserResendVerifyEmailRequest extends FormRequest
|
|||||||
*
|
*
|
||||||
* @return array<string, mixed>
|
* @return array<string, mixed>
|
||||||
*/
|
*/
|
||||||
public function rules()
|
public function rules(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'email' => 'required|exists:users,email',
|
'email' => 'required|exists:users,email',
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ class UserResetPasswordRequest extends FormRequest
|
|||||||
*
|
*
|
||||||
* @return array<string, mixed>
|
* @return array<string, mixed>
|
||||||
*/
|
*/
|
||||||
public function rules()
|
public function rules(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'code' => 'required|digits:6',
|
'code' => 'required|digits:6',
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ class UserVerifyEmailRequest extends FormRequest
|
|||||||
*
|
*
|
||||||
* @return array<string, mixed>
|
* @return array<string, mixed>
|
||||||
*/
|
*/
|
||||||
public function rules()
|
public function rules(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'code' => 'required|digits:6',
|
'code' => 'required|digits:6',
|
||||||
|
|||||||
@@ -48,10 +48,8 @@ class MoveMediaJob implements ShouldQueue
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Execute the job.
|
* Execute the job.
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function handle()
|
public function handle(): void
|
||||||
{
|
{
|
||||||
// Don't continue if the media is already on the new storage disk
|
// Don't continue if the media is already on the new storage disk
|
||||||
if ($this->media->storage === $this->newStorage) {
|
if ($this->media->storage === $this->newStorage) {
|
||||||
|
|||||||
@@ -47,10 +47,8 @@ class SendEmailJob implements ShouldQueue
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Execute the job.
|
* Execute the job.
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function handle()
|
public function handle(): void
|
||||||
{
|
{
|
||||||
Mail::to($this->to)->send($this->mailable);
|
Mail::to($this->to)->send($this->mailable);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -62,10 +62,8 @@ class StoreUploadedFileJob implements ShouldQueue
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Execute the job.
|
* Execute the job.
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function handle()
|
public function handle(): void
|
||||||
{
|
{
|
||||||
$storageDisk = $this->media->storage;
|
$storageDisk = $this->media->storage;
|
||||||
$fileName = $this->media->name;
|
$fileName = $this->media->name;
|
||||||
|
|||||||
@@ -54,10 +54,8 @@ class ChangeEmailVerify extends Mailable
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the message envelope.
|
* Get the message envelope.
|
||||||
*
|
|
||||||
* @return \Illuminate\Mail\Mailables\Envelope
|
|
||||||
*/
|
*/
|
||||||
public function envelope()
|
public function envelope(): Envelope
|
||||||
{
|
{
|
||||||
return new Envelope(
|
return new Envelope(
|
||||||
subject: '👋🏻 Lets change your email!',
|
subject: '👋🏻 Lets change your email!',
|
||||||
@@ -66,10 +64,8 @@ class ChangeEmailVerify extends Mailable
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the message content definition.
|
* Get the message content definition.
|
||||||
*
|
|
||||||
* @return \Illuminate\Mail\Mailables\Content
|
|
||||||
*/
|
*/
|
||||||
public function content()
|
public function content(): Content
|
||||||
{
|
{
|
||||||
return new Content(
|
return new Content(
|
||||||
view: 'emails.user.change_email_verify',
|
view: 'emails.user.change_email_verify',
|
||||||
|
|||||||
@@ -54,10 +54,8 @@ class ChangedEmail extends Mailable
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the message envelope.
|
* Get the message envelope.
|
||||||
*
|
|
||||||
* @return \Illuminate\Mail\Mailables\Envelope
|
|
||||||
*/
|
*/
|
||||||
public function envelope()
|
public function envelope(): Envelope
|
||||||
{
|
{
|
||||||
return new Envelope(
|
return new Envelope(
|
||||||
subject: '👍 Your email has been changed!',
|
subject: '👍 Your email has been changed!',
|
||||||
@@ -66,10 +64,8 @@ class ChangedEmail extends Mailable
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the message content definition.
|
* Get the message content definition.
|
||||||
*
|
|
||||||
* @return \Illuminate\Mail\Mailables\Content
|
|
||||||
*/
|
*/
|
||||||
public function content()
|
public function content(): Content
|
||||||
{
|
{
|
||||||
return new Content(
|
return new Content(
|
||||||
view: 'emails.user.changed_email',
|
view: 'emails.user.changed_email',
|
||||||
|
|||||||
@@ -36,10 +36,8 @@ class ChangedPassword extends Mailable
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the message envelope.
|
* Get the message envelope.
|
||||||
*
|
|
||||||
* @return \Illuminate\Mail\Mailables\Envelope
|
|
||||||
*/
|
*/
|
||||||
public function envelope()
|
public function envelope(): Envelope
|
||||||
{
|
{
|
||||||
return new Envelope(
|
return new Envelope(
|
||||||
subject: '👍 Your password has been changed!',
|
subject: '👍 Your password has been changed!',
|
||||||
@@ -48,10 +46,8 @@ class ChangedPassword extends Mailable
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the message content definition.
|
* Get the message content definition.
|
||||||
*
|
|
||||||
* @return \Illuminate\Mail\Mailables\Content
|
|
||||||
*/
|
*/
|
||||||
public function content()
|
public function content(): Content
|
||||||
{
|
{
|
||||||
return new Content(
|
return new Content(
|
||||||
view: 'emails.user.changed_password',
|
view: 'emails.user.changed_password',
|
||||||
|
|||||||
@@ -53,10 +53,8 @@ class Contact extends Mailable
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the message envelope.
|
* Get the message envelope.
|
||||||
*
|
|
||||||
* @return \Illuminate\Mail\Mailables\Envelope
|
|
||||||
*/
|
*/
|
||||||
public function envelope()
|
public function envelope(): Envelope
|
||||||
{
|
{
|
||||||
return new Envelope(
|
return new Envelope(
|
||||||
subject: config('contact.contact_subject'),
|
subject: config('contact.contact_subject'),
|
||||||
@@ -65,10 +63,8 @@ class Contact extends Mailable
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the message content definition.
|
* Get the message content definition.
|
||||||
*
|
|
||||||
* @return \Illuminate\Mail\Mailables\Content
|
|
||||||
*/
|
*/
|
||||||
public function content()
|
public function content(): Content
|
||||||
{
|
{
|
||||||
return new Content(
|
return new Content(
|
||||||
view: 'emails.user.contact',
|
view: 'emails.user.contact',
|
||||||
|
|||||||
@@ -45,10 +45,8 @@ class EmailVerify extends Mailable
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the message envelope.
|
* Get the message envelope.
|
||||||
*
|
|
||||||
* @return \Illuminate\Mail\Mailables\Envelope
|
|
||||||
*/
|
*/
|
||||||
public function envelope()
|
public function envelope(): Envelope
|
||||||
{
|
{
|
||||||
return new Envelope(
|
return new Envelope(
|
||||||
subject: '👋🏻 Welcome to STEMMechanics!',
|
subject: '👋🏻 Welcome to STEMMechanics!',
|
||||||
@@ -57,10 +55,8 @@ class EmailVerify extends Mailable
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the message content definition.
|
* Get the message content definition.
|
||||||
*
|
|
||||||
* @return \Illuminate\Mail\Mailables\Content
|
|
||||||
*/
|
*/
|
||||||
public function content()
|
public function content(): Content
|
||||||
{
|
{
|
||||||
return new Content(
|
return new Content(
|
||||||
view: 'emails.user.email_verify',
|
view: 'emails.user.email_verify',
|
||||||
|
|||||||
@@ -45,10 +45,8 @@ class ForgotPassword extends Mailable
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the message envelope.
|
* Get the message envelope.
|
||||||
*
|
|
||||||
* @return \Illuminate\Mail\Mailables\Envelope
|
|
||||||
*/
|
*/
|
||||||
public function envelope()
|
public function envelope(): Envelope
|
||||||
{
|
{
|
||||||
return new Envelope(
|
return new Envelope(
|
||||||
subject: '🤦 Forgot your password?',
|
subject: '🤦 Forgot your password?',
|
||||||
@@ -57,10 +55,8 @@ class ForgotPassword extends Mailable
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the message content definition.
|
* Get the message content definition.
|
||||||
*
|
|
||||||
* @return \Illuminate\Mail\Mailables\Content
|
|
||||||
*/
|
*/
|
||||||
public function content()
|
public function content(): Content
|
||||||
{
|
{
|
||||||
return new Content(
|
return new Content(
|
||||||
view: 'emails.user.forgot_password',
|
view: 'emails.user.forgot_password',
|
||||||
|
|||||||
@@ -36,10 +36,8 @@ class SubscriptionConfirm extends Mailable
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the message envelope.
|
* Get the message envelope.
|
||||||
*
|
|
||||||
* @return \Illuminate\Mail\Mailables\Envelope
|
|
||||||
*/
|
*/
|
||||||
public function envelope()
|
public function envelope(): Envelope
|
||||||
{
|
{
|
||||||
return new Envelope(
|
return new Envelope(
|
||||||
subject: '🗞️ You\'re on the mailing list!',
|
subject: '🗞️ You\'re on the mailing list!',
|
||||||
@@ -48,10 +46,8 @@ class SubscriptionConfirm extends Mailable
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the message content definition.
|
* Get the message content definition.
|
||||||
*
|
|
||||||
* @return \Illuminate\Mail\Mailables\Content
|
|
||||||
*/
|
*/
|
||||||
public function content()
|
public function content(): Content
|
||||||
{
|
{
|
||||||
return new Content(
|
return new Content(
|
||||||
view: 'emails.user.subscription_confirm',
|
view: 'emails.user.subscription_confirm',
|
||||||
|
|||||||
@@ -36,10 +36,8 @@ class SubscriptionUnsubscribed extends Mailable
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the message envelope.
|
* Get the message envelope.
|
||||||
*
|
|
||||||
* @return \Illuminate\Mail\Mailables\Envelope
|
|
||||||
*/
|
*/
|
||||||
public function envelope()
|
public function envelope(): Envelope
|
||||||
{
|
{
|
||||||
return new Envelope(
|
return new Envelope(
|
||||||
subject: 'You have been unsubscribed',
|
subject: 'You have been unsubscribed',
|
||||||
@@ -48,10 +46,8 @@ class SubscriptionUnsubscribed extends Mailable
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the message content definition.
|
* Get the message content definition.
|
||||||
*
|
|
||||||
* @return \Illuminate\Mail\Mailables\Content
|
|
||||||
*/
|
*/
|
||||||
public function content()
|
public function content(): Content
|
||||||
{
|
{
|
||||||
return new Content(
|
return new Content(
|
||||||
view: 'emails.user.subscription_unsubscribed',
|
view: 'emails.user.subscription_unsubscribed',
|
||||||
|
|||||||
@@ -22,9 +22,8 @@ class Analytics extends Model
|
|||||||
* automatically assigning a session value based on previous rows.
|
* automatically assigning a session value based on previous rows.
|
||||||
*
|
*
|
||||||
* @param array $attributes Model attributes.
|
* @param array $attributes Model attributes.
|
||||||
* @return static
|
|
||||||
*/
|
*/
|
||||||
public static function createWithSession(array $attributes)
|
public static function createWithSession(array $attributes): static
|
||||||
{
|
{
|
||||||
$previousRow = self::where('useragent', $attributes['useragent'])
|
$previousRow = self::where('useragent', $attributes['useragent'])
|
||||||
->where('ip', $attributes['ip'])
|
->where('ip', $attributes['ip'])
|
||||||
|
|||||||
@@ -29,21 +29,17 @@ class Article extends Model
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the article user
|
* Get the article user
|
||||||
*
|
|
||||||
* @return BelongsTo
|
|
||||||
*/
|
*/
|
||||||
public function user()
|
public function user(): BelongsTo
|
||||||
{
|
{
|
||||||
return $this->belongsTo(User::class);
|
return $this->belongsTo(User::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get all of the article's attachments.
|
* Get all of the article's attachments.
|
||||||
*
|
|
||||||
* @return MorphMany
|
|
||||||
*/
|
*/
|
||||||
public function attachments()
|
public function attachments(): MorphMany
|
||||||
{
|
{
|
||||||
return $this->morphMany('App\Models\Attachment', 'attachable');
|
return $this->morphMany(\App\Models\Attachment::class, 'attachable');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,20 +33,16 @@ class Attachment extends Model
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get attachments attachable
|
* Get attachments attachable
|
||||||
*
|
|
||||||
* @return MorphTo
|
|
||||||
*/
|
*/
|
||||||
public function attachable()
|
public function attachable(): MorphTo
|
||||||
{
|
{
|
||||||
return $this->morphTo();
|
return $this->morphTo();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the media for this attachment.
|
* Get the media for this attachment.
|
||||||
*
|
|
||||||
* @return BelongsTo
|
|
||||||
*/
|
*/
|
||||||
public function media()
|
public function media(): BelongsTo
|
||||||
{
|
{
|
||||||
return $this->belongsTo(Media::class);
|
return $this->belongsTo(Media::class);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,20 +38,16 @@ class Event extends Model
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get all of the article's attachments.
|
* Get all of the article's attachments.
|
||||||
*
|
|
||||||
* @return MorphMany
|
|
||||||
*/
|
*/
|
||||||
public function attachments()
|
public function attachments(): MorphMany
|
||||||
{
|
{
|
||||||
return $this->morphMany('App\Models\Attachment', 'attachable');
|
return $this->morphMany(\App\Models\Attachment::class, 'attachable');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get all the associated users.
|
* Get all the associated users.
|
||||||
*
|
|
||||||
* @return BelongsToMany
|
|
||||||
*/
|
*/
|
||||||
public function users()
|
public function users(): BelongsToMany
|
||||||
{
|
{
|
||||||
return $this->belongsToMany(User::class, 'event_user', 'event_id', 'user_id');
|
return $this->belongsToMany(User::class, 'event_user', 'event_id', 'user_id');
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,20 +24,16 @@ class EventUser extends Model
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the event for this attachment.
|
* Get the event for this attachment.
|
||||||
*
|
|
||||||
* @return BelongsTo
|
|
||||||
*/
|
*/
|
||||||
public function event()
|
public function event(): BelongsTo
|
||||||
{
|
{
|
||||||
return $this->belongsTo(Event::class);
|
return $this->belongsTo(Event::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the user for this attachment.
|
* Get the user for this attachment.
|
||||||
*
|
|
||||||
* @return BelongsTo
|
|
||||||
*/
|
*/
|
||||||
public function user()
|
public function user(): BelongsTo
|
||||||
{
|
{
|
||||||
return $this->belongsTo(User::class);
|
return $this->belongsTo(User::class);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -100,10 +100,8 @@ class Media extends Model
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Model Boot
|
* Model Boot
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
protected static function boot()
|
protected static function boot(): void
|
||||||
{
|
{
|
||||||
parent::boot();
|
parent::boot();
|
||||||
|
|
||||||
@@ -136,7 +134,7 @@ class Media extends Model
|
|||||||
* @param string $type The variant type to get.
|
* @param string $type The variant type to get.
|
||||||
* @return array The variant data.
|
* @return array The variant data.
|
||||||
*/
|
*/
|
||||||
public static function getTypeVariants(string $type)
|
public static function getTypeVariants(string $type): array
|
||||||
{
|
{
|
||||||
if (isset(self::$variantTypes[$type]) === true) {
|
if (isset(self::$variantTypes[$type]) === true) {
|
||||||
return self::$variantTypes[$type];
|
return self::$variantTypes[$type];
|
||||||
@@ -151,7 +149,7 @@ class Media extends Model
|
|||||||
* @param mixed $value The value to mutate.
|
* @param mixed $value The value to mutate.
|
||||||
* @return array The mutated value.
|
* @return array The mutated value.
|
||||||
*/
|
*/
|
||||||
public function getVariantsAttribute(mixed $value)
|
public function getVariantsAttribute(mixed $value): array
|
||||||
{
|
{
|
||||||
if (is_string($value) === true) {
|
if (is_string($value) === true) {
|
||||||
return json_decode($value, true);
|
return json_decode($value, true);
|
||||||
@@ -164,9 +162,8 @@ class Media extends Model
|
|||||||
* Variants Set Mutator.
|
* Variants Set Mutator.
|
||||||
*
|
*
|
||||||
* @param mixed $value The value to mutate.
|
* @param mixed $value The value to mutate.
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function setVariantsAttribute(mixed $value)
|
public function setVariantsAttribute(mixed $value): void
|
||||||
{
|
{
|
||||||
if (is_array($value) !== true) {
|
if (is_array($value) !== true) {
|
||||||
$value = [];
|
$value = [];
|
||||||
@@ -182,7 +179,7 @@ class Media extends Model
|
|||||||
* @param string $variant The initial variant.
|
* @param string $variant The initial variant.
|
||||||
* @return string The previous variant name (or '').
|
* @return string The previous variant name (or '').
|
||||||
*/
|
*/
|
||||||
public function getPreviousVariant(string $type, string $variant)
|
public function getPreviousVariant(string $type, string $variant): string
|
||||||
{
|
{
|
||||||
if (isset(self::$variantTypes[$type]) === false) {
|
if (isset(self::$variantTypes[$type]) === false) {
|
||||||
return '';
|
return '';
|
||||||
@@ -206,7 +203,7 @@ class Media extends Model
|
|||||||
* @param string $variant The initial variant.
|
* @param string $variant The initial variant.
|
||||||
* @return string The next variant name (or '').
|
* @return string The next variant name (or '').
|
||||||
*/
|
*/
|
||||||
public function getNextVariant(string $type, string $variant)
|
public function getNextVariant(string $type, string $variant): string
|
||||||
{
|
{
|
||||||
if (isset(self::$variantTypes[$type]) === false) {
|
if (isset(self::$variantTypes[$type]) === false) {
|
||||||
return '';
|
return '';
|
||||||
@@ -230,7 +227,7 @@ class Media extends Model
|
|||||||
* @param boolean $returnNearest Return the nearest variant if request is not found.
|
* @param boolean $returnNearest Return the nearest variant if request is not found.
|
||||||
* @return string The URL.
|
* @return string The URL.
|
||||||
*/
|
*/
|
||||||
public function getVariantURL(string $variant, bool $returnNearest = true)
|
public function getVariantURL(string $variant, bool $returnNearest = true): string
|
||||||
{
|
{
|
||||||
$variants = $this->variants;
|
$variants = $this->variants;
|
||||||
if (isset($variants[$variant]) === true) {
|
if (isset($variants[$variant]) === true) {
|
||||||
@@ -256,10 +253,8 @@ class Media extends Model
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Delete file and associated files with the modal.
|
* Delete file and associated files with the modal.
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function deleteFile()
|
public function deleteFile(): void
|
||||||
{
|
{
|
||||||
$fileName = $this->name;
|
$fileName = $this->name;
|
||||||
$baseName = pathinfo($fileName, PATHINFO_FILENAME);
|
$baseName = pathinfo($fileName, PATHINFO_FILENAME);
|
||||||
@@ -279,10 +274,9 @@ class Media extends Model
|
|||||||
/**
|
/**
|
||||||
* Invalidate Cloudflare Cache.
|
* Invalidate Cloudflare Cache.
|
||||||
*
|
*
|
||||||
* @return void
|
|
||||||
* @throws InvalidArgumentException Exception.
|
* @throws InvalidArgumentException Exception.
|
||||||
*/
|
*/
|
||||||
private function invalidateCFCache()
|
private function invalidateCFCache(): void
|
||||||
{
|
{
|
||||||
$zone_id = env("CLOUDFLARE_ZONE_ID");
|
$zone_id = env("CLOUDFLARE_ZONE_ID");
|
||||||
$api_key = env("CLOUDFLARE_API_KEY");
|
$api_key = env("CLOUDFLARE_API_KEY");
|
||||||
@@ -311,10 +305,8 @@ class Media extends Model
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get URL path
|
* Get URL path
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function getUrlPath()
|
public function getUrlPath(): string
|
||||||
{
|
{
|
||||||
$url = config("filesystems.disks.$this->storage.url");
|
$url = config("filesystems.disks.$this->storage.url");
|
||||||
return "$url/";
|
return "$url/";
|
||||||
@@ -322,10 +314,8 @@ class Media extends Model
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the file URL
|
* Return the file URL
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function getUrlAttribute()
|
public function getUrlAttribute(): string
|
||||||
{
|
{
|
||||||
if (isset($this->attributes['name']) === true) {
|
if (isset($this->attributes['name']) === true) {
|
||||||
return self::getUrlPath() . $this->name;
|
return self::getUrlPath() . $this->name;
|
||||||
@@ -336,10 +326,8 @@ class Media extends Model
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the file owner
|
* Return the file owner
|
||||||
*
|
|
||||||
* @return BelongsTo
|
|
||||||
*/
|
*/
|
||||||
public function user()
|
public function user(): BelongsTo
|
||||||
{
|
{
|
||||||
return $this->belongsTo(User::class);
|
return $this->belongsTo(User::class);
|
||||||
}
|
}
|
||||||
@@ -348,9 +336,8 @@ class Media extends Model
|
|||||||
* Move files to new storage device.
|
* Move files to new storage device.
|
||||||
*
|
*
|
||||||
* @param string $storage The storage ID to move to.
|
* @param string $storage The storage ID to move to.
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function moveToStorage(string $storage)
|
public function moveToStorage(string $storage): void
|
||||||
{
|
{
|
||||||
if ($storage !== $this->storage && Config::has("filesystems.disks.$storage") === true) {
|
if ($storage !== $this->storage && Config::has("filesystems.disks.$storage") === true) {
|
||||||
$this->status = "Processing media";
|
$this->status = "Processing media";
|
||||||
@@ -366,7 +353,7 @@ class Media extends Model
|
|||||||
* @param Illuminate\Http\UploadedFile $file The file.
|
* @param Illuminate\Http\UploadedFile $file The file.
|
||||||
* @return null|Media The result or null if not successful.
|
* @return null|Media The result or null if not successful.
|
||||||
*/
|
*/
|
||||||
public static function createFromUploadedFile(Request $request, UploadedFile $file)
|
public static function createFromUploadedFile(Request $request, UploadedFile $file): ?Media
|
||||||
{
|
{
|
||||||
$request->merge([
|
$request->merge([
|
||||||
'title' => $request->get('title', ''),
|
'title' => $request->get('title', ''),
|
||||||
@@ -401,7 +388,7 @@ class Media extends Model
|
|||||||
* @param Illuminate\Http\UploadedFile $file The file.
|
* @param Illuminate\Http\UploadedFile $file The file.
|
||||||
* @return null|Media The media item.
|
* @return null|Media The media item.
|
||||||
*/
|
*/
|
||||||
public function updateWithUploadedFile(UploadedFile $file)
|
public function updateWithUploadedFile(UploadedFile $file): ?Media
|
||||||
{
|
{
|
||||||
if ($file === null || $file->isValid() !== true) {
|
if ($file === null || $file->isValid() !== true) {
|
||||||
throw new \Exception('The file is invalid.', self::INVALID_FILE_ERROR);
|
throw new \Exception('The file is invalid.', self::INVALID_FILE_ERROR);
|
||||||
@@ -494,10 +481,8 @@ class Media extends Model
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the server maximum upload size
|
* Get the server maximum upload size
|
||||||
*
|
|
||||||
* @return integer
|
|
||||||
*/
|
*/
|
||||||
public static function getMaxUploadSize()
|
public static function getMaxUploadSize(): int
|
||||||
{
|
{
|
||||||
$sizes = [
|
$sizes = [
|
||||||
ini_get('upload_max_filesize'),
|
ini_get('upload_max_filesize'),
|
||||||
@@ -561,7 +546,7 @@ class Media extends Model
|
|||||||
* @param boolean $ignoreCache Ignore the file list cache.
|
* @param boolean $ignoreCache Ignore the file list cache.
|
||||||
* @return boolean If the file exists on any storage disks.
|
* @return boolean If the file exists on any storage disks.
|
||||||
*/
|
*/
|
||||||
public static function fileExistsInStorage(string $fileName, bool $ignoreCache = false)
|
public static function fileExistsInStorage(string $fileName, bool $ignoreCache = false): bool
|
||||||
{
|
{
|
||||||
$disks = array_keys(Config::get('filesystems.disks'));
|
$disks = array_keys(Config::get('filesystems.disks'));
|
||||||
|
|
||||||
@@ -608,7 +593,7 @@ class Media extends Model
|
|||||||
* @param string $fileName The file name to test.
|
* @param string $fileName The file name to test.
|
||||||
* @return boolean If the file name contains the special suffix.
|
* @return boolean If the file name contains the special suffix.
|
||||||
*/
|
*/
|
||||||
public static function fileNameHasSuffix(string $fileName)
|
public static function fileNameHasSuffix(string $fileName): bool
|
||||||
{
|
{
|
||||||
$suffix = '/(-\d+x\d+|-scaled)$/i';
|
$suffix = '/(-\d+x\d+|-scaled)$/i';
|
||||||
$fileNameWithoutExtension = pathinfo($fileName, PATHINFO_FILENAME);
|
$fileNameWithoutExtension = pathinfo($fileName, PATHINFO_FILENAME);
|
||||||
@@ -620,9 +605,8 @@ class Media extends Model
|
|||||||
* Sanitize fileName for upload
|
* Sanitize fileName for upload
|
||||||
*
|
*
|
||||||
* @param string $fileName Filename to sanitize.
|
* @param string $fileName Filename to sanitize.
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
private static function sanitizeFilename(string $fileName)
|
private static function sanitizeFilename(string $fileName): string
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
# file system reserved https://en.wikipedia.org/wiki/Filename#Reserved_characters_and_words
|
# file system reserved https://en.wikipedia.org/wiki/Filename#Reserved_characters_and_words
|
||||||
|
|||||||
@@ -24,10 +24,8 @@ class Permission extends Model
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the User associated with this model
|
* Get the User associated with this model
|
||||||
*
|
|
||||||
* @return BelongsTo
|
|
||||||
*/
|
*/
|
||||||
public function user()
|
public function user(): BelongsTo
|
||||||
{
|
{
|
||||||
return $this->belongsTo(User::class);
|
return $this->belongsTo(User::class);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -79,20 +79,16 @@ class User extends Authenticatable implements Auditable
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the list of files of the user
|
* Get the list of files of the user
|
||||||
*
|
|
||||||
* @return HasMany
|
|
||||||
*/
|
*/
|
||||||
public function permissions()
|
public function permissions(): HasMany
|
||||||
{
|
{
|
||||||
return $this->hasMany(Permission::class);
|
return $this->hasMany(Permission::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the permission attribute
|
* Get the permission attribute
|
||||||
*
|
|
||||||
* @return array
|
|
||||||
*/
|
*/
|
||||||
public function getPermissionsAttribute()
|
public function getPermissionsAttribute(): array
|
||||||
{
|
{
|
||||||
return $this->permissions()->pluck('permission')->toArray();
|
return $this->permissions()->pluck('permission')->toArray();
|
||||||
}
|
}
|
||||||
@@ -101,9 +97,8 @@ class User extends Authenticatable implements Auditable
|
|||||||
* Test if user has permission
|
* Test if user has permission
|
||||||
*
|
*
|
||||||
* @param string $permission Permission to test.
|
* @param string $permission Permission to test.
|
||||||
* @return boolean
|
|
||||||
*/
|
*/
|
||||||
public function hasPermission(string $permission)
|
public function hasPermission(string $permission): bool
|
||||||
{
|
{
|
||||||
return ($this->permissions()->where('permission', $permission)->first() !== null);
|
return ($this->permissions()->where('permission', $permission)->first() !== null);
|
||||||
}
|
}
|
||||||
@@ -112,9 +107,8 @@ class User extends Authenticatable implements Auditable
|
|||||||
* Give permissions to the user
|
* Give permissions to the user
|
||||||
*
|
*
|
||||||
* @param string|array $permissions The permission(s) to give.
|
* @param string|array $permissions The permission(s) to give.
|
||||||
* @return Collection
|
|
||||||
*/
|
*/
|
||||||
public function givePermission($permissions)
|
public function givePermission($permissions): Collection
|
||||||
{
|
{
|
||||||
if (is_array($permissions) === false) {
|
if (is_array($permissions) === false) {
|
||||||
$permissions = [$permissions];
|
$permissions = [$permissions];
|
||||||
@@ -137,9 +131,8 @@ class User extends Authenticatable implements Auditable
|
|||||||
* Revoke permissions from the user
|
* Revoke permissions from the user
|
||||||
*
|
*
|
||||||
* @param string|array $permissions The permission(s) to revoke.
|
* @param string|array $permissions The permission(s) to revoke.
|
||||||
* @return integer
|
|
||||||
*/
|
*/
|
||||||
public function revokePermission($permissions)
|
public function revokePermission($permissions): int
|
||||||
{
|
{
|
||||||
if (is_array($permissions) === false) {
|
if (is_array($permissions) === false) {
|
||||||
$permissions = [$permissions];
|
$permissions = [$permissions];
|
||||||
@@ -152,50 +145,40 @@ class User extends Authenticatable implements Auditable
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the list of files of the user
|
* Get the list of files of the user
|
||||||
*
|
|
||||||
* @return HasMany
|
|
||||||
*/
|
*/
|
||||||
public function media()
|
public function media(): HasMany
|
||||||
{
|
{
|
||||||
return $this->hasMany(Media::class);
|
return $this->hasMany(Media::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the list of files of the user
|
* Get the list of files of the user
|
||||||
*
|
|
||||||
* @return HasMany
|
|
||||||
*/
|
*/
|
||||||
public function articles()
|
public function articles(): HasMany
|
||||||
{
|
{
|
||||||
return $this->hasMany(Article::class);
|
return $this->hasMany(Article::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get associated user codes
|
* Get associated user codes
|
||||||
*
|
|
||||||
* @return HasMany
|
|
||||||
*/
|
*/
|
||||||
public function codes()
|
public function codes(): HasMany
|
||||||
{
|
{
|
||||||
return $this->hasMany(UserCode::class);
|
return $this->hasMany(UserCode::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the list of logins of the user
|
* Get the list of logins of the user
|
||||||
*
|
|
||||||
* @return HasMany
|
|
||||||
*/
|
*/
|
||||||
public function logins()
|
public function logins(): HasMany
|
||||||
{
|
{
|
||||||
return $this->hasMany(UserLogins::class);
|
return $this->hasMany(UserLogins::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the events associated with the user.
|
* Get the events associated with the user.
|
||||||
*
|
|
||||||
* @return BelongsToMany
|
|
||||||
*/
|
*/
|
||||||
public function events()
|
public function events(): BelongsToMany
|
||||||
{
|
{
|
||||||
return $this->belongsToMany(Event::class, 'event_user', 'user_id', 'event_id');
|
return $this->belongsToMany(Event::class, 'event_user', 'user_id', 'event_id');
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,10 +23,8 @@ class UserCode extends Model
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Boot function from Laravel.
|
* Boot function from Laravel.
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
protected static function boot()
|
protected static function boot(): void
|
||||||
{
|
{
|
||||||
parent::boot();
|
parent::boot();
|
||||||
static::creating(function ($model) {
|
static::creating(function ($model) {
|
||||||
@@ -46,10 +44,8 @@ class UserCode extends Model
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Generate new code
|
* Generate new code
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function regenerate()
|
public function regenerate(): void
|
||||||
{
|
{
|
||||||
while (true) {
|
while (true) {
|
||||||
$code = random_int(100000, 999999);
|
$code = random_int(100000, 999999);
|
||||||
@@ -62,20 +58,16 @@ class UserCode extends Model
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Clear expired user codes
|
* Clear expired user codes
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public static function clearExpired()
|
public static function clearExpired(): void
|
||||||
{
|
{
|
||||||
UserCode::where('updated_at', '<=', now()->subDays(5))->delete();
|
UserCode::where('updated_at', '<=', now()->subDays(5))->delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get associated user
|
* Get associated user
|
||||||
*
|
|
||||||
* @return BelongsTo
|
|
||||||
*/
|
*/
|
||||||
public function user()
|
public function user(): BelongsTo
|
||||||
{
|
{
|
||||||
return $this->belongsTo(User::class);
|
return $this->belongsTo(User::class);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,10 +28,8 @@ class UserLogins extends Model
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the file user
|
* Get the file user
|
||||||
*
|
|
||||||
* @return BelongsTo
|
|
||||||
*/
|
*/
|
||||||
public function user()
|
public function user(): BelongsTo
|
||||||
{
|
{
|
||||||
return $this->belongsTo(User::class);
|
return $this->belongsTo(User::class);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,20 +16,16 @@ class AppServiceProvider extends ServiceProvider
|
|||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Register any application services.
|
* Register any application services.
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function register()
|
public function register(): void
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Bootstrap any application services.
|
* Bootstrap any application services.
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function boot()
|
public function boot(): void
|
||||||
{
|
{
|
||||||
Storage::macro('public', function ($diskName) {
|
Storage::macro('public', function ($diskName) {
|
||||||
$public = config("filesystems.disks.{$diskName}.public", false);
|
$public = config("filesystems.disks.{$diskName}.public", false);
|
||||||
|
|||||||
@@ -19,13 +19,9 @@ class AuthServiceProvider extends ServiceProvider
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Register any authentication / authorization services.
|
* Register any authentication / authorization services.
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function boot()
|
public function boot(): void
|
||||||
{
|
{
|
||||||
$this->registerPolicies();
|
|
||||||
|
|
||||||
//
|
//
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,10 +9,8 @@ class BroadcastServiceProvider extends ServiceProvider
|
|||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Bootstrap any application services.
|
* Bootstrap any application services.
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function boot()
|
public function boot(): void
|
||||||
{
|
{
|
||||||
Broadcast::routes();
|
Broadcast::routes();
|
||||||
|
|
||||||
|
|||||||
@@ -26,20 +26,16 @@ class EventServiceProvider extends ServiceProvider
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Register any events for your application.
|
* Register any events for your application.
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function boot()
|
public function boot(): void
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Determine if events and listeners should be automatically discovered.
|
* Determine if events and listeners should be automatically discovered.
|
||||||
*
|
|
||||||
* @return boolean
|
|
||||||
*/
|
*/
|
||||||
public function shouldDiscoverEvents()
|
public function shouldDiscoverEvents(): bool
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,12 +23,32 @@ class RouteServiceProvider extends ServiceProvider
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Define your route model bindings, pattern filters, and other route configuration.
|
* Define your route model bindings, pattern filters, and other route configuration.
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function boot()
|
public function boot(): void
|
||||||
{
|
{
|
||||||
$this->configureRateLimiting();
|
// RateLimiter::for('api', function (Request $request) {
|
||||||
|
// return Limit::perMinute(60)->by($request->user()?->id !== null ?: $request->ip());
|
||||||
|
// });
|
||||||
|
|
||||||
|
$rateLimitEnabled = true;
|
||||||
|
$user = auth()->user();
|
||||||
|
|
||||||
|
if (app()->environment('testing')) {
|
||||||
|
$rateLimitEnabled = false;
|
||||||
|
} elseif ($user !== null && $user->hasPermission('admin/ratelimit') === true) {
|
||||||
|
// Admin users with the "admin/ratelimit" permission are not rate limited
|
||||||
|
$rateLimitEnabled = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($rateLimitEnabled === true) {
|
||||||
|
RateLimiter::for('api', function (Request $request) {
|
||||||
|
return Limit::perMinute(180)->by($request->user()?->id ?: $request->ip());
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
RateLimiter::for('api', function () {
|
||||||
|
return Limit::none();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
$this->routes(function () {
|
$this->routes(function () {
|
||||||
Route::middleware('api')
|
Route::middleware('api')
|
||||||
@@ -55,36 +75,4 @@ class RouteServiceProvider extends ServiceProvider
|
|||||||
->name("{{$singularUri}}.attachments.destroy");
|
->name("{{$singularUri}}.attachments.destroy");
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Configure the rate limiters for the application.
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
protected function configureRateLimiting()
|
|
||||||
{
|
|
||||||
// RateLimiter::for('api', function (Request $request) {
|
|
||||||
// return Limit::perMinute(60)->by($request->user()?->id !== null ?: $request->ip());
|
|
||||||
// });
|
|
||||||
|
|
||||||
$rateLimitEnabled = true;
|
|
||||||
$user = auth()->user();
|
|
||||||
|
|
||||||
if (app()->environment('testing')) {
|
|
||||||
$rateLimitEnabled = false;
|
|
||||||
} elseif ($user !== null && $user->hasPermission('admin/ratelimit') === true) {
|
|
||||||
// Admin users with the "admin/ratelimit" permission are not rate limited
|
|
||||||
$rateLimitEnabled = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($rateLimitEnabled === true) {
|
|
||||||
RateLimiter::for('api', function (Request $request) {
|
|
||||||
return Limit::perMinute(180)->by($request->user()?->id ?: $request->ip());
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
RateLimiter::for('api', function () {
|
|
||||||
return Limit::none();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,9 +22,8 @@ class Recaptcha implements Rule
|
|||||||
*
|
*
|
||||||
* @param mixed $attribute Attribute name.
|
* @param mixed $attribute Attribute name.
|
||||||
* @param mixed $value Attribute value.
|
* @param mixed $value Attribute value.
|
||||||
* @return boolean
|
|
||||||
*/
|
*/
|
||||||
public function passes(mixed $attribute, mixed $value)
|
public function passes(mixed $attribute, mixed $value): bool
|
||||||
{
|
{
|
||||||
$endpoint = config('services.google_recaptcha');
|
$endpoint = config('services.google_recaptcha');
|
||||||
|
|
||||||
@@ -42,10 +41,8 @@ class Recaptcha implements Rule
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the validation error message.
|
* Get the validation error message.
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function message()
|
public function message(): string
|
||||||
{
|
{
|
||||||
return 'Captcha failed. Refresh the page and try again';
|
return 'Captcha failed. Refresh the page and try again';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,21 +20,17 @@ class UniqueFileName implements Rule
|
|||||||
/**
|
/**
|
||||||
* Determine if the validation rule passes.
|
* Determine if the validation rule passes.
|
||||||
*
|
*
|
||||||
* @param string $attribute
|
* @param mixed $value
|
||||||
* @param mixed $value
|
|
||||||
* @return boolean
|
|
||||||
*/
|
*/
|
||||||
public function passes($attribute, $value)
|
public function passes(string $attribute, $value): bool
|
||||||
{
|
{
|
||||||
return (Media::fileExists($value) === false);
|
return (Media::fileExists($value) === false);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the validation error message.
|
* Get the validation error message.
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function message()
|
public function message(): string
|
||||||
{
|
{
|
||||||
return 'The file name already exists.';
|
return 'The file name already exists.';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -47,9 +47,8 @@ class Uniqueish implements Rule
|
|||||||
* Set the ID of the record to be ignored.
|
* Set the ID of the record to be ignored.
|
||||||
*
|
*
|
||||||
* @param mixed $id The ID to ignore.
|
* @param mixed $id The ID to ignore.
|
||||||
* @return $this
|
|
||||||
*/
|
*/
|
||||||
public function ignore(mixed $id)
|
public function ignore(mixed $id): static
|
||||||
{
|
{
|
||||||
$this->ignoreId = $id;
|
$this->ignoreId = $id;
|
||||||
return $this;
|
return $this;
|
||||||
@@ -60,9 +59,8 @@ class Uniqueish implements Rule
|
|||||||
*
|
*
|
||||||
* @param mixed $attribute Not used.
|
* @param mixed $attribute Not used.
|
||||||
* @param mixed $value The value to compare.
|
* @param mixed $value The value to compare.
|
||||||
* @return boolean
|
|
||||||
*/
|
*/
|
||||||
public function passes(mixed $attribute, mixed $value)
|
public function passes(mixed $attribute, mixed $value): bool
|
||||||
{
|
{
|
||||||
$columnName = ($this->column ?? $attribute);
|
$columnName = ($this->column ?? $attribute);
|
||||||
$similarValue = preg_replace('/[^A-Za-z]/', '', strtolower($value));
|
$similarValue = preg_replace('/[^A-Za-z]/', '', strtolower($value));
|
||||||
@@ -97,10 +95,8 @@ class Uniqueish implements Rule
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the validation error message.
|
* Get the validation error message.
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function message()
|
public function message(): string
|
||||||
{
|
{
|
||||||
return 'The :attribute is similar to one that already exists. Please choose another.';
|
return 'The :attribute is similar to one that already exists. Please choose another.';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ class AnimatedGifService
|
|||||||
* @param integer $dataSize GIF blob size.
|
* @param integer $dataSize GIF blob size.
|
||||||
* @return boolean GIF file/blob is animated.
|
* @return boolean GIF file/blob is animated.
|
||||||
*/
|
*/
|
||||||
public static function isAnimatedGif(string $filenameOrBlob, int $dataSize = 0)
|
public static function isAnimatedGif(string $filenameOrBlob, int $dataSize = 0): bool
|
||||||
{
|
{
|
||||||
$regex = '#\x00\x21\xF9\x04.{4}\x00(\x2C|\x21)#s';
|
$regex = '#\x00\x21\xF9\x04.{4}\x00(\x2C|\x21)#s';
|
||||||
$count = 0;
|
$count = 0;
|
||||||
@@ -41,10 +41,8 @@ class AnimatedGifService
|
|||||||
* @param string $filenameOrBlob GIF filename path
|
* @param string $filenameOrBlob GIF filename path
|
||||||
* @param integer $dataSize GIF blob size.
|
* @param integer $dataSize GIF blob size.
|
||||||
* @param boolean $originalFrames Get original frames (with transparent background)
|
* @param boolean $originalFrames Get original frames (with transparent background)
|
||||||
*
|
|
||||||
* @return array
|
|
||||||
*/
|
*/
|
||||||
public function extract(string $filenameOrBlob, int $dataSize = 0, $originalFrames = false)
|
public function extract(string $filenameOrBlob, int $dataSize = 0, bool $originalFrames = false): array
|
||||||
{
|
{
|
||||||
if (self::isAnimatedGif($filenameOrBlob) === false) {
|
if (self::isAnimatedGif($filenameOrBlob) === false) {
|
||||||
return [];
|
return [];
|
||||||
@@ -198,7 +196,7 @@ class GifFrameExtractor
|
|||||||
*
|
*
|
||||||
* @param string $filename GIF filename path
|
* @param string $filename GIF filename path
|
||||||
*/
|
*/
|
||||||
private function parseFramesInfo($filename)
|
private function parseFramesInfo(string $filename)
|
||||||
{
|
{
|
||||||
$this->openFile($filename);
|
$this->openFile($filename);
|
||||||
$this->parseGifHeader();
|
$this->parseGifHeader();
|
||||||
@@ -275,10 +273,8 @@ class GifFrameExtractor
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Parse the graphic extension of the frames (old: get_graphics_extension)
|
* Parse the graphic extension of the frames (old: get_graphics_extension)
|
||||||
*
|
|
||||||
* @param integer $type
|
|
||||||
*/
|
*/
|
||||||
private function parseGraphicsExtension($type)
|
private function parseGraphicsExtension(int $type)
|
||||||
{
|
{
|
||||||
$startdata = $this->readByte(2);
|
$startdata = $this->readByte(2);
|
||||||
|
|
||||||
@@ -303,10 +299,8 @@ class GifFrameExtractor
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the full frame string block (old: get_image_block)
|
* Get the full frame string block (old: get_image_block)
|
||||||
*
|
|
||||||
* @param integer $type
|
|
||||||
*/
|
*/
|
||||||
private function getFrameString($type)
|
private function getFrameString(int $type)
|
||||||
{
|
{
|
||||||
if ($this->checkByte(0x2c)) {
|
if ($this->checkByte(0x2c)) {
|
||||||
$start = $this->pointer;
|
$start = $this->pointer;
|
||||||
@@ -400,14 +394,8 @@ class GifFrameExtractor
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the image data byte (old: get_imagedata_byte)
|
* Get the image data byte (old: get_imagedata_byte)
|
||||||
*
|
|
||||||
* @param string $type
|
|
||||||
* @param integer $start
|
|
||||||
* @param integer $length
|
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
private function getImageDataByte($type, $start, $length)
|
private function getImageDataByte(string $type, int $start, int $length): string
|
||||||
{
|
{
|
||||||
if ($type == "ext") {
|
if ($type == "ext") {
|
||||||
return substr($this->frameSources[$this->frameNumber]["graphicsextension"], $start, $length);
|
return substr($this->frameSources[$this->frameNumber]["graphicsextension"], $start, $length);
|
||||||
@@ -419,15 +407,8 @@ class GifFrameExtractor
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the image data bit (old: get_imagedata_bit)
|
* Get the image data bit (old: get_imagedata_bit)
|
||||||
*
|
|
||||||
* @param string $type
|
|
||||||
* @param integer $byteIndex
|
|
||||||
* @param integer $bitStart
|
|
||||||
* @param integer $bitLength
|
|
||||||
*
|
|
||||||
* @return number
|
|
||||||
*/
|
*/
|
||||||
private function getImageDataBit($type, $byteIndex, $bitStart, $bitLength)
|
private function getImageDataBit(string $type, int $byteIndex, int $bitStart, int $bitLength): number
|
||||||
{
|
{
|
||||||
if ($type == "ext") {
|
if ($type == "ext") {
|
||||||
return $this->readBits(ord(substr($this->frameSources[$this->frameNumber]["graphicsextension"], $byteIndex, 1)), $bitStart, $bitLength);
|
return $this->readBits(ord(substr($this->frameSources[$this->frameNumber]["graphicsextension"], $byteIndex, 1)), $bitStart, $bitLength);
|
||||||
@@ -439,12 +420,8 @@ class GifFrameExtractor
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the value of 2 ASCII chars (old: dualbyteval)
|
* Return the value of 2 ASCII chars (old: dualbyteval)
|
||||||
*
|
|
||||||
* @param string $s
|
|
||||||
*
|
|
||||||
* @return integer
|
|
||||||
*/
|
*/
|
||||||
private function dualByteVal($s)
|
private function dualByteVal(string $s): int
|
||||||
{
|
{
|
||||||
$i = (ord($s[1]) * 256 + ord($s[0]));
|
$i = (ord($s[1]) * 256 + ord($s[0]));
|
||||||
|
|
||||||
@@ -453,10 +430,8 @@ class GifFrameExtractor
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Read the data stream (old: read_data_stream)
|
* Read the data stream (old: read_data_stream)
|
||||||
*
|
|
||||||
* @param integer $firstLength
|
|
||||||
*/
|
*/
|
||||||
private function readDataStream($firstLength)
|
private function readDataStream(int $firstLength)
|
||||||
{
|
{
|
||||||
$this->pointerForward($firstLength);
|
$this->pointerForward($firstLength);
|
||||||
$length = $this->readByteInt();
|
$length = $this->readByteInt();
|
||||||
@@ -471,10 +446,8 @@ class GifFrameExtractor
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Open the gif file (old: loadfile)
|
* Open the gif file (old: loadfile)
|
||||||
*
|
|
||||||
* @param string $filename
|
|
||||||
*/
|
*/
|
||||||
private function openFile($filename)
|
private function openFile(string $filename)
|
||||||
{
|
{
|
||||||
$this->handle = fopen($filename, "rb");
|
$this->handle = fopen($filename, "rb");
|
||||||
$this->pointer = 0;
|
$this->pointer = 0;
|
||||||
@@ -495,12 +468,8 @@ class GifFrameExtractor
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Read the file from the beginning to $byteCount in binary (old: readbyte)
|
* Read the file from the beginning to $byteCount in binary (old: readbyte)
|
||||||
*
|
|
||||||
* @param integer $byteCount
|
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
private function readByte($byteCount)
|
private function readByte(int $byteCount): string
|
||||||
{
|
{
|
||||||
$data = fread($this->handle, $byteCount);
|
$data = fread($this->handle, $byteCount);
|
||||||
$this->pointer += $byteCount;
|
$this->pointer += $byteCount;
|
||||||
@@ -510,10 +479,8 @@ class GifFrameExtractor
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Read a byte and return ASCII value (old: readbyte_int)
|
* Read a byte and return ASCII value (old: readbyte_int)
|
||||||
*
|
|
||||||
* @return integer
|
|
||||||
*/
|
*/
|
||||||
private function readByteInt()
|
private function readByteInt(): int
|
||||||
{
|
{
|
||||||
$data = fread($this->handle, 1);
|
$data = fread($this->handle, 1);
|
||||||
$this->pointer++;
|
$this->pointer++;
|
||||||
@@ -523,14 +490,8 @@ class GifFrameExtractor
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Convert a $byte to decimal (old: readbits)
|
* Convert a $byte to decimal (old: readbits)
|
||||||
*
|
|
||||||
* @param string $byte
|
|
||||||
* @param integer $start
|
|
||||||
* @param integer $length
|
|
||||||
*
|
|
||||||
* @return number
|
|
||||||
*/
|
*/
|
||||||
private function readBits($byte, $start, $length)
|
private function readBits(string $byte, int $start, int $length): number
|
||||||
{
|
{
|
||||||
$bin = str_pad(decbin($byte), 8, "0", STR_PAD_LEFT);
|
$bin = str_pad(decbin($byte), 8, "0", STR_PAD_LEFT);
|
||||||
$data = substr($bin, $start, $length);
|
$data = substr($bin, $start, $length);
|
||||||
@@ -540,10 +501,8 @@ class GifFrameExtractor
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Rewind the file pointer reader (old: p_rewind)
|
* Rewind the file pointer reader (old: p_rewind)
|
||||||
*
|
|
||||||
* @param integer $length
|
|
||||||
*/
|
*/
|
||||||
private function pointerRewind($length)
|
private function pointerRewind(int $length)
|
||||||
{
|
{
|
||||||
$this->pointer -= $length;
|
$this->pointer -= $length;
|
||||||
fseek($this->handle, $this->pointer);
|
fseek($this->handle, $this->pointer);
|
||||||
@@ -551,10 +510,8 @@ class GifFrameExtractor
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Forward the file pointer reader (old: p_forward)
|
* Forward the file pointer reader (old: p_forward)
|
||||||
*
|
|
||||||
* @param integer $length
|
|
||||||
*/
|
*/
|
||||||
private function pointerForward($length)
|
private function pointerForward(int $length)
|
||||||
{
|
{
|
||||||
$this->pointer += $length;
|
$this->pointer += $length;
|
||||||
fseek($this->handle, $this->pointer);
|
fseek($this->handle, $this->pointer);
|
||||||
@@ -562,13 +519,8 @@ class GifFrameExtractor
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get a section of the data from $start to $start + $length (old: datapart)
|
* Get a section of the data from $start to $start + $length (old: datapart)
|
||||||
*
|
|
||||||
* @param integer $start
|
|
||||||
* @param integer $length
|
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
private function dataPart($start, $length)
|
private function dataPart(int $start, int $length): string
|
||||||
{
|
{
|
||||||
fseek($this->handle, $start);
|
fseek($this->handle, $start);
|
||||||
$data = fread($this->handle, $length);
|
$data = fread($this->handle, $length);
|
||||||
@@ -579,12 +531,8 @@ class GifFrameExtractor
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if a character if a byte (old: checkbyte)
|
* Check if a character if a byte (old: checkbyte)
|
||||||
*
|
|
||||||
* @param integer $byte
|
|
||||||
*
|
|
||||||
* @return boolean
|
|
||||||
*/
|
*/
|
||||||
private function checkByte($byte)
|
private function checkByte(int $byte): bool
|
||||||
{
|
{
|
||||||
if (fgetc($this->handle) == chr($byte)) {
|
if (fgetc($this->handle) == chr($byte)) {
|
||||||
fseek($this->handle, $this->pointer);
|
fseek($this->handle, $this->pointer);
|
||||||
@@ -598,10 +546,8 @@ class GifFrameExtractor
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Check the end of the file (old: checkEOF)
|
* Check the end of the file (old: checkEOF)
|
||||||
*
|
|
||||||
* @return boolean
|
|
||||||
*/
|
*/
|
||||||
private function checkEOF()
|
private function checkEOF(): bool
|
||||||
{
|
{
|
||||||
if (fgetc($this->handle) === false) {
|
if (fgetc($this->handle) === false) {
|
||||||
return true;
|
return true;
|
||||||
@@ -628,70 +574,56 @@ class GifFrameExtractor
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the total of all added frame duration
|
* Get the total of all added frame duration
|
||||||
*
|
|
||||||
* @return integer
|
|
||||||
*/
|
*/
|
||||||
public function getTotalDuration()
|
public function getTotalDuration(): int
|
||||||
{
|
{
|
||||||
return $this->totalDuration;
|
return $this->totalDuration;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the number of extracted frames
|
* Get the number of extracted frames
|
||||||
*
|
|
||||||
* @return integer
|
|
||||||
*/
|
*/
|
||||||
public function getFrameNumber()
|
public function getFrameNumber(): int
|
||||||
{
|
{
|
||||||
return $this->frameNumber;
|
return $this->frameNumber;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the extracted frames (images and durations)
|
* Get the extracted frames (images and durations)
|
||||||
*
|
|
||||||
* @return array
|
|
||||||
*/
|
*/
|
||||||
public function getFrames()
|
public function getFrames(): array
|
||||||
{
|
{
|
||||||
return $this->frames;
|
return $this->frames;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the extracted frame positions
|
* Get the extracted frame positions
|
||||||
*
|
|
||||||
* @return array
|
|
||||||
*/
|
*/
|
||||||
public function getFramePositions()
|
public function getFramePositions(): array
|
||||||
{
|
{
|
||||||
return $this->framePositions;
|
return $this->framePositions;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the extracted frame dimensions
|
* Get the extracted frame dimensions
|
||||||
*
|
|
||||||
* @return array
|
|
||||||
*/
|
*/
|
||||||
public function getFrameDimensions()
|
public function getFrameDimensions(): array
|
||||||
{
|
{
|
||||||
return $this->frameDimensions;
|
return $this->frameDimensions;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the extracted frame images
|
* Get the extracted frame images
|
||||||
*
|
|
||||||
* @return array
|
|
||||||
*/
|
*/
|
||||||
public function getFrameImages()
|
public function getFrameImages(): array
|
||||||
{
|
{
|
||||||
return $this->frameImages;
|
return $this->frameImages;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the extracted frame durations
|
* Get the extracted frame durations
|
||||||
*
|
|
||||||
* @return array
|
|
||||||
*/
|
*/
|
||||||
public function getFrameDurations()
|
public function getFrameDurations(): array
|
||||||
{
|
{
|
||||||
return $this->frameDurations;
|
return $this->frameDurations;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,10 +8,8 @@ trait Uuids
|
|||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Boot function from Laravel.
|
* Boot function from Laravel.
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
protected static function bootUuids()
|
protected static function bootUuids(): void
|
||||||
{
|
{
|
||||||
static::creating(function ($model) {
|
static::creating(function ($model) {
|
||||||
if (empty($model->{$model->getKeyName()}) === true) {
|
if (empty($model->{$model->getKeyName()}) === true) {
|
||||||
@@ -22,20 +20,16 @@ trait Uuids
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the value indicating whether the IDs are incrementing.
|
* Get the value indicating whether the IDs are incrementing.
|
||||||
*
|
|
||||||
* @return boolean
|
|
||||||
*/
|
*/
|
||||||
public function getIncrementing()
|
public function getIncrementing(): bool
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the auto-incrementing key type.
|
* Get the auto-incrementing key type.
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function getKeyType()
|
public function getKeyType(): string
|
||||||
{
|
{
|
||||||
return 'string';
|
return 'string';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,15 +8,15 @@
|
|||||||
],
|
],
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"require": {
|
"require": {
|
||||||
"php": "^8.0.2",
|
"php": "^8.1",
|
||||||
"doctrine/dbal": "^3.5",
|
"doctrine/dbal": "^3.5",
|
||||||
"guzzlehttp/guzzle": "^7.2",
|
"guzzlehttp/guzzle": "^7.2",
|
||||||
"intervention/image": "^2.7",
|
"intervention/image": "^2.7",
|
||||||
"laravel/framework": "^9.19",
|
"laravel/framework": "^10.12",
|
||||||
"laravel/sanctum": "^3.0",
|
"laravel/sanctum": "^3.2",
|
||||||
"laravel/tinker": "^2.7",
|
"laravel/tinker": "^2.8",
|
||||||
"league/flysystem-aws-s3-v3": "^3.12",
|
"league/flysystem-aws-s3-v3": "^3.12",
|
||||||
"owen-it/laravel-auditing": "^13.0",
|
"owen-it/laravel-auditing": "^13.1",
|
||||||
"php-ffmpeg/php-ffmpeg": "^1.1",
|
"php-ffmpeg/php-ffmpeg": "^1.1",
|
||||||
"sunspikes/clamav-validator": "*",
|
"sunspikes/clamav-validator": "*",
|
||||||
"thiagoalessio/tesseract_ocr": "^2.12",
|
"thiagoalessio/tesseract_ocr": "^2.12",
|
||||||
@@ -25,11 +25,11 @@
|
|||||||
"require-dev": {
|
"require-dev": {
|
||||||
"fakerphp/faker": "^1.9.1",
|
"fakerphp/faker": "^1.9.1",
|
||||||
"laravel/pint": "^1.0",
|
"laravel/pint": "^1.0",
|
||||||
"laravel/sail": "^1.0.1",
|
"laravel/sail": "^1.18",
|
||||||
"mockery/mockery": "^1.4.4",
|
"mockery/mockery": "^1.4.4",
|
||||||
"nunomaduro/collision": "^7.1",
|
"nunomaduro/collision": "^7.1",
|
||||||
"phpunit/phpunit": "^10.1.3",
|
"phpunit/phpunit": "^10.1.3",
|
||||||
"spatie/laravel-ignition": "^1.0"
|
"spatie/laravel-ignition": "^2.0"
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
"files": [
|
"files": [
|
||||||
@@ -77,6 +77,6 @@
|
|||||||
"pestphp/pest-plugin": true
|
"pestphp/pest-plugin": true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"minimum-stability": "dev",
|
"minimum-stability": "stable",
|
||||||
"prefer-stable": true
|
"prefer-stable": true
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Support\ServiceProvider;
|
||||||
use Illuminate\Support\Facades\Facade;
|
use Illuminate\Support\Facades\Facade;
|
||||||
|
|
||||||
return [
|
return [
|
||||||
@@ -154,34 +155,7 @@ return [
|
|||||||
|
|
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
'providers' => [
|
'providers' => ServiceProvider::defaultProviders()->merge([
|
||||||
|
|
||||||
/*
|
|
||||||
* Laravel Framework Service Providers...
|
|
||||||
*/
|
|
||||||
Illuminate\Auth\AuthServiceProvider::class,
|
|
||||||
Illuminate\Broadcasting\BroadcastServiceProvider::class,
|
|
||||||
Illuminate\Bus\BusServiceProvider::class,
|
|
||||||
Illuminate\Cache\CacheServiceProvider::class,
|
|
||||||
Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class,
|
|
||||||
Illuminate\Cookie\CookieServiceProvider::class,
|
|
||||||
Illuminate\Database\DatabaseServiceProvider::class,
|
|
||||||
Illuminate\Encryption\EncryptionServiceProvider::class,
|
|
||||||
Illuminate\Filesystem\FilesystemServiceProvider::class,
|
|
||||||
Illuminate\Foundation\Providers\FoundationServiceProvider::class,
|
|
||||||
Illuminate\Hashing\HashServiceProvider::class,
|
|
||||||
Illuminate\Mail\MailServiceProvider::class,
|
|
||||||
Illuminate\Notifications\NotificationServiceProvider::class,
|
|
||||||
Illuminate\Pagination\PaginationServiceProvider::class,
|
|
||||||
Illuminate\Pipeline\PipelineServiceProvider::class,
|
|
||||||
Illuminate\Queue\QueueServiceProvider::class,
|
|
||||||
Illuminate\Redis\RedisServiceProvider::class,
|
|
||||||
Illuminate\Auth\Passwords\PasswordResetServiceProvider::class,
|
|
||||||
Illuminate\Session\SessionServiceProvider::class,
|
|
||||||
Illuminate\Translation\TranslationServiceProvider::class,
|
|
||||||
Illuminate\Validation\ValidationServiceProvider::class,
|
|
||||||
Illuminate\View\ViewServiceProvider::class,
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Package Service Providers...
|
* Package Service Providers...
|
||||||
*/
|
*/
|
||||||
@@ -196,8 +170,7 @@ return [
|
|||||||
// App\Providers\BroadcastServiceProvider::class,
|
// App\Providers\BroadcastServiceProvider::class,
|
||||||
App\Providers\EventServiceProvider::class,
|
App\Providers\EventServiceProvider::class,
|
||||||
App\Providers\RouteServiceProvider::class,
|
App\Providers\RouteServiceProvider::class,
|
||||||
|
])->toArray(),
|
||||||
],
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -80,16 +80,20 @@ return [
|
|||||||
| than one user table or model in the application and you want to have
|
| than one user table or model in the application and you want to have
|
||||||
| separate password reset settings based on the specific user types.
|
| separate password reset settings based on the specific user types.
|
||||||
|
|
|
|
||||||
| The expire time is the number of minutes that each reset token will be
|
| The expiry time is the number of minutes that each reset token will be
|
||||||
| considered valid. This security feature keeps tokens short-lived so
|
| considered valid. This security feature keeps tokens short-lived so
|
||||||
| they have less time to be guessed. You may change this as needed.
|
| they have less time to be guessed. You may change this as needed.
|
||||||
|
|
|
|
||||||
|
| The throttle setting is the number of seconds a user must wait before
|
||||||
|
| generating more password reset tokens. This prevents the user from
|
||||||
|
| quickly generating a very large amount of password reset tokens.
|
||||||
|
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
'passwords' => [
|
'passwords' => [
|
||||||
'users' => [
|
'users' => [
|
||||||
'provider' => 'users',
|
'provider' => 'users',
|
||||||
'table' => 'password_resets',
|
'table' => 'password_reset_tokens',
|
||||||
'expire' => 60,
|
'expire' => 60,
|
||||||
'throttle' => 60,
|
'throttle' => 60,
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ return [
|
|||||||
'secret' => env('PUSHER_APP_SECRET'),
|
'secret' => env('PUSHER_APP_SECRET'),
|
||||||
'app_id' => env('PUSHER_APP_ID'),
|
'app_id' => env('PUSHER_APP_ID'),
|
||||||
'options' => [
|
'options' => [
|
||||||
'host' => env('PUSHER_HOST') === true ?: 'api-' . env('PUSHER_APP_CLUSTER', 'mt1') . '.pusher.com',
|
'host' => env('PUSHER_HOST') ?: 'api-' . env('PUSHER_APP_CLUSTER', 'mt1') . '.pusher.com',
|
||||||
'port' => env('PUSHER_PORT', 443),
|
'port' => env('PUSHER_PORT', 443),
|
||||||
'scheme' => env('PUSHER_SCHEME', 'https'),
|
'scheme' => env('PUSHER_SCHEME', 'https'),
|
||||||
'encrypted' => true,
|
'encrypted' => true,
|
||||||
|
|||||||
@@ -58,9 +58,8 @@ return [
|
|||||||
'prefix_indexes' => true,
|
'prefix_indexes' => true,
|
||||||
'strict' => true,
|
'strict' => true,
|
||||||
'engine' => null,
|
'engine' => null,
|
||||||
'options' => extension_loaded('pdo_mysql') === true ? array_filter([
|
'options' => extension_loaded('pdo_mysql') ? array_filter([
|
||||||
PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
|
PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
|
||||||
PDO::ATTR_TIMEOUT => env('DB_TIMEOUT', 30),
|
|
||||||
]) : [],
|
]) : [],
|
||||||
],
|
],
|
||||||
|
|
||||||
|
|||||||
@@ -29,11 +29,13 @@ return [
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
'disks' => [
|
'disks' => [
|
||||||
|
|
||||||
'local' => [
|
'local' => [
|
||||||
'driver' => 'local',
|
'driver' => 'local',
|
||||||
'root' => storage_path('app/public'),
|
'root' => storage_path('app/public'),
|
||||||
'url' => env('APP_URL') . "/storage",
|
'url' => env('APP_URL') . "/storage",
|
||||||
'public' => true,
|
'public' => true,
|
||||||
|
'throw' => false,
|
||||||
],
|
],
|
||||||
|
|
||||||
'cdn' => [
|
'cdn' => [
|
||||||
@@ -68,6 +70,26 @@ return [
|
|||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
|
||||||
|
'public' => [
|
||||||
|
'driver' => 'local',
|
||||||
|
'root' => storage_path('app/public'),
|
||||||
|
'url' => env('APP_URL') . '/storage',
|
||||||
|
'visibility' => 'public',
|
||||||
|
'throw' => false,
|
||||||
|
],
|
||||||
|
|
||||||
|
's3' => [
|
||||||
|
'driver' => 's3',
|
||||||
|
'key' => env('AWS_ACCESS_KEY_ID'),
|
||||||
|
'secret' => env('AWS_SECRET_ACCESS_KEY'),
|
||||||
|
'region' => env('AWS_DEFAULT_REGION'),
|
||||||
|
'bucket' => env('AWS_BUCKET'),
|
||||||
|
'url' => env('AWS_URL'),
|
||||||
|
'endpoint' => env('AWS_ENDPOINT'),
|
||||||
|
'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false),
|
||||||
|
'throw' => false,
|
||||||
|
],
|
||||||
|
|
||||||
],
|
],
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
use Monolog\Handler\NullHandler;
|
use Monolog\Handler\NullHandler;
|
||||||
use Monolog\Handler\StreamHandler;
|
use Monolog\Handler\StreamHandler;
|
||||||
use Monolog\Handler\SyslogUdpHandler;
|
use Monolog\Handler\SyslogUdpHandler;
|
||||||
|
use Monolog\Processor\PsrLogMessageProcessor;
|
||||||
|
|
||||||
return [
|
return [
|
||||||
|
|
||||||
@@ -61,6 +62,7 @@ return [
|
|||||||
'driver' => 'single',
|
'driver' => 'single',
|
||||||
'path' => storage_path('logs/laravel.log'),
|
'path' => storage_path('logs/laravel.log'),
|
||||||
'level' => env('LOG_LEVEL', 'debug'),
|
'level' => env('LOG_LEVEL', 'debug'),
|
||||||
|
'replace_placeholders' => true,
|
||||||
],
|
],
|
||||||
|
|
||||||
'daily' => [
|
'daily' => [
|
||||||
@@ -68,6 +70,7 @@ return [
|
|||||||
'path' => storage_path('logs/laravel.log'),
|
'path' => storage_path('logs/laravel.log'),
|
||||||
'level' => env('LOG_LEVEL', 'debug'),
|
'level' => env('LOG_LEVEL', 'debug'),
|
||||||
'days' => 14,
|
'days' => 14,
|
||||||
|
'replace_placeholders' => true,
|
||||||
],
|
],
|
||||||
|
|
||||||
'slack' => [
|
'slack' => [
|
||||||
@@ -76,6 +79,7 @@ return [
|
|||||||
'username' => 'Laravel Log',
|
'username' => 'Laravel Log',
|
||||||
'emoji' => ':boom:',
|
'emoji' => ':boom:',
|
||||||
'level' => env('LOG_LEVEL', 'critical'),
|
'level' => env('LOG_LEVEL', 'critical'),
|
||||||
|
'replace_placeholders' => true,
|
||||||
],
|
],
|
||||||
|
|
||||||
'papertrail' => [
|
'papertrail' => [
|
||||||
@@ -87,6 +91,7 @@ return [
|
|||||||
'port' => env('PAPERTRAIL_PORT'),
|
'port' => env('PAPERTRAIL_PORT'),
|
||||||
'connectionString' => 'tls://' . env('PAPERTRAIL_URL') . ':' . env('PAPERTRAIL_PORT'),
|
'connectionString' => 'tls://' . env('PAPERTRAIL_URL') . ':' . env('PAPERTRAIL_PORT'),
|
||||||
],
|
],
|
||||||
|
'processors' => [PsrLogMessageProcessor::class],
|
||||||
],
|
],
|
||||||
|
|
||||||
'stderr' => [
|
'stderr' => [
|
||||||
@@ -97,16 +102,20 @@ return [
|
|||||||
'with' => [
|
'with' => [
|
||||||
'stream' => 'php://stderr',
|
'stream' => 'php://stderr',
|
||||||
],
|
],
|
||||||
|
'processors' => [PsrLogMessageProcessor::class],
|
||||||
],
|
],
|
||||||
|
|
||||||
'syslog' => [
|
'syslog' => [
|
||||||
'driver' => 'syslog',
|
'driver' => 'syslog',
|
||||||
'level' => env('LOG_LEVEL', 'debug'),
|
'level' => env('LOG_LEVEL', 'debug'),
|
||||||
|
'facility' => LOG_USER,
|
||||||
|
'replace_placeholders' => true,
|
||||||
],
|
],
|
||||||
|
|
||||||
'errorlog' => [
|
'errorlog' => [
|
||||||
'driver' => 'errorlog',
|
'driver' => 'errorlog',
|
||||||
'level' => env('LOG_LEVEL', 'debug'),
|
'level' => env('LOG_LEVEL', 'debug'),
|
||||||
|
'replace_placeholders' => true,
|
||||||
],
|
],
|
||||||
|
|
||||||
'null' => [
|
'null' => [
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ return [
|
|||||||
| sending an e-mail. You will specify which one you are using for your
|
| sending an e-mail. You will specify which one you are using for your
|
||||||
| mailers below. You are free to add additional mailers as required.
|
| mailers below. You are free to add additional mailers as required.
|
||||||
|
|
|
|
||||||
| Supported: "smtp", "sendmail", "mailgun", "ses",
|
| Supported: "smtp", "sendmail", "mailgun", "ses", "ses-v2",
|
||||||
| "postmark", "log", "array", "failover"
|
| "postmark", "log", "array", "failover"
|
||||||
|
|
|
|
||||||
*/
|
*/
|
||||||
@@ -51,10 +51,16 @@ return [
|
|||||||
|
|
||||||
'mailgun' => [
|
'mailgun' => [
|
||||||
'transport' => 'mailgun',
|
'transport' => 'mailgun',
|
||||||
|
// 'client' => [
|
||||||
|
// 'timeout' => 5,
|
||||||
|
// ],
|
||||||
],
|
],
|
||||||
|
|
||||||
'postmark' => [
|
'postmark' => [
|
||||||
'transport' => 'postmark',
|
'transport' => 'postmark',
|
||||||
|
// 'client' => [
|
||||||
|
// 'timeout' => 5,
|
||||||
|
// ],
|
||||||
],
|
],
|
||||||
|
|
||||||
'sendmail' => [
|
'sendmail' => [
|
||||||
|
|||||||
@@ -36,4 +36,5 @@ return [
|
|||||||
'site_key' => env('GOOGLE_RECAPTCHA_SITE_KEY'),
|
'site_key' => env('GOOGLE_RECAPTCHA_SITE_KEY'),
|
||||||
'secret_key' => env('GOOGLE_RECAPTCHA_SECRET_SITE_KEY'),
|
'secret_key' => env('GOOGLE_RECAPTCHA_SECRET_SITE_KEY'),
|
||||||
],
|
],
|
||||||
|
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ class ArticleFactory extends Factory
|
|||||||
*
|
*
|
||||||
* @return array<string, mixed>
|
* @return array<string, mixed>
|
||||||
*/
|
*/
|
||||||
public function definition()
|
public function definition(): array
|
||||||
{
|
{
|
||||||
$publishDate = Carbon::parse($this->faker->dateTimeBetween('-1 month', '+1 month'));
|
$publishDate = Carbon::parse($this->faker->dateTimeBetween('-1 month', '+1 month'));
|
||||||
|
|
||||||
@@ -24,8 +24,8 @@ class ArticleFactory extends Factory
|
|||||||
'slug' => $this->faker->slug(),
|
'slug' => $this->faker->slug(),
|
||||||
'publish_at' => $publishDate,
|
'publish_at' => $publishDate,
|
||||||
'content' => $this->faker->paragraphs(3, true),
|
'content' => $this->faker->paragraphs(3, true),
|
||||||
'user_id' => $this->faker->uuid,
|
'user_id' => $this->faker->uuid(),
|
||||||
'hero' => $this->faker->uuid,
|
'hero' => $this->faker->uuid(),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ class EventFactory extends Factory
|
|||||||
*
|
*
|
||||||
* @return array<string, mixed>
|
* @return array<string, mixed>
|
||||||
*/
|
*/
|
||||||
public function definition()
|
public function definition(): array
|
||||||
{
|
{
|
||||||
$startDate = Carbon::parse($this->faker->dateTimeBetween('now', '+1 year'));
|
$startDate = Carbon::parse($this->faker->dateTimeBetween('now', '+1 year'));
|
||||||
$endDate = Carbon::parse($this->faker->dateTimeBetween($startDate, '+1 year'));
|
$endDate = Carbon::parse($this->faker->dateTimeBetween($startDate, '+1 year'));
|
||||||
@@ -24,14 +24,14 @@ class EventFactory extends Factory
|
|||||||
return [
|
return [
|
||||||
'title' => $this->faker->sentence(),
|
'title' => $this->faker->sentence(),
|
||||||
'location' => $this->faker->randomElement(['online', 'physical']),
|
'location' => $this->faker->randomElement(['online', 'physical']),
|
||||||
'address' => $this->faker->address,
|
'address' => $this->faker->address(),
|
||||||
'start_at' => $startDate,
|
'start_at' => $startDate,
|
||||||
'end_at' => $endDate,
|
'end_at' => $endDate,
|
||||||
'publish_at' => $publishDate,
|
'publish_at' => $publishDate,
|
||||||
'status' => $this->faker->randomElement(['draft', 'soon', 'open', 'closed', 'cancelled']),
|
'status' => $this->faker->randomElement(['draft', 'soon', 'open', 'closed', 'cancelled']),
|
||||||
'registration_type' => $this->faker->randomElement(['none', 'email', 'link', 'message']),
|
'registration_type' => $this->faker->randomElement(['none', 'email', 'link', 'message']),
|
||||||
'registration_data' => $this->faker->sentence(),
|
'registration_data' => $this->faker->sentence(),
|
||||||
'hero' => $this->faker->uuid,
|
'hero' => $this->faker->uuid(),
|
||||||
'content' => $this->faker->paragraphs(3, true),
|
'content' => $this->faker->paragraphs(3, true),
|
||||||
'price' => $this->faker->numberBetween(0, 150),
|
'price' => $this->faker->numberBetween(0, 150),
|
||||||
'ages' => $this->faker->regexify('\d+(\+|\-\d+)?'),
|
'ages' => $this->faker->regexify('\d+(\+|\-\d+)?'),
|
||||||
|
|||||||
@@ -15,13 +15,13 @@ class MediaFactory extends Factory
|
|||||||
*
|
*
|
||||||
* @return array<string, mixed>
|
* @return array<string, mixed>
|
||||||
*/
|
*/
|
||||||
public function definition()
|
public function definition(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'title' => $this->faker->sentence(),
|
'title' => $this->faker->sentence(),
|
||||||
'name' => storage_path('app/public/') . $this->faker->slug() . '.' . $this->faker->fileExtension,
|
'name' => storage_path('app/public/') . $this->faker->slug() . '.' . $this->faker->fileExtension(),
|
||||||
'mime_type' => $this->faker->mimeType,
|
'mime_type' => $this->faker->mimeType(),
|
||||||
'user_id' => $this->faker->uuid,
|
'user_id' => $this->faker->uuid(),
|
||||||
'size' => $this->faker->numberBetween(1000, 1000000),
|
'size' => $this->faker->numberBetween(1000, 1000000),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ class UserFactory extends Factory
|
|||||||
*
|
*
|
||||||
* @return array<string, mixed>
|
* @return array<string, mixed>
|
||||||
*/
|
*/
|
||||||
public function definition()
|
public function definition(): array
|
||||||
{
|
{
|
||||||
$faker = \Faker\Factory::create();
|
$faker = \Faker\Factory::create();
|
||||||
$faker->addProvider(new \Faker\Provider\CustomInternetProvider($faker));
|
$faker->addProvider(new \Faker\Provider\CustomInternetProvider($faker));
|
||||||
@@ -39,10 +39,8 @@ class UserFactory extends Factory
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Indicate that the model's email address should be unverified.
|
* Indicate that the model's email address should be unverified.
|
||||||
*
|
|
||||||
* @return static
|
|
||||||
*/
|
*/
|
||||||
public function unverified()
|
public function unverified(): static
|
||||||
{
|
{
|
||||||
return $this->state(fn (array $attributes) => [
|
return $this->state(fn (array $attributes) => [
|
||||||
'email_verified_at' => null,
|
'email_verified_at' => null,
|
||||||
|
|||||||
@@ -8,10 +8,8 @@ return new class extends Migration
|
|||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Run the migrations.
|
* Run the migrations.
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function up()
|
public function up(): void
|
||||||
{
|
{
|
||||||
Schema::create('users', function (Blueprint $table) {
|
Schema::create('users', function (Blueprint $table) {
|
||||||
$table->uuid('id')->primary();
|
$table->uuid('id')->primary();
|
||||||
@@ -30,10 +28,8 @@ return new class extends Migration
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Reverse the migrations.
|
* Reverse the migrations.
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function down()
|
public function down(): void
|
||||||
{
|
{
|
||||||
Schema::dropIfExists('users');
|
Schema::dropIfExists('users');
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,10 +8,8 @@ return new class extends Migration
|
|||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Run the migrations.
|
* Run the migrations.
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function up()
|
public function up(): void
|
||||||
{
|
{
|
||||||
Schema::create('password_resets', function (Blueprint $table) {
|
Schema::create('password_resets', function (Blueprint $table) {
|
||||||
$table->string('email')->index();
|
$table->string('email')->index();
|
||||||
@@ -22,10 +20,8 @@ return new class extends Migration
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Reverse the migrations.
|
* Reverse the migrations.
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function down()
|
public function down(): void
|
||||||
{
|
{
|
||||||
Schema::dropIfExists('password_resets');
|
Schema::dropIfExists('password_resets');
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,10 +8,8 @@ return new class extends Migration
|
|||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Run the migrations.
|
* Run the migrations.
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function up()
|
public function up(): void
|
||||||
{
|
{
|
||||||
Schema::create('failed_jobs', function (Blueprint $table) {
|
Schema::create('failed_jobs', function (Blueprint $table) {
|
||||||
$table->id();
|
$table->id();
|
||||||
@@ -26,10 +24,8 @@ return new class extends Migration
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Reverse the migrations.
|
* Reverse the migrations.
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function down()
|
public function down(): void
|
||||||
{
|
{
|
||||||
Schema::dropIfExists('failed_jobs');
|
Schema::dropIfExists('failed_jobs');
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,10 +8,8 @@ return new class extends Migration
|
|||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Run the migrations.
|
* Run the migrations.
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function up()
|
public function up(): void
|
||||||
{
|
{
|
||||||
Schema::create('personal_access_tokens', function (Blueprint $table) {
|
Schema::create('personal_access_tokens', function (Blueprint $table) {
|
||||||
$table->id();
|
$table->id();
|
||||||
@@ -27,10 +25,8 @@ return new class extends Migration
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Reverse the migrations.
|
* Reverse the migrations.
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function down()
|
public function down(): void
|
||||||
{
|
{
|
||||||
Schema::dropIfExists('personal_access_tokens');
|
Schema::dropIfExists('personal_access_tokens');
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,10 +8,8 @@ return new class extends Migration
|
|||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Run the migrations.
|
* Run the migrations.
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function up()
|
public function up(): void
|
||||||
{
|
{
|
||||||
Schema::create('posts', function (Blueprint $table) {
|
Schema::create('posts', function (Blueprint $table) {
|
||||||
$table->uuid('id')->primary();
|
$table->uuid('id')->primary();
|
||||||
@@ -27,10 +25,8 @@ return new class extends Migration
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Reverse the migrations.
|
* Reverse the migrations.
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function down()
|
public function down(): void
|
||||||
{
|
{
|
||||||
Schema::dropIfExists('posts');
|
Schema::dropIfExists('posts');
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,10 +8,8 @@ return new class extends Migration
|
|||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Run the migrations.
|
* Run the migrations.
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function up()
|
public function up(): void
|
||||||
{
|
{
|
||||||
Schema::create('media', function (Blueprint $table) {
|
Schema::create('media', function (Blueprint $table) {
|
||||||
$table->uuid('id')->primary();
|
$table->uuid('id')->primary();
|
||||||
@@ -27,10 +25,8 @@ return new class extends Migration
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Reverse the migrations.
|
* Reverse the migrations.
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function down()
|
public function down(): void
|
||||||
{
|
{
|
||||||
Schema::dropIfExists('media');
|
Schema::dropIfExists('media');
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,10 +8,8 @@ return new class extends Migration
|
|||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Run the migrations.
|
* Run the migrations.
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function up()
|
public function up(): void
|
||||||
{
|
{
|
||||||
Schema::create('permissions', function (Blueprint $table) {
|
Schema::create('permissions', function (Blueprint $table) {
|
||||||
$table->uuid('id')->primary();
|
$table->uuid('id')->primary();
|
||||||
@@ -25,10 +23,8 @@ return new class extends Migration
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Reverse the migrations.
|
* Reverse the migrations.
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function down()
|
public function down(): void
|
||||||
{
|
{
|
||||||
Schema::dropIfExists('permissions');
|
Schema::dropIfExists('permissions');
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,10 +8,8 @@ return new class extends Migration
|
|||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Run the migrations.
|
* Run the migrations.
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function up()
|
public function up(): void
|
||||||
{
|
{
|
||||||
Schema::create('events', function (Blueprint $table) {
|
Schema::create('events', function (Blueprint $table) {
|
||||||
$table->uuid('id')->primary();
|
$table->uuid('id')->primary();
|
||||||
@@ -32,10 +30,8 @@ return new class extends Migration
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Reverse the migrations.
|
* Reverse the migrations.
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function down()
|
public function down(): void
|
||||||
{
|
{
|
||||||
Schema::dropIfExists('events');
|
Schema::dropIfExists('events');
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,10 +8,8 @@ return new class extends Migration
|
|||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Run the migrations.
|
* Run the migrations.
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function up()
|
public function up(): void
|
||||||
{
|
{
|
||||||
Schema::create('subscriptions', function (Blueprint $table) {
|
Schema::create('subscriptions', function (Blueprint $table) {
|
||||||
$table->uuid('id')->primary();
|
$table->uuid('id')->primary();
|
||||||
@@ -23,10 +21,8 @@ return new class extends Migration
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Reverse the migrations.
|
* Reverse the migrations.
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function down()
|
public function down(): void
|
||||||
{
|
{
|
||||||
Schema::dropIfExists('subscriptions');
|
Schema::dropIfExists('subscriptions');
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,10 +8,8 @@ return new class extends Migration
|
|||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Run the migrations.
|
* Run the migrations.
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function up()
|
public function up(): void
|
||||||
{
|
{
|
||||||
Schema::create('jobs', function (Blueprint $table) {
|
Schema::create('jobs', function (Blueprint $table) {
|
||||||
$table->bigIncrements('id');
|
$table->bigIncrements('id');
|
||||||
@@ -26,10 +24,8 @@ return new class extends Migration
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Reverse the migrations.
|
* Reverse the migrations.
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function down()
|
public function down(): void
|
||||||
{
|
{
|
||||||
Schema::dropIfExists('jobs');
|
Schema::dropIfExists('jobs');
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,10 +8,8 @@ return new class extends Migration
|
|||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Run the migrations.
|
* Run the migrations.
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function up()
|
public function up(): void
|
||||||
{
|
{
|
||||||
Schema::create('user_codes', function (Blueprint $table) {
|
Schema::create('user_codes', function (Blueprint $table) {
|
||||||
$table->id();
|
$table->id();
|
||||||
@@ -27,10 +25,8 @@ return new class extends Migration
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Reverse the migrations.
|
* Reverse the migrations.
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function down()
|
public function down(): void
|
||||||
{
|
{
|
||||||
Schema::dropIfExists('user_codes');
|
Schema::dropIfExists('user_codes');
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,14 +5,12 @@ use Illuminate\Database\Schema\Blueprint;
|
|||||||
use Illuminate\Support\Facades\Config;
|
use Illuminate\Support\Facades\Config;
|
||||||
use Illuminate\Support\Facades\Schema;
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
class CreateAuditsTable extends Migration
|
return new class extends Migration
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Run the migrations.
|
* Run the migrations.
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function up()
|
public function up(): void
|
||||||
{
|
{
|
||||||
Schema::connection(config('audit.drivers.database.connection', config('database.default')))->create('audits', function (Blueprint $table) {
|
Schema::connection(config('audit.drivers.database.connection', config('database.default')))->create('audits', function (Blueprint $table) {
|
||||||
|
|
||||||
@@ -37,11 +35,9 @@ class CreateAuditsTable extends Migration
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Reverse the migrations.
|
* Reverse the migrations.
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function down()
|
public function down(): void
|
||||||
{
|
{
|
||||||
Schema::connection(config('audit.drivers.database.connection', config('database.default')))->drop('audits');
|
Schema::connection(config('audit.drivers.database.connection', config('database.default')))->drop('audits');
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|||||||
@@ -8,10 +8,8 @@ return new class extends Migration
|
|||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Run the migrations.
|
* Run the migrations.
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function up()
|
public function up(): void
|
||||||
{
|
{
|
||||||
Schema::create('user_logins', function (Blueprint $table) {
|
Schema::create('user_logins', function (Blueprint $table) {
|
||||||
$table->uuid('id')->primary();
|
$table->uuid('id')->primary();
|
||||||
@@ -29,10 +27,8 @@ return new class extends Migration
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Reverse the migrations.
|
* Reverse the migrations.
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function down()
|
public function down(): void
|
||||||
{
|
{
|
||||||
Schema::dropIfExists('user_logins');
|
Schema::dropIfExists('user_logins');
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,10 +8,8 @@ return new class extends Migration
|
|||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Run the migrations.
|
* Run the migrations.
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function up()
|
public function up(): void
|
||||||
{
|
{
|
||||||
Schema::create('analytics', function (Blueprint $table) {
|
Schema::create('analytics', function (Blueprint $table) {
|
||||||
$table->id();
|
$table->id();
|
||||||
@@ -25,10 +23,8 @@ return new class extends Migration
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Reverse the migrations.
|
* Reverse the migrations.
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function down()
|
public function down(): void
|
||||||
{
|
{
|
||||||
Schema::dropIfExists('analytics');
|
Schema::dropIfExists('analytics');
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,10 +8,8 @@ return new class extends Migration
|
|||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Run the migrations.
|
* Run the migrations.
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function up()
|
public function up(): void
|
||||||
{
|
{
|
||||||
Schema::create('attachments', function (Blueprint $table) {
|
Schema::create('attachments', function (Blueprint $table) {
|
||||||
$table->id();
|
$table->id();
|
||||||
@@ -25,10 +23,8 @@ return new class extends Migration
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Reverse the migrations.
|
* Reverse the migrations.
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function down()
|
public function down(): void
|
||||||
{
|
{
|
||||||
Schema::dropIfExists('attachments');
|
Schema::dropIfExists('attachments');
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,10 +8,8 @@ return new class extends Migration
|
|||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Run the migrations.
|
* Run the migrations.
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function up()
|
public function up(): void
|
||||||
{
|
{
|
||||||
Schema::table('events', function (Blueprint $table) {
|
Schema::table('events', function (Blueprint $table) {
|
||||||
$table->string('price')->default("");
|
$table->string('price')->default("");
|
||||||
@@ -20,10 +18,8 @@ return new class extends Migration
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Reverse the migrations.
|
* Reverse the migrations.
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function down()
|
public function down(): void
|
||||||
{
|
{
|
||||||
Schema::table('events', function (Blueprint $table) {
|
Schema::table('events', function (Blueprint $table) {
|
||||||
$table->dropColumn('price');
|
$table->dropColumn('price');
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user