رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
آموزش Reset Password در لاراول 5
#1
تو این قسمت از آموزش به ریست کردن رمز عبور در لاراول 5 می پردازیم.  ابتدا در مسیر app/Http/Controllers/Auth کلاس PasswordController را باز کنید و به آن متد getEmail را اضافه کنید :


کد پی‌اچ‌پی:
public function getEmail()
 
   {
 
       return view('auth.password');
 
   


پس بایستی یک فایل view در پوشه auth به نام password.blade.php داشته باشیم که فرم ریست کردن کلمه عبور در آن قرار دارد. محتویات این فایل شبیه زیر است :


کد پی‌اچ‌پی:
@extends('app')

@
section('content')
<
div class="container-fluid">
 
   <div class="row">
 
       <div class="col-md-8 col-md-offset-2">
 
           <div class="panel panel-default">
 
               <div class="panel-heading">Reset Password</div>
 
               <div class="panel-body">
 
                   @if (session('status'))
 
                       <div class="alert alert-success">
 
                           {{ session('status') }}
 
                       </div>
 
                   @endif

 
                   @if (count($errors) > 0)
 
                       <div class="alert alert-danger">
 
                           <strong>Whoops!</strongThere were some problems with your input.<br><br>
 
                           <ul>
 
                               @foreach ($errors->all() as $error)
 
                                   <li>{{ $error }}</li>
 
                               @endforeach
 
                           </ul>
 
                       </div>
 
                   @endif

 
                   <form class="form-horizontal" role="form" method="POST" action="{{ url('/password/email') }}">
 
                       <input type="hidden" name="_token" value="{{ csrf_token() }}">

 
                       <div class="form-group">
 
                           <label class="col-md-4 control-label">E-Mail Address</label>
 
                           <div class="col-md-6">
 
                               <input type="email" class="form-control" name="email" value="{{ old('email') }}">
 
                           </div>
 
                       </div>

 
                       <div class="form-group">
 
                           <div class="col-md-6 col-md-offset-4">
 
                               <button type="submit" class="btn btn-primary">
 
                                   Send Password Reset Link
                                
</button>
 
                           </div>
 
                       </div>
 
                   </form>
 
               </div>
 
           </div>
 
       </div>
 
   </div>
</
div>
@
endsection 


این فایل از layout ای که لاراول به طور پیش فرض در پوشه views قرار داده به نام app.blade.php ارث برده می شود که از bootstrap هم استفاده میکند.


در کلاس PasswordController یک متد به نام postEmail هم برای دریافت ایمیل کاربر بعد از ارسال توسط این فرم باید ایجاد کنیم :



کد پی‌اچ‌پی:
public function postEmail(Request $request)
 
  {
 
      $v Validator::make($request->all(), [
 
          'email' => 'required|email|exists:users',
 
      ]);
 
 
      if ($v->fails())
 
      {
 
          return redirect()->back()->withErrors($v->errors());
 
      } else {
 
          $response $this->passwords->sendResetLink($request->only('email'), function($m)
 
          {
 
              $m->subject($this->getEmailSubject());
 
          });
 
 
          switch ($response)
 
          {
 
              case PasswordBroker::RESET_LINK_SENT:
 
                  return redirect()->back()->with('status'trans($response));
 
 
              case PasswordBroker::INVALID_USER:
 
                  return redirect()->back()->withErrors(['email' => trans($response)]);
 
          }
 
 
      }
 
  


نکته : ابتدای کلاس کنترلر این کلاس ها را ایمپورت کنید چون در بدنه کلاس از آنها استفاده میکنیم:


کد پی‌اچ‌پی:
use Illuminate\Http\Request;
use 
Validator




همانطور که مشاهده کردید ابتدا اعتبارسنجی رو انجام دادیم. در اعتبارسنجی هم بررسی کردیم که آیا آدرس ایمیل وارد شده در جدول users وجود دارد یا خیر بعد از ان اقدام به ارسال ایمیل به کاربر میکنیم و یک پاسخی دریافت میکنیم که این پاسخ را در حلقه switch قرار میدیم به این صورت که اگر link ریست کردن به درستی ارسال شده بود یا ایمیل کاربر نامعتبر بود به صفحه قبلی ریدایرکت شود و پیغام خطای مناسبی را در صفحه ویو چاپ کند.


حالا وارد ایمیل خودتان بشوید و بر روی لینکی که برایتان ارسال شده است کلیک کنید. این لینک حاوی یک توکن است که آن توکن دوباره در کنترلر بررسی میشود و اگر درست بود وارد صفحه ای می شوید که می توانید کلمه عبور خودتان را ریست کنید. فایل view آن در همان پوشه views/auth و به نام reset.blade.php است و حاوی کدهای زیر است :


کد پی‌اچ‌پی:
@extends('app')

@
section('content')
<
div class="container-fluid">
 
   <div class="row">
 
       <div class="col-md-8 col-md-offset-2">
 
           <div class="panel panel-default">
 
               <div class="panel-heading">Reset Password</div>
 
               <div class="panel-body">
 
                   @if (count($errors) > 0)
 
                       <div class="alert alert-danger">
 
                           <strong>Whoops!</strongThere were some problems with your input.<br><br>
 
                           <ul>
 
                               @foreach ($errors->all() as $error)
 
                                   <li>{{ $error }}</li>
 
                               @endforeach
 
                           </ul>
 
                       </div>
 
                   @endif

 
                   <form class="form-horizontal" role="form" method="POST" action="{{ url('/password/reset') }}">
 
                       <input type="hidden" name="_token" value="{{ csrf_token() }}">
 
                       <input type="hidden" name="token" value="{{ $token }}">

 
                       <div class="form-group">
 
                           <label class="col-md-4 control-label">E-Mail Address</label>
 
                           <div class="col-md-6">
 
                               <input type="email" class="form-control" name="email" value="{{ old('email') }}">
 
                           </div>
 
                       </div>

 
                       <div class="form-group">
 
                           <label class="col-md-4 control-label">Password</label>
 
                           <div class="col-md-6">
 
                               <input type="password" class="form-control" name="password">
 
                           </div>
 
                       </div>

 
                       <div class="form-group">
 
                           <label class="col-md-4 control-label">Confirm Password</label>
 
                           <div class="col-md-6">
 
                               <input type="password" class="form-control" name="password_confirmation">
 
                           </div>
 
                       </div>

 
                       <div class="form-group">
 
                           <div class="col-md-6 col-md-offset-4">
 
                               <button type="submit" class="btn btn-primary">
 
                                   Reset Password
                                
</button>
 
                           </div>
 
                       </div>
 
                   </form>
 
               </div>
 
           </div>
 
       </div>
 
   </div>
</
div>
@
endsection 


بعد از اینکه کلمه عبور را تغییر دهید به طور اتوماتیک به صفحه کاربری خود ریدایرکت می شوید که این صفحه در لاراول home می باشد که می توانید با استفاده از پراپرتی redirectTo آن را تغییر دهید :


کد پی‌اچ‌پی:
protected $redirectTo '/dashboard'


در مثال بالا آن را به مسیر dashboard تغییر دادم.


در پایان باید یادتان باشد که تنظیمات مربوط به ایمیل برنامه تان را در فابل env. و config/mail.php به درستی اعمال کنید وگرنه ممکن است در ارسال ایمیل دچار خطا شوید.
قوانین انجمن لاراولیستا  | شماره تماس :‌09124783045 |‌ تلگرام :‌ 09377869283 |‌ مدیریت کانال تلگرام
پاسخ
#2
خوب الان قسمتی که باید روش کلیک بشه برای ریست رمز عبور تو ویو چطوری باید نوشته بشه؟
پاسخ
#3
(11-14-2015, 04:26 PM)tux-world نوشته:  خوب الان قسمتی که باید روش کلیک بشه برای ریست رمز عبور تو ویو چطوری باید نوشته بشه؟

یک لینکه دیگه معمولا زیر فرم لاگین این لینکو اضافه کنید مثلا به این صورت :
کد پی‌اچ‌پی:
{!! Html::link('/password/email''کلمه عبور خود را فراموش کرده ام') !!} 
پاسخ
#4
البته من منظورمو بد رسوندم. دقیق تر توضیح میدم بعدا
پاسخ
#5
الان آدرسی که شما نوشتید به کجای آموزشی که دوستمون ارائه دادن اشاره میکنه؟ لینکی که الان درست میشه اشتباه هستش. الان route های که باید این درخواست رو هندل بکنه چی هستش؟

من روتها رو به اینصورت نوشتم:
کد پی‌اچ‌پی:
   // Password reset link request routes...
 
   Route::get('password/email''Auth\PasswordController@getEmail');
 
   Route::post('password/email''Auth\PasswordController@postEmail');
 
   
    
// Password reset routes...
 
   Route::get('password/reset/{token}''Auth\PasswordController@getReset');
 
   Route::post('password/reset''Auth\PasswordController@postReset'); 

و این هم کدی که برای استفاده داخل فایل لاگین دارم:


کد پی‌اچ‌پی:
<a href="{{ url('password/email') }}">Forgot your password?</a

خطای :

کد:
NotFoundHttpException in RouteCollection.php line 161:

رو میده
پاسخ
#6
نقل قول:الان آدرسی که شما نوشتید به کجای آموزشی که دوستمون ارائه دادن اشاره میکنه؟
آموزش ها که از خودمه دوست گرامی  Big Grin  فکرکنم خودمو معرفی نکردم من hamedarian انجمن برنامه نویس و hamo انجمن ncis

route هارو که درست نوشتین اما اینکه جواب نداده حتما یه جای کارتون اشتباه هست.
از چه نسخه لاراول استفاده می کنید؟
پاسخ
#7
از نسخه ۵.۱ دارم استفاده میکنم کجاش فکر میکنی اشتباهه؟ من که نتونستم بفهمم
پاسخ
#8
(11-18-2015, 02:56 PM)tux-world نوشته:  از نسخه ۵.۱ دارم استفاده میکنم کجاش فکر میکنی اشتباهه؟ من که نتونستم بفهمم

بنده خیلی کم فرصت دارم برای پاسخ دادن به سوالات کاربران شما تو انجمن ncis مراجعه کنید اونجا reset password رو تو لاراول 5.1 اموزش دادم
پاسخ
 


موضوعات مشابه ...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  گرفتن آپدیت های وب هوک تلگرام در لاراول Mr.AMiR 6 162 09-19-2017, 04:30 AM
آخرین ارسال: Bvk.Programmer
  خطای نصب لاراول dmbehrouz 0 26 09-07-2017, 01:11 PM
آخرین ارسال: dmbehrouz
  مشکل افت سرعت وقتی از لاراول به جای php استفاده می کنم Zahir 1 80 08-31-2017, 08:40 AM
آخرین ارسال: imanghafoori
  آموزش اعتبار سنجی در لاراول 5 alihossein 5 1,190 07-30-2017, 08:47 AM
آخرین ارسال: shima71
  آموزش فارسی لاراول ۵ alihossein 7 3,694 07-28-2017, 06:44 PM
آخرین ارسال: shima71
  انتقال سایت mvc به لاراول miladhassan 1 71 07-26-2017, 09:01 AM
آخرین ارسال: fery
Question راه اندازی لاراول روی سیستم افلاین؟ fery 0 42 07-26-2017, 08:55 AM
آخرین ارسال: fery
Sad مشکل در ایجاد وبلاگ در لاراول 5.4 itroz 0 80 07-05-2017, 05:03 PM
آخرین ارسال: itroz
  بهترین پکیج acl برای لاراول چیست homeily@gmail.com 3 276 05-08-2017, 09:27 AM
آخرین ارسال: Geppeto
  لینک فایل های css و js در لاراول saeed.rahgooy@gmail.com 1 97 05-01-2017, 07:50 PM
آخرین ارسال: zootech

پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان

درباره انجمن فریم ورک لاراول

انجمن لاراولیستا به عشق توسعه دهنده ها و علاقمندان به این فریم ورک محبوب ایجاد شده و امیدواریم با نظرات خوبتون ما رو در بهبود کار یاری کنید. در ضمن خیلی هم خوشحال میشیم شما هم در توسعه این انجمن سهمی داشته باشید.