dishplanner/app/Providers/AppServiceProvider.php

59 lines
1.9 KiB
PHP
Raw Normal View History

2025-10-13 14:57:11 +02:00
<?php
namespace App\Providers;
use App\Exceptions\CustomException;
use App\Models\Dish;
use App\Models\Planner;
2025-10-13 14:57:11 +02:00
use App\Models\Schedule;
use App\Models\ScheduledUserDish;
use App\Models\User;
use App\Models\UserDish;
use Laravel\Cashier\Cashier;
2025-10-13 14:57:11 +02:00
use DishPlanner\Dish\Policies\DishPolicy;
use DishPlanner\Schedule\Policies\SchedulePolicy;
use DishPlanner\ScheduledUserDish\Policies\ScheduledUserDishPolicy;
use DishPlanner\User\Policies\UserPolicy;
use DishPlanner\UserDish\Policies\UserDishPolicy;
use Illuminate\Contracts\Debug\ExceptionHandler;
use Illuminate\Foundation\Exceptions\Handler as BaseHandler;
use Illuminate\Support\Facades\Gate;
use Illuminate\Support\Facades\URL;
use Illuminate\Support\ServiceProvider;
use Throwable;
class AppServiceProvider extends ServiceProvider
{
public function register(): void
{
$this->app->bind(ExceptionHandler::class, function ($app) {
return new class($app) extends BaseHandler {
public function render($request, Throwable $e)
{
// Handle specific custom exception
if ($e instanceof CustomException) {
return response()->json([
'success' => false,
'payload' => null,
'errors' => [$e->getMessage()],
], $e->getCode() ?? 500);
}
return parent::render($request, $e);
}
};
});
}
public function boot(): void
{
Cashier::useCustomerModel(Planner::class);
2025-10-13 14:57:11 +02:00
Gate::policy(Dish::class, DishPolicy::class);
Gate::policy(Schedule::class, SchedulePolicy::class);
Gate::policy(ScheduledUserDish::class, ScheduledUserDishPolicy::class);
Gate::policy(User::class, UserPolicy::class);
Gate::policy(UserDish::class, UserDishPolicy::class);
}
}