# fluent-boards/2.2.0/app/Http/Policies/UserPolicy.php

FluentBoards – Project Management, Task Management, Goal Tracking, Kanban Board, and, Team Collaboration, version 2.2.0. 75 lines.

- Page: https://pluginprobe.com/plugins/fluent-boards/2.2.0/code/app/Http/Policies/UserPolicy.php
- Raw: https://pluginprobe.com/plugins/fluent-boards/2.2.0/raw/app/Http/Policies/UserPolicy.php
- Modified: 2026-10-12T13:32:28+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/fluent-boards/2.2.0/code/app/Http/Policies/UserPolicy.php#L10-L20`.

```php
<?php

namespace FluentBoards\App\Http\Policies;

use FluentBoards\App\Services\PermissionManager;
use FluentBoards\Framework\Http\Request\Request;

class UserPolicy extends BasePolicy
{

    /**
     * @param  Request  $request
     *
     * @return bool
     */
    public function verifyRequest(Request $request)
    {
        // Check if user has access to the app
        if (!PermissionManager::hasAppAccess()) {
            return false;
        }

        // Match the controller's URL target; query/body parameters must not override it.
        $routeParams = $request->get_url_params();
        if (!array_key_exists('id', $routeParams)) {
            return true;
        }

        $targetUserId = intval($routeParams['id']);

        return $targetUserId > 0 && PermissionManager::userCanAccessMemberProfile($targetUserId);
    }

    /** Only an authenticated Fluent Boards user may change their own name. */
    public function updateDisplayName(Request $request)
    {
        $routeParams = $request->get_url_params();
        $currentUserId = get_current_user_id();
        return $currentUserId > 0
            && (int) ($routeParams['id'] ?? 0) === $currentUserId
            && PermissionManager::isFluentBoardsUser($currentUserId);
    }

    /** Apply the same ownership check to profile photo uploads. */
    public function updateProfilePhoto(Request $request)
    {
        return $this->updateDisplayName($request);
    }

    /** MCP connections are managed only by their owner. */
    public function getMcpConnections(Request $request)
    {
        $routeParams = $request->get_url_params();
        $currentUserId = get_current_user_id();

        return $currentUserId > 0 && (int) ($routeParams['id'] ?? 0) === $currentUserId;
    }

    public function createMcpConnection(Request $request)
    {
        return $this->getMcpConnections($request);
    }

    public function revokeMcpConnection(Request $request)
    {
        return $this->getMcpConnections($request);
    }

    public function globalSearch(Request $request)
    {
        return true;
    }

}

```
