मेरे पास ईमेल सत्यापन में एक कोड है जिसमें उपयोगकर्ता पंजीकरण करते हैं और पंजीकरण करने पर वह पंजीकरण पुष्टिकरण ईमेल स्वीकार करेंगे। मैं वैध ईमेल पर टोकन भेजने को शामिल करने के लिए संशोधन के साथ लार्वा मेक ऑथ का उपयोग कर रहा हूं। सफल पंजीकरण पर एक पुष्टिकरण संदेश दिखाई देना चाहिए लेकिन ऐसा नहीं होगा।

यहाँ कोड है:

रजिस्टर नियंत्रक

<?php

namespace App\Http\Controllers\Auth;

use App\User;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Validator;
use Illuminate\Foundation\Auth\RegistersUsers;
use Mail;
use Illuminate\HTTP\Request;

class RegisterController extends Controller
{
    /*
    |--------------------------------------------------------------------------
    | Register Controller
    |--------------------------------------------------------------------------
    |
    | This controller handles the registration of new users as well as their
    | validation and creation. By default this controller uses a trait to
    | provide this functionality without requiring any additional code.
    |
    */

    use RegistersUsers;

    /**
     * Where to redirect users after registration.
     *
     * @var string
     */
    protected $redirectTo = '/home';

    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('guest');
    }

    /**
     * Get a validator for an incoming registration request.
     *
     * @param  array  $data
     * @return \Illuminate\Contracts\Validation\Validator
     */
    protected function validator(array $data)
    {
        return Validator::make($data, [
            'name' => 'required|string|max:255',
            'email' => 'required|string|email|max:255|unique:users',
            'password' => 'required|string|min:6|confirmed',
        ]);
    }

    /**
     * Create a new user instance after a valid registration.
     *
     * @param  array  $data
     * @return \App\User
     */
    protected function create(array $data)
    {
        return User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => bcrypt($data['password']),
        ]);
    }
    protected function register(Request $request){
        $input = $request->all();
        $validator = $this->validator($input);

        if ($validator->passes()){
            $data = $this->create($input)->toArray();
            $data['token'] = str_random(25);

            $user= User::find($data['id']);
            $user->token=$data['token'];
            $user->save();

            Mail::send('mail.confirmation', $data, function($message) use($data){
                $message->to($data['email']);
                $message->subject('Registration Confirmation');

            });
            return redirect(route('login'))->with('status','confirmation email has been sent');
        }
        return redirect(route('login'))->with('status', $validator->errors);
    }
    public function confirmation($token)
    {
        $user = User::where('token', $token)->first();
        if(!is_null($user)){
            $user->confirmed=1;
            $user->token='';
            $user->save();
            return redirect(route('login'))->with('status','complete actibeyt');
        }
        return redirect(route('login'))->with('status','something is wrong');
    }
}
1
yobab77 26 मई 2018, 10:19

3 जवाब

सबसे बढ़िया उत्तर

Validator पर errors नाम की कोई प्रॉपर्टी नहीं है, हालांकि, एक तरीका है।

साधारण परिवर्तन:

return redirect(route('login'))->with('status', $validator->errors());
2
Rwd 26 मई 2018, 10:34

पहले अपने रिटर्न फंक्शन को इसके साथ बदलें: -

return redirect()->route('login')->with('status','confirmation email has been sent');
0
Rajesh kumar 26 मई 2018, 10:23

ऐसा लगता है कि आपने पहले ही तत्काल समस्या का समाधान कर लिया है, लेकिन मैंने बिना सर्वर-साइड कोड के इस विशेष दर्द बिंदु को हल करने के लिए एक वेब सेवा बनाई: clicktoverify.net। इसमें केवल एक जेएस शामिल है और कोड की कुछ पंक्तियां शामिल हैं:

<form method="POST" action="whatever" id="my-form">
  <input type="email" name="email" />
  <input type="submit" name="sign up!" />
</form>
<script type="text/javascript" src="https://cdn.clicktoverify.net/ctv.js"></script>
<script type="text/javascript">
form = document.getElementById("my-form");
form.addEventListener('submit', function(event) {
  event.preventDefault();

  alert("We've sent a verification email to this address. Please check your inbox.");
  verifier = new CTV();
  verifier.verify({
      email: form['email'].value,
      public_api_key: "71917c69-b8e8-3992-adf5-c2de3b89c17e", //you'll get your own when you create an account
      success: function(xhr) {
          alert("Your email address is verified!");
          form.submit();
      },
      error: function(xhr) {
          alert("Something went wrong! We couldn't verify your email address.");
      }
    });
});
</script>
0
C. Tindall 26 मई 2018, 23:45