all(),[ 'name'=> 'required', 'contact_number'=> 'required|unique:users,contact_number', 'email'=> 'required|unique:users,email', 'password'=> 'required|confirmed|min:8|regex:(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$', 'password' => 'min:8|required_with:password_confirmation|same:password_confirmation', 'password_confirmation' => 'min:8' ]); if ($validator->fails()) { return response()->json(['error'=>$validator->errors(),'status'=>204]); } try { $otp = $this->generateOtp(); $data = new Tempuser(); $data->name = $request->input('name'); $data->contact_number = $request->input('contact_number'); $data->email = $request->input('email'); $data->password = Hash::make($request->input('password')); $data->otp = $otp['otp']; $data->expires_at = $otp['expires_at']; $data->save(); return response()->json(['message'=>'OTP has been sent to your mail and phone','user_id'=>$data->id, 'status'=>200]); } catch (\Exception $e) { return response()->json(['error' => 'Netwrok Error! Please try again after sometime.', 'status'=>500]); } } // otp generating function public function generateOtp() { // Create a New OTP $otp_array = [ 'otp' => rand(1234, 9999), 'expires_at' => Carbon::now('Asia/colombo')->addMinutes(2)->toDateTimeString() ]; return $otp_array; } }