|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} */ 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; } }