Skip to main content

Black Friday 2025! Only until December 1st: coupon FRIDAY25 for 40% off Yearly/Lifetime membership!

Read more here

app/Rules/ForbiddenContentRule.php

Open in GitHub
use App\Types\Rule;
use Illuminate\Support\Str;
 
class ForbiddenContentRule extends Rule
{
public function message() : string
{
return 'The supplied value cannot be used.';
}
 
public function passes($attribute, $value) : bool
{
$value = Str::lower($value);
$current = Str::lower($this->parameters[1]);
$exclusions = config("system.forbidden.{$this->parameters[0]}");
 
if (Str::endsWith($current, $exclusions)) {
return true;
}
 
return ! Str::endsWith($value, $exclusions);
}
}

app/Requests/Account/UpdateRequest.php

Open in GitHub
use App\Types\FormRequest;
use App\Rules\ForbiddenContentRule;
 
class UpdateRequest extends FormRequest
{
public function rules() : array
{
$name = ForbiddenContentRule::make('names', user()->name);
$handle = ForbiddenContentRule::make('names', user()->handle);
$email = ForbiddenContentRule::make('domains', user()->email);
 
return [
'name' => ['sometimes', 'bail', 'required', 'string', 'min:1', 'max:50', $name],
'handle' => ['sometimes', 'bail', 'required', 'string', 'min:3', 'max:30', $handle, 'unique:users,handle,' . user()->id],
'email' => ['sometimes', 'bail', 'required', 'string', 'min:6', 'max:255', 'email', $email, 'unique:users,email,' . user()->id],
'biography' => 'sometimes|bail|nullable|string|min:5|max:500',
'website' => 'sometimes|bail|nullable|string|min:11|max:100|url',
'donate' => 'sometimes|bail|nullable|string|min:11|max:100|url',
'github' => 'sometimes|bail|nullable|string|min:11|max:100|url',
'twitter' => 'sometimes|bail|nullable|string|min:11|max:100|url',
'linkedin' => 'sometimes|bail|nullable|string|min:11|max:100|url',
'youtube' => 'sometimes|bail|nullable|string|min:11|max:100|url',
'facebook' => 'sometimes|bail|nullable|string|min:11|max:100|url',
];
}
}

We'd Love Your Feedback

Tell us what you like or what we can improve

Feel free to share anything you like or dislike about this page or the platform in general.