<?php

namespace App\Providers;

use App\Role;
use App\User;
use Illuminate\Support\Facades\Gate;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
use Laravel\Passport\Passport;

class AuthServiceProvider extends ServiceProvider
{
    /**
     * The policy mappings for the application.
     *
     * @var array
     */
    protected $policies = [
        'App\Model' => 'App\Policies\ModelPolicy',
    ];

    /**
     * Register any authentication / authorization services.
     *
     * @return void
     */
    public function boot()
    {
        $this->registerPolicies();

        $user = \Auth::user();

        Passport::routes();


        // Auth gates for: User management
        Gate::define('user_management_access', function ($user) {
            return in_array($user->role_id, [1]);
        });

        // Auth gates for: Roles
        Gate::define('role_access', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('role_create', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('role_edit', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('role_view', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('role_delete', function ($user) {
            return in_array($user->role_id, [1]);
        });

        // Auth gates for: Users
        Gate::define('user_access', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('user_create', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('user_edit', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('user_view', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('user_delete', function ($user) {
            return in_array($user->role_id, [1]);
        });

        // Auth gates for: Локації
        Gate::define('Локації_access', function ($user) {
            return in_array($user->role_id, [1]);
        });

        // Auth gates for: Region
        Gate::define('region_access', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('region_create', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('region_edit', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('region_view', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('region_delete', function ($user) {
            return in_array($user->role_id, [1]);
        });

        // Auth gates for: City
        Gate::define('city_access', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('city_create', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('city_edit', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('city_view', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('city_delete', function ($user) {
            return in_array($user->role_id, [1]);
        });

        // Auth gates for: Discrict
        Gate::define('discrict_access', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('discrict_create', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('discrict_edit', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('discrict_view', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('discrict_delete', function ($user) {
            return in_array($user->role_id, [1]);
        });

        // Auth gates for: Street
        Gate::define('street_access', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('street_create', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('street_edit', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('street_view', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('street_delete', function ($user) {
            return in_array($user->role_id, [1]);
        });

        // Auth gates for: Infrastructure
        Gate::define('infrastructure_access', function ($user) {
            return in_array($user->role_id, [1, 2]);
        });

        // Auth gates for: Marker type
        Gate::define('marker_type_access', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('marker_type_create', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('marker_type_edit', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('marker_type_view', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('marker_type_delete', function ($user) {
            return in_array($user->role_id, [1]);
        });

        // Auth gates for: Marker
        Gate::define('marker_access', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('marker_create', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('marker_edit', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('marker_view', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('marker_delete', function ($user) {
            return in_array($user->role_id, [1]);
        });

        // Auth gates for: Banner
        Gate::define('baner_access', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('baner_create', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('baner_edit', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('baner_view', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('baner_delete', function ($user) {
            return in_array($user->role_id, [1]);
        });

        // Auth gates for: Seo content
        Gate::define('seo_content_access', function ($user) {
            return in_array($user->role_id, [1, 3]);
        });
        Gate::define('seo_content_create', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('seo_content_edit', function ($user) {
            return in_array($user->role_id, [1, 3]);
        });
        Gate::define('seo_content_view', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('seo_content_delete', function ($user) {
            return in_array($user->role_id, [1]);
        });

        // Auth gates for: Street name
        Gate::define('street_name_access', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('street_name_create', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('street_name_edit', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('street_name_view', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('street_name_delete', function ($user) {
            return in_array($user->role_id, [1]);
        });

        // Auth gates for: Residential complex options
        Gate::define('residential_complex_option_access', function ($user) {
            return in_array($user->role_id, [1]);
        });

        // Auth gates for: Technology building
        Gate::define('technology_building_access', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('technology_building_create', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('technology_building_edit', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('technology_building_view', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('technology_building_delete', function ($user) {
            return in_array($user->role_id, [1]);
        });

        // Auth gates for: Heating
        Gate::define('heating_access', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('heating_create', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('heating_edit', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('heating_view', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('heating_delete', function ($user) {
            return in_array($user->role_id, [1]);
        });

        // Auth gates for: Class housing
        Gate::define('class_housing_access', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('class_housing_create', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('class_housing_edit', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('class_housing_view', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('class_housing_delete', function ($user) {
            return in_array($user->role_id, [1]);
        });

        // Auth gates for: Stage of construction
        Gate::define('stage_of_construction_access', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('stage_of_construction_create', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('stage_of_construction_edit', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('stage_of_construction_view', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('stage_of_construction_delete', function ($user) {
            return in_array($user->role_id, [1]);
        });

        // Auth gates for: Bank
        Gate::define('bank_access', function ($user) {
            return in_array($user->role_id, [1, 2]);
        });
        Gate::define('bank_create', function ($user) {
            return in_array($user->role_id, [1, 2]);
        });
        Gate::define('bank_edit', function ($user) {
            return in_array($user->role_id, [1, 2]);
        });
        Gate::define('bank_view', function ($user) {
            return in_array($user->role_id, [1, 2]);
        });
        Gate::define('bank_delete', function ($user) {
            return in_array($user->role_id, [1, 2]);
        });

        // Auth gates for: Room count
        Gate::define('room_count_access', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('room_count_create', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('room_count_edit', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('room_count_view', function ($user) {
            return in_array($user->role_id, [1, 2]);
        });
        Gate::define('room_count_delete', function ($user) {
            return in_array($user->role_id, [1]);
        });

        // Auth gates for: Room type
        Gate::define('room_type_access', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('room_type_create', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('room_type_edit', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('room_type_view', function ($user) {
            return in_array($user->role_id, [1, 2]);
        });
        Gate::define('room_type_delete', function ($user) {
            return in_array($user->role_id, [1]);
        });

        // Auth gates for: Other option
        Gate::define('other_option_access', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('other_option_create', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('other_option_edit', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('other_option_view', function ($user) {
            return in_array($user->role_id, [1, 2]);
        });
        Gate::define('other_option_delete', function ($user) {
            return in_array($user->role_id, [1]);
        });

        // Auth gates for: Developer
        Gate::define('developer_access', function ($user) {
            return in_array($user->role_id, [1, 3]);
        });
        Gate::define('developer_create', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('developer_edit', function ($user) {
            return in_array($user->role_id, [1, 3]);
        });
        Gate::define('developer_view', function ($user) {
            return in_array($user->role_id, [1, 3]);
        });
        Gate::define('developer_delete', function ($user) {
            return in_array($user->role_id, [1]);
        });

        // Auth gates for: Residental complex icon
        Gate::define('residental_complex_icon_access', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('residental_complex_icon_create', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('residental_complex_icon_edit', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('residental_complex_icon_view', function ($user) {
            return in_array($user->role_id, [1, 2]);
        });
        Gate::define('residental_complex_icon_delete', function ($user) {
            return in_array($user->role_id, [1]);
        });

        // Auth gates for: Type property
        Gate::define('type_property_access', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('type_property_create', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('type_property_edit', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('type_property_view', function ($user) {
            return in_array($user->role_id, [1, 2]);
        });
        Gate::define('type_property_delete', function ($user) {
            return in_array($user->role_id, [1]);
        });

        // Auth gates for: Floor
        Gate::define('floor_access', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('floor_create', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('floor_edit', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('floor_view', function ($user) {
            return in_array($user->role_id, [1, 2]);
        });
        Gate::define('floor_delete', function ($user) {
            return in_array($user->role_id, [1]);
        });

        // Auth gates for: Residential complex
        Gate::define('residential_complex_access', function ($user) {
            return in_array($user->role_id, [1, 3]);
        });
        Gate::define('residential_complex_create', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('residential_complex_edit', function ($user) {
            return in_array($user->role_id, [1, 3]);
        });
        Gate::define('residential_complex_view', function ($user) {
            return in_array($user->role_id, [1, 3]);
        });
        Gate::define('residential_complex_delete', function ($user) {
            return in_array($user->role_id, [1]);
        });

        // Auth gates for: Customer rating
        Gate::define('customer_rating_access', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('customer_rating_create', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('customer_rating_edit', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('customer_rating_view', function ($user) {
            return in_array($user->role_id, [1, 2]);
        });
        Gate::define('customer_rating_delete', function ($user) {
            return in_array($user->role_id, [1]);
        });

        // Auth gates for: Secret buyer rating
        Gate::define('secret_buyer_rating_access', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('secret_buyer_rating_create', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('secret_buyer_rating_edit', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('secret_buyer_rating_view', function ($user) {
            return in_array($user->role_id, [1, 2]);
        });
        Gate::define('secret_buyer_rating_delete', function ($user) {
            return in_array($user->role_id, [1]);
        });

        // Auth gates for: Document type
        Gate::define('document_type_access', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('document_type_create', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('document_type_edit', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('document_type_view', function ($user) {
            return in_array($user->role_id, [1, 2]);
        });
        Gate::define('document_type_delete', function ($user) {
            return in_array($user->role_id, [1]);
        });

        // Auth gates for: Document
        Gate::define('document_access', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('document_create', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('document_edit', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('document_view', function ($user) {
            return in_array($user->role_id, [1, 2]);
        });
        Gate::define('document_delete', function ($user) {
            return in_array($user->role_id, [1]);
        });

        // Auth gates for: Promotion
        Gate::define('promotion_access', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('promotion_create', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('promotion_edit', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('promotion_view', function ($user) {
            return in_array($user->role_id, [1, 2]);
        });
        Gate::define('promotion_delete', function ($user) {
            return in_array($user->role_id, [1]);
        });

        // Auth gates for: Course of construction
        Gate::define('course_of_construction_access', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('course_of_construction_create', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('course_of_construction_edit', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('course_of_construction_view', function ($user) {
            return in_array($user->role_id, [1, 2]);
        });
        Gate::define('course_of_construction_delete', function ($user) {
            return in_array($user->role_id, [1]);
        });

        // Auth gates for: Filter
        Gate::define('filter_access', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('filter_create', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('filter_edit', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('filter_view', function ($user) {
            return in_array($user->role_id, [1, 2]);
        });
        Gate::define('filter_delete', function ($user) {
            return in_array($user->role_id, [1]);
        });

        // Auth gates for: Section type
        Gate::define('section_type_access', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('section_type_create', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('section_type_edit', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('section_type_view', function ($user) {
            return in_array($user->role_id, [1, 2]);
        });
        Gate::define('section_type_delete', function ($user) {
            return in_array($user->role_id, [1]);
        });

        // Auth gates for: Section
        Gate::define('section_access', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('section_create', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('section_edit', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('section_view', function ($user) {
            return in_array($user->role_id, [1, 2]);
        });
        Gate::define('section_delete', function ($user) {
            return in_array($user->role_id, [1]);
        });

        // Auth gates for: Planning
        Gate::define('planning_access', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('planning_create', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('planning_edit', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('planning_view', function ($user) {
            return in_array($user->role_id, [1, 2]);
        });
        Gate::define('planning_delete', function ($user) {
            return in_array($user->role_id, [1]);
        });

        // Auth gates for: Planning flor
        Gate::define('planning_flor_access', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('planning_flor_create', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('planning_flor_edit', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('planning_flor_view', function ($user) {
            return in_array($user->role_id, [1, 2]);
        });
        Gate::define('planning_flor_delete', function ($user) {
            return in_array($user->role_id, [1]);
        });

        // Auth gates for: Wishlist user residental com
        Gate::define('wishlist_user_residental_com_access', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('wishlist_user_residental_com_create', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('wishlist_user_residental_com_edit', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('wishlist_user_residental_com_view', function ($user) {
            return in_array($user->role_id, [1, 2]);
        });
        Gate::define('wishlist_user_residental_com_delete', function ($user) {
            return in_array($user->role_id, [1]);
        });

        // Auth gates for: Residential complex character
        Gate::define('residential_complex_character_access', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('residential_complex_character_create', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('residential_complex_character_edit', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('residential_complex_character_view', function ($user) {
            return in_array($user->role_id, [1, 2]);
        });
        Gate::define('residential_complex_character_delete', function ($user) {
            return in_array($user->role_id, [1]);
        });

        // Auth gates for: Wishlist user developer
        Gate::define('wishlist_user_developer_access', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('wishlist_user_developer_create', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('wishlist_user_developer_edit', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('wishlist_user_developer_view', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('wishlist_user_developer_delete', function ($user) {
            return in_array($user->role_id, [1]);
        });

        // Auth gates for: Subscription
        Gate::define('subscription_access', function ($user) {
            return in_array($user->role_id, [1]);
        });

        // Auth gates for: Subscription rc
        Gate::define('subscription_rc_access', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('subscription_rc_create', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('subscription_rc_edit', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('subscription_rc_view', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('subscription_rc_delete', function ($user) {
            return in_array($user->role_id, [1]);
        });

        // Auth gates for: Subscription developer
        Gate::define('subscription_developer_access', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('subscription_developer_create', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('subscription_developer_edit', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('subscription_developer_view', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('subscription_developer_delete', function ($user) {
            return in_array($user->role_id, [1]);
        });

        // Auth gates for: Subscription site
        Gate::define('subscription_site_access', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('subscription_site_create', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('subscription_site_edit', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('subscription_site_view', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('subscription_site_delete', function ($user) {
            return in_array($user->role_id, [1]);
        });

        // Auth gates for: Customer appeal option
        Gate::define('customer_appeal_option_access', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('customer_appeal_option_create', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('customer_appeal_option_edit', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('customer_appeal_option_view', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('customer_appeal_option_delete', function ($user) {
            return in_array($user->role_id, [1]);
        });

        // Auth gates for: Customer appeal
        Gate::define('customer_appeal_access', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('customer_appeal_create', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('customer_appeal_edit', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('customer_appeal_view', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('customer_appeal_delete', function ($user) {
            return in_array($user->role_id, [1]);
        });

        // Auth gates for: Street name type
        Gate::define('street_name_type_access', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('street_name_type_create', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('street_name_type_edit', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('street_name_type_view', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('street_name_type_delete', function ($user) {
            return in_array($user->role_id, [1]);
        });

        // Auth gates for: Customer appeal
        Gate::define('presentation_phone_access', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('presentation_phone_create', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('presentation_phone_edit', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('presentation_phone_view', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('presentation_phone_delete', function ($user) {
            return in_array($user->role_id, [1]);
        });

        // Auth gates for: Customer appeal
        Gate::define('currency_rate_access', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('currency_rate_create', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('currency_rate_edit', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('currency_rate_view', function ($user) {
            return in_array($user->role_id, [1]);
        });
        Gate::define('currency_rate_delete', function ($user) {
            return in_array($user->role_id, [1]);
        });
    }
}
