. */ declare(strict_types=1); namespace FireflyIII\Api\V1\Requests\System; use FireflyIII\Rules\IsBoolean; use FireflyIII\Support\Request\ChecksLogin; use FireflyIII\Support\Request\ConvertsDataTypes; use Illuminate\Foundation\Http\FormRequest; /** * Class UserUpdateRequest */ class UserUpdateRequest extends FormRequest { use ConvertsDataTypes, ChecksLogin; /** * Logged in + owner * * @return bool */ public function authorize(): bool { return auth()->check() && auth()->user()->hasRole('owner'); } /** * Get all data from the request. * * @return array */ public function getAll(): array { $blocked = false; if (null !== $this->get('blocked')) { $blocked = $this->boolean('blocked'); } return [ 'email' => $this->string('email'), 'blocked' => $blocked, 'blocked_code' => $this->string('blocked_code'), 'role' => $this->string('role'), ]; } /** * The rules that the incoming request must be matched against. * * @return array */ public function rules(): array { $user = $this->route()->parameter('user'); return [ 'email' => sprintf('email|unique:users,email,%d', $user->id), 'blocked' => [new IsBoolean], 'blocked_code' => 'in:email_changed', 'role' => 'in:owner,demo,', ]; } }