- laravel framework upgrade frpm 7.x to 8. see also: https://laravel.com/docs/8.x/upgrade#assert-exact-json-method

- use  PHP7 null coalesce operator instead of laravel optional method
- change Breadcrumbs::register method to Bredcrumbs::for method
- composer updates
This commit is contained in:
Arno Kaimbacher 2022-08-10 11:18:10 +02:00
parent 1b2e77d907
commit 8ea540a88c
50 changed files with 616 additions and 263 deletions

View file

@ -19,12 +19,23 @@ class Handler extends ExceptionHandler
'password_confirmation',
];
/**
* A list of the inputs that are never flashed for validation exceptions.
*
* @var array<int, string>
*/
protected $dontFlash = [
'current_password',
'password',
'password_confirmation',
];
/**
* Report or log an exception.
*
* This is a great spot to send exceptions to Sentry, Bugsnag, etc.
*
* @param \Throable $exception
* @param \Throwable $exception
* @return void
*/
public function report(Throwable $exception)

View file

@ -2,7 +2,6 @@
namespace App\Http\Controllers;
//use Illuminate\Foundation\Bus\DispatchesCommands;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Foundation\Validation\ValidatesRequests;

View file

@ -37,8 +37,9 @@ class Kernel extends HttpKernel
],
'api' => [
'throttle:60,1',
'bindings',
// \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
'throttle:api',
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
];
@ -53,10 +54,12 @@ class Kernel extends HttpKernel
//'auth' => 'App\Http\Middleware\Authenticate',
'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
// 'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
// 'role' => \Spatie\Permission\Middlewares\RoleMiddleware::class,
// 'perm' => \App\Http\Middleware\PermissionMiddleware::class,

View file

@ -1,6 +1,7 @@
<?php
namespace App\Http\Middleware;
use App\Providers\RouteServiceProvider;
use Closure;
use Illuminate\Support\Facades\Auth;
@ -14,10 +15,17 @@ class RedirectIfAuthenticated
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next, $guard = null)
public function handle($request, Closure $next, $guards = [null])
{
if (Auth::guard($guard)->check()) {
return redirect('/home');
$guards = empty($guards) ? [null] : $guards;
// if (Auth::guard($guard)->check()) {
// return redirect('/home');
// }
foreach ($guards as $guard) {
if (Auth::guard($guard)->check()) {
return redirect(RouteServiceProvider::HOME);
}
}
return $next($request);

View file

@ -19,6 +19,7 @@ class TrimStrings extends BaseTrimmer
* @var array
*/
protected $except = [
'current_password',
'password',
'password_confirmation',
];

View file

@ -0,0 +1,28 @@
<?php
namespace App\Http\Middleware;
use Illuminate\Http\Middleware\TrustProxies as Middleware;
use Illuminate\Http\Request;
class TrustProxies extends Middleware
{
/**
* The trusted proxies for this application.
*
* @var array<int, string>|string|null
*/
protected $proxies;
/**
* The headers that should be used to detect proxies.
*
* @var int
*/
protected $headers =
Request::HEADER_X_FORWARDED_FOR |
Request::HEADER_X_FORWARDED_HOST |
Request::HEADER_X_FORWARDED_PORT |
Request::HEADER_X_FORWARDED_PROTO |
Request::HEADER_X_FORWARDED_AWS_ELB;
}

View file

@ -3,10 +3,13 @@
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use App\Models\Dataset;
class Collection extends Model
{
use HasFactory;
public $timestamps = false;
//mass assignable
protected $fillable = [

View file

@ -3,11 +3,14 @@
namespace App\Models;
use App\Models\Collection;
use App\Models\Dataset;
// use App\Models\Dataset;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory;
class CollectionRole extends Model
{
use HasFactory;
protected $table = 'collections_roles';
public $timestamps = false;
protected $fillable = [

View file

@ -2,11 +2,13 @@
namespace App\Models;
use App\Models\Dataset;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use DateTimeInterface;
class Coverage extends Model
{
use HasFactory;
protected $table = 'coverage';
public $timestamps = true;
protected $dateFormat = 'Y-m-d H:i:s';

View file

@ -2,6 +2,7 @@
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use App\Library\Xml\DatasetExtension;
use App\Models\Collection;
use App\Models\Coverage;
@ -20,7 +21,7 @@ use Illuminate\Database\Eloquent\Model;
class Dataset extends Model
{
use DatasetExtension;
use DatasetExtension, HasFactory;
protected $table = 'documents';
//public $timestamps = false; //default true

View file

@ -3,9 +3,11 @@ namespace App\Models;
use App\Models\Dataset;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory;
class DatasetIdentifier extends Model
{
use HasFactory;
protected $table = 'dataset_identifiers';
protected $guarded = array();
public $timestamps = true;

View file

@ -4,9 +4,11 @@ namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use App\Models\Dataset;
use Illuminate\Database\Eloquent\Factories\HasFactory;
class DatasetReference extends Model
{
use HasFactory;
protected $table = 'document_references';
public $timestamps = false;

View file

@ -3,9 +3,11 @@ namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use App\Models\Dataset;
use Illuminate\Database\Eloquent\Factories\HasFactory;
class Description extends Model
{
use HasFactory;
protected $table = 'dataset_abstracts';
public $timestamps = false;

View file

@ -5,9 +5,11 @@ namespace App\Models;
use App\Models\Dataset;
use App\Models\HashValue;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory;
class File extends Model
{
use HasFactory;
protected $table = 'document_files';
public $timestamps = true;

View file

@ -3,9 +3,11 @@ namespace App\Models;
use App\Models\Dataset;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory;
class GeolocationBox extends Model
{
use HasFactory;
protected $table = 'geolocation_box';
public $timestamps = false;

View file

@ -4,9 +4,11 @@ namespace App\Models;
use App\Models\File;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory;
class HashValue extends Model
{
use HasFactory;
protected $table = 'file_hashvalues';
public $timestamps = false;

View file

@ -2,10 +2,11 @@
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory;
class Language extends Model
{
use HasFactory;
//protected $table = 'languages';
public $timestamps = false;

View file

@ -3,9 +3,11 @@ namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use App\Models\Dataset;
use Illuminate\Database\Eloquent\Factories\HasFactory;
class License extends Model
{
use HasFactory;
protected $table = 'document_licences';
public $timestamps = false;

View file

@ -3,8 +3,9 @@
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory;
class Message extends Model
{
//
use HasFactory;
}

View file

@ -2,10 +2,11 @@
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory;
class MimeType extends Model
{
use HasFactory;
protected $table = 'mime_types';
// for using $input = $request->all();

View file

@ -8,9 +8,11 @@ use App\Models\User;
use Illuminate\Database\Eloquent\Model;
use Astrotomic\Translatable\Contracts\Translatable as TranslatableContract;
use Astrotomic\Translatable\Translatable;// use Dimsav\Translatable\Translatable;
use Illuminate\Database\Eloquent\Factories\HasFactory;
class Page extends Model implements TranslatableContract
{
use HasFactory;
use ModelTrait;
use Translatable; // 2. To add translation methods

View file

@ -3,9 +3,11 @@
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory;
class PageTranslation extends Model
{
Use HasFactory;
public $timestamps = false;
protected $fillable = ['title', 'description'];
protected $guarded = ['id'];

View file

@ -4,9 +4,11 @@ namespace App\Models;
use App\Models\Dataset;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory;
class Person extends Model
{
use HasFactory;
protected $fillable = [
'academic_title',
'date_of_birth',

View file

@ -3,10 +3,11 @@ namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use App\Models\Dataset;
use Illuminate\Database\Eloquent\Factories\HasFactory;
class Project extends Model
{
use HasFactory;
//protected $table = 'projects';
// for using $input = $request->all();

View file

@ -3,9 +3,11 @@
namespace App\Models;
use Zizaco\Entrust\EntrustRole;
use Illuminate\Database\Eloquent\Factories\HasFactory;
class Role extends EntrustRole
{
use HasFactory;
/**
* The attributes that are mass assignable.
*

View file

@ -4,9 +4,11 @@ namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use App\Models\Dataset;
use Illuminate\Database\Eloquent\Factories\HasFactory;
class Subject extends Model
{
Use HasFactory;
// protected $table = 'document_subjects';
protected $table = 'dataset_subjects';
public $timestamps = false;

View file

@ -3,9 +3,11 @@ namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use App\Models\Dataset;
use Illuminate\Database\Eloquent\Factories\HasFactory;
class Title extends Model
{
use HasFactory;
protected $table = 'dataset_titles';
public $timestamps = false;

View file

@ -1,9 +1,11 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Notifications\Notifiable;
// use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Zizaco\Entrust\Traits\EntrustUserTrait;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Collection;
@ -12,7 +14,7 @@ use App\Models\Dataset;
class User extends Authenticatable
{
// use Authenticatable, CanResetPassword, Authorizable;
use Notifiable;
use HasFactory, Notifiable;
// use HasRoles;
use EntrustUserTrait;

View file

@ -2,7 +2,7 @@
namespace App\Providers;
use Illuminate\Support\Facades\Gate;
// use Illuminate\Support\Facades\Gate;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
class AuthServiceProvider extends ServiceProvider

View file

@ -3,19 +3,30 @@ namespace App\Providers;
use Illuminate\Support\Facades\Route;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
use Illuminate\Http\Request;
use Illuminate\Cache\RateLimiting\Limit;
use Illuminate\Support\Facades\RateLimiter;
class RouteServiceProvider extends ServiceProvider
{
/**
* The path to the "home" route for your application.
*
* This is used by Laravel authentication to redirect users after login.
*
* @var string
*/
public const HOME = '/settings';
/**
* This namespace is applied to the controller routes in your routes file.
* If specified, this namespace is automatically applied to your controller routes.
*
* In addition, it is set as the URL generator's root namespace.
*
* @var string
*/
protected $namespace = 'App\Http\Controllers';
public const HOME = '/settings';
/**
* Define your route model bindings, pattern filters, etc.
@ -25,7 +36,19 @@ class RouteServiceProvider extends ServiceProvider
*/
public function boot()
{
parent::boot();
// parent::boot();
$this->configureRateLimiting();
$this->routes(function () {
// Route::prefix('api')
Route::middleware('api')
->namespace($this->namespace)
->group(base_path('routes/api.php'));
Route::middleware('web')
->namespace($this->namespace)
->group(base_path('routes/web.php'));
});
//
}
@ -73,4 +96,17 @@ class RouteServiceProvider extends ServiceProvider
->namespace($this->namespace)
->group(base_path('routes/api.php'));
}
/**
* Configure the rate limiters for the application.
*
* @return void
*/
protected function configureRateLimiting()
{
RateLimiter::for('api', function (Request $request) {
return Limit::perMinute(60)->by(optional($request->user())->id ?: $request->ip());
});
}
}