HEX
Server: nginx/1.24.0
System: Linux DGT-WORDPRESS-VM-SERVER 6.14.0-1017-azure #17~24.04.1-Ubuntu SMP Mon Dec 1 20:10:50 UTC 2025 x86_64
User: ubuntu (1000)
PHP: 8.4.12
Disabled: NONE
Upload Files
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'),

        ];
    }
}