<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Gate;
use Illuminate\Validation\Rule;

class UserRequest extends FormRequest
{
	public function authorize()
	{
		return Gate::any(['admin','update'],$this->route('o'));
	}

	public function rules(Request $request)
	{
		if (! $request->isMethod('post'))
			return [];

		$o = $this->route('o');
		return [
			'email' => 'required|email|unique:users,email,'.($o?->exists ? $o->id : 0),
			'name' => 'required|min:3',
			'pgp_pubkey' => [
				'nullable',
				'min:64',
				//function ($attribute,$value,$fail) { return $fail('Not this time'); }
			],
			'alias' => 'nullable|min:1',
			'active' => 'required|boolean',
			'admin' => 'required|boolean',
			'system_id' => [
				'nullable',
				Rule::in($o?->systems->pluck('id')),
			],
		];
	}
}