مشکل در ارسال مجدد کد

پرسیده شده
فعالیت 1683 روز پیش
دیده شده 947 بار
0

سلام
استاد من وقتی بعد از ثبت نام و لاگین کردنش کاربر براش ارسال مجدد رو انجام میدم مشکلی وجود نداره ولی وقتی کاربر لاگ اوت میکنه و وارد میشه دوباره میخواد کد رو دریافت کنه ارور 404 میگیره و کد جدید رو ارسال نمیکنه میگه این Route وجود نداره

فایل پیوست

عرفان مهدوی
عرفان مهدوی

23 شهریور 98

0
حذف شده

سلام میتونی کد های روت و کنترولرت رو بفرستی ؟ 

فایل پیوست

Steven R McQueen

توسط

Steven R McQueen

24 شهریور 98

0
حذف شده

سلام بله 

این کنترلر ارسال کد

class VerificationController extends Controller
{

    protected $twoFactor;

    public function __construct(TwoFactorAuthentication $twoFactor)
    {
        $this->middleware('auth');
        $this->twoFactor = $twoFactor;
    }

    public function showVerifyForm()
    {
        return view('Auth.Verify');
    }


    public function activate()
    {

        $response = $this->twoFactor->requestCode(Auth::user());

        return $response == $this->twoFactor::CODE_SENT ? redirect()->route('auth.register.Verify.form') : back()->with('sendCodeFail', 'ارسال کد با خطا مواجه شد لطفا چند دقیقه دیگر دوباره تلاش کنید !');
    }

    public function confirm(Request $request)
    {
        $this->validateForm($request);
        $response = $this->twoFactor->activate();

        if ($response === $this->twoFactor::USER_ACTIVATED) {
            return redirect()->route('home');
        } else {
            return back()->with('sendCodeFail', 'کد وارد شده معتبر نمیباشد .');
        }
    }

    protected function validateForm(Request $request)
    {

        $request->validate([
            'code' => ['required', 'numeric', 'digits:4'],
        ], [
                'code.required' => 'لطفا کد را وارد کنید',
                'code.numeric' => 'کد فعال سازی مقداری عددی میباشد',
                'code.digits' => 'کد نا معتبر میباشد'

            ]

        );

    }

    public function resent(Request $request)
    {

        $this->twoFactor->resent();

        return redirect()->route('auth.register.Verify.form')->with('success', 'کد احراز هویت دوباره برای شما ارسال شد');
    }

}

این route
 

 Route::get('register/verify/resent', 'VerificationController@resent')->name('auth.register.Verify.resent');

مدل two Factor

class TwoFactor extends Model
{
    const CODE_EXPIRY = 60;

   protected $table='two_factor';
   protected $fillable=[
    'user_id',
       'code'
   ];

    public static function generateCodeFor(User $user)
    {
        $user->code()->delete();
        return static::create([
            'user_id' => $user->id,
            'code' => mt_rand(1000, 9999)
        ]);
    }

    public function getCodeForSendAttribute()
    {
        return __('auth.CodeForSend' , ['code' =>$this->code]);
    }

    public function send()
    {

      SendSms::dispatchNow($this->user , $this->code_for_send);

    }

    public function user(){

        return $this->belongsTo(User::class);
    }

   public function isExpired(){

        return $this->created_at->diffInSeconds(now()) > static::CODE_EXPIRY;
    }

    public function isEqualWith(string $code){
        return $this->code == $code;
    }

}

و سرویس two factor

class TwoFactorAuthentication{

const CODE_SENT = 'code.sent';
const CODE_INVALID = 'code.invalid';
const USER_ACTIVATED = 'user.activated';
protected $request;


    public function __construct(Request $request)
    {
       $this->request = $request;
    }

    public function requestCode(User $user)
    {
        $code =  TwoFactor::generateCodeFor($user);

        $this->setSession($code);

        $code->send();

        return static::CODE_SENT;


    }

    protected function setSession(TwoFactor $code)
    {

        session([
            'user_id' => $code->user_id,
            'code_id' => $code->id,
        ]);

    }
    protected function forgetSession(){

        session(['user_id' , 'code_id']);

    }

    public function resent()
    {
      return  $this->requestCode($this->getUser());
    }

    public function activate()
    {
       if (!$this->isValidCode()) return static::CODE_INVALID;

       $this ->getToken()->delete();

       $this->getUser()->activateTwoFactor();

       $this->forgetSession();

       return static::USER_ACTIVATED;

    }

    protected function isValidCode(){

        return !$this->getToken()->isExpired() && $this->getToken()->isEqualWith($this->request->code);

    }


    protected function getToken(){

        return $this->code ?? TwoFactor::findOrFail(session('code_id'));

    }

    protected function getUser(){
        return User::findOrFail(session('user_id'));
    }
}

 

فایل پیوست

عرفان مهدوی

توسط

عرفان مهدوی

26 شهریور 98

حذف شده
انگار هنوز مشکل ارسال کد توی اکادمی حل نشده دوباره به صورت ltr میفرستم
عرفان مهدوی

26 شهریور 98

0
حذف شده

controller here

class VerificationController extends Controller
{

    protected $twoFactor;

    public function __construct(TwoFactorAuthentication $twoFactor)
    {
        $this->middleware('auth');
        $this->twoFactor = $twoFactor;
    }

    public function showVerifyForm()
    {
        return view('Auth.Verify');
    }


    public function activate()
    {

        $response = $this->twoFactor->requestCode(Auth::user());

        return $response == $this->twoFactor::CODE_SENT ? redirect()->route('auth.register.Verify.form') : back()->with('sendCodeFail', 'ارسال کد با خطا مواجه شد لطفا چند دقیقه دیگر دوباره تلاش کنید !');
    }

    public function confirm(Request $request)
    {
        $this->validateForm($request);
        $response = $this->twoFactor->activate();

        if ($response === $this->twoFactor::USER_ACTIVATED) {
            return redirect()->route('home');
        } else {
            return back()->with('sendCodeFail', 'کد وارد شده معتبر نمیباشد .');
        }
    }

    protected function validateForm(Request $request)
    {

        $request->validate([
            'code' => ['required', 'numeric', 'digits:4'],
        ], [
                'code.required' => 'لطفا کد را وارد کنید',
                'code.numeric' => 'کد فعال سازی مقداری عددی میباشد',
                'code.digits' => 'کد نا معتبر میباشد'

            ]

        );

    }

    public function resent(Request $request)
    {

        $this->twoFactor->resent();

        return redirect()->route('auth.register.Verify.form')->with('success', 'کد احراز هویت دوباره برای شما ارسال شد');
    }

}

Route here

Route::get('register/verify/resent', 'VerificationController@resent')->name('auth.register.Verify.resent');

two factor model here

class TwoFactor extends Model
{
    const CODE_EXPIRY = 60;

   protected $table='two_factor';
   protected $fillable=[
    'user_id',
       'code'
   ];

    public static function generateCodeFor(User $user)
    {
        $user->code()->delete();
        return static::create([
            'user_id' => $user->id,
            'code' => mt_rand(1000, 9999)
        ]);
    }

    public function getCodeForSendAttribute()
    {
        return __('auth.CodeForSend' , ['code' =>$this->code]);
    }

    public function send()
    {

      SendSms::dispatchNow($this->user , $this->code_for_send);

    }

    public function user(){

        return $this->belongsTo(User::class);
    }

   public function isExpired(){

        return $this->created_at->diffInSeconds(now()) > static::CODE_EXPIRY;
    }

    public function isEqualWith(string $code){
        return $this->code == $code;
    }

}

two factor authentication service here

class TwoFactorAuthentication{

const CODE_SENT = 'code.sent';
const CODE_INVALID = 'code.invalid';
const USER_ACTIVATED = 'user.activated';
protected $request;


    public function __construct(Request $request)
    {
       $this->request = $request;
    }

    public function requestCode(User $user)
    {
        $code =  TwoFactor::generateCodeFor($user);

        $this->setSession($code);

        $code->send();

        return static::CODE_SENT;


    }

    protected function setSession(TwoFactor $code)
    {

        session([
            'user_id' => $code->user_id,
            'code_id' => $code->id,
        ]);

    }
    protected function forgetSession(){

        session(['user_id' , 'code_id']);

    }

    public function resent()
    {
      return  $this->requestCode($this->getUser());
    }

    public function activate()
    {
       if (!$this->isValidCode()) return static::CODE_INVALID;

       $this ->getToken()->delete();

       $this->getUser()->activateTwoFactor();

       $this->forgetSession();

       return static::USER_ACTIVATED;

    }

    protected function isValidCode(){

        return !$this->getToken()->isExpired() && $this->getToken()->isEqualWith($this->request->code);

    }


    protected function getToken(){

        return $this->code ?? TwoFactor::findOrFail(session('code_id'));

    }

    protected function getUser(){
        return User::findOrFail(session('user_id'));
    }
}

 

 

فایل پیوست

عرفان مهدوی

توسط

عرفان مهدوی

26 شهریور 98

حذف شده
من دیگه حرفی ندارم
عرفان مهدوی

26 شهریور 98

0
حذف شده

سلام ... شما رو به چه آدرسی برمیگردونه ؟‌

فایل پیوست

مهرداد سامی

توسط

مهرداد سامی

27 شهریور 98

حذف شده
همون ادرسی که کد رو دوباره میفرسته به صورت get دقیقا همون ادرسیه که وقتی یوزر ثبت نام و لاگین میشه درست کار میکنه بعد که لاگ اوت میکنه دوباره لاگین میکنه رو ارسال مجدد که میزنه همون ادرسه ولی میگه این ادرس وجود نداره و 404 نشون میده
عرفان مهدوی

27 شهریور 98

0
حذف شده

استاد پیشنهادی برای مشکل بنده ندارید؟

 

فایل پیوست

عرفان مهدوی

توسط

عرفان مهدوی

30 شهریور 98

جلسه اتصال احراز هویت ۲ مرحله ای به سیستم ورود - جلسه دوم