53 lines
1.3 KiB
PHP
53 lines
1.3 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Requests\Support;
|
|
|
|
use Illuminate\Contracts\Validation\ValidationRule;
|
|
use Illuminate\Foundation\Http\FormRequest;
|
|
|
|
class SupportTokenRequest extends FormRequest
|
|
{
|
|
public function authorize(): bool
|
|
{
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* @return array<string, ValidationRule|array<mixed>|string>
|
|
*/
|
|
public function rules(): array
|
|
{
|
|
return [
|
|
'login' => ['required', 'string'],
|
|
'password' => ['required', 'string'],
|
|
'abilities' => ['sometimes', 'array'],
|
|
'abilities.*' => ['string'],
|
|
];
|
|
}
|
|
|
|
/**
|
|
* @return array{email?: string, username?: string, password: string, abilities?: array<int, string>}
|
|
*/
|
|
public function credentials(): array
|
|
{
|
|
$login = $this->string('login')->trim()->value();
|
|
|
|
$credentials = [
|
|
'password' => $this->string('password')->value(),
|
|
];
|
|
|
|
if (filter_var($login, FILTER_VALIDATE_EMAIL)) {
|
|
$credentials['email'] = $login;
|
|
} else {
|
|
$credentials['username'] = $login;
|
|
}
|
|
|
|
$abilities = $this->input('abilities');
|
|
if (is_array($abilities) && $abilities !== []) {
|
|
$credentials['abilities'] = array_values(array_filter($abilities, 'is_string'));
|
|
}
|
|
|
|
return $credentials;
|
|
}
|
|
}
|