File: /mnt/data/ghayatcom/ghayatcom-api/app/Http/Requests/StepEmailRequest.php
<?php
namespace App\Http\Requests;
use App\Library\CustomFailedValidation;
use Illuminate\Validation\Rule;
use Illuminate\Contracts\Validation\Validator;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Http\Exceptions\HttpResponseException;
use App\User;
class StepEmailRequest extends CustomFailedValidation
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'email' => [
'required',
'email',
function ($attribute, $value, $fail) {
$existingUser = User::where('email', $value)->first();
if ($existingUser) {
if ($existingUser->is_email_verified == 0) {
// Allow unverified users to resend OTP
return;
}
// Block already verified users
$fail(__('digimed_validation.error_response.same_email_exists'));
}
}
],
'password' => [
'required',
'string',
'min:8', // At least 8 characters
'regex:/[a-z]/', // At least one lowercase letter
'regex:/[A-Z]/', // At least one uppercase letter
'regex:/[0-9]/', // At least one digit
'regex:/[@$!%*#?&]/', // At least one special character
],
'type' => [
'required',
Rule::in(['doctor', 'patient']), // Allow only valid user types
],
];
}
/**
* Get custom messages for validator errors.
*
* @return array
*/
public function messages()
{
return [
'email.required' => __('digimed_validation.form_validation_error.email_no_req'),
'email.email' => __('digimed_validation.form_validation_error.email_no_valid'),
'email.unique' => __('digimed_validation.form_validation_error.email_exists'),
'password.required' => __('digimed_validation.form_validation_error.password_req'),
'password.min' => __('digimed_validation.form_validation_error.password_min'),
'password.regex' => __('digimed_validation.form_validation_error.password_regex'),
'type.required' => __('digimed_validation.form_validation_error.type_req'),
];
}
}