رتبه موضوع:
  • 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 اموزش دادم
پاسخ
 


موضوعات مشابه ...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  آموزش اعتبار سنجی در لاراول 5 alihossein 4 771 11-20-2016, 07:12 AM
آخرین ارسال: حمید رﺽا کمالی
  آموزش روتینگ routing در لاراول 5 alihossein 2 1,125 11-12-2016, 04:37 AM
آخرین ارسال: حمید رﺽا کمالی
  آموزش کار با دیتابیس در لاراول 5 alihossein 6 1,552 10-27-2016, 01:01 PM
آخرین ارسال: sempaisaleh
  آموزش Migration در لاراول 5 alihossein 9 1,158 08-15-2016, 04:17 PM
آخرین ارسال: Naser.SherafatiNia
  آموزش فارسی لاراول ۵ alihossein 4 2,857 07-22-2016, 04:16 PM
آخرین ارسال: elham_malekmohamadi
  # سوال : آموزش ساخت ربات تلگرام با پکیج irazasyed/telegram-bot-sdk Bvk.Programmer 0 234 04-25-2016, 04:54 PM
آخرین ارسال: Bvk.Programmer
  درخواست آموزش کار با پکیج intervention/image Bvk.Programmer 6 492 04-18-2016, 05:52 PM
آخرین ارسال: hamo
Rainbow آموزش : پکیچ کاربردی ajax-blade Bvk.Programmer 0 200 02-15-2016, 06:04 PM
آخرین ارسال: Bvk.Programmer
  آموزش Session ها در لاراول 5 alihossein 1 662 01-29-2016, 12:33 PM
آخرین ارسال: SajadDP
  آموزش کنترلر ها در لاراول 5 alihossein 3 967 01-07-2016, 02:28 PM
آخرین ارسال: Bvk.Programmer

پرش به انجمن:


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

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

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