JReviews logo Docs
Menu
Version

jreviews:permission:field.write

Filters whether a user has permission to see and edit a custom field in listing/review submit and edit forms.

Filter
Field Permissions
Since 6.0.0

You need to have a working knowledge of Hooks before you get started.

Fires when checking if user can access a custom field in submit/edit forms

Parameters

Name Type Description
$canWrite bool Whether the user can edit the field
$user \JReviews\App\Models\User The user attempting to edit
$field \JReviews\App\Models\Field The custom field

Boilerplate Code

Use the boilerplate code to start using the filter, and add your own logic to modify the first argument and return it.

fwd_add_filter('jreviews:permission:field.write', function($canWrite, $user, $field)
{
    // Your code here
    
    return $canWrite;
}, 20, 3);

The , 20, N after your callback are the hook priority and the number of arguments your callback accepts. By default, a hook passes your callback only its first argument; for a filter, that is the value being filtered, so a simple function($value) { ... } needs nothing extra. If your callback declares more parameters, such as function($value, $listing) { ... }, you must add N (the parameter count, 2 here). Because N is the fourth argument to fwd_add_filter() or fwd_add_action(), you must also pass the priority (20 is the default). Leaving these off when your callback expects extra parameters causes a Too few arguments to function ... fatal error.

Development & Support
Customizations are not included with support. We provide this information to make it easier for developers to extend the functionality. From time to time we may have some availability for custom work. Get in touch to see if there's an opportunity to work together.

Examples

Prevent Changes to Custom Fields Content on Listing Updates

In this example users can fill out the content for fields `jr_fieldone`, `jr_fieldtwo`, `jr_fieldthree` while creating a new listing, but they are prevented from changing them afterwards. Only administrators will have access to the fields while editing listings. Note: You may need to check the request context to determine if this is a create or update operation.

fwd_add_filter('jreviews:permission:field.write', function($canWrite, $user, $field)
{
    $fieldNames = ['jr_fieldone', 'jr_fieldtwo', 'jr_fieldthree'];
    
    // Allow managers full access
    if ($user->isManager()) {
        return $canWrite;
    }
    
    // Check if this is an update operation (you may need to access the request)
    $isUpdate = request()->route()->getName() === 'listing.update';
    
    // Allow field access during creation, but not updates
    if ($isUpdate && in_array($field->name, $fieldNames)) {
        return false;
    }
    
    return $canWrite;
}, 20, 3);

Source Files

  • app/Policies/FieldPolicy.php