<?php

namespace App\Http\Requests;

use App\Exceptions\InvalidRequestException;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Contracts\Validation\Validator;
use Illuminate\Http\Exceptions\HttpResponseException;

class BaseRequest extends FormRequest
{

    protected function failedValidation(Validator $validator)
    {
        $errors = $validator->errors();
        $firstError = $errors->first();
        $fields = $errors->keys();
        \Log::channel("formRequest")->info(
            sprintf(
                "错误:请求参数 %s,错误原因:%s",
                print_r(request()->all(), true),
                json_encode($errors->all(), JSON_UNESCAPED_UNICODE)
            )
        );
        throw new InvalidRequestException($firstError, $fields[0]);
    }


    public function authorize()
    {
        return true;
    }

    public function validated()
    {
        return $this->validator->validated();
    }


    public function __get($key)
    {
        if ($key == 'user') {
            return request()->user;
        }
    }


}