Ver Mensaje Individual
  #1 (permalink)  
Antiguo 29/04/2015, 16:54
Avatar de Nemutagk
Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años, 10 meses
Puntos: 406
Problema con sistema para recuperar contraseña (Laravel 5)

Buenas, tengo un problema, verán, estoy desarrollando una aplicación el Laravel 5 y ya tengo la mayoría, pero tengo un problema con el sistema de recuperar contraseña, tengo ya mi controlador, mi acción, vista y FormRequest hechos y funcionan o mas o menos, el problema es que parece que en la sección de recuperar contraseña el sistema no puede leer o tiene algún problema con el token, en la vista en la sección de errores me aparece el mensaje "passwords.token" cuando ingreso el email y la contraseña nueva, pero no logro entender que es lo que pasa, aquí el código que utilizo:
AuthController.php

Código PHP:
Ver original
  1. <?php
  2.  
  3. namespace App\Http\Controllers\Lual;
  4.  
  5. use App\Http\Controllers\Controller;
  6.  
  7. use Auth;
  8. use Illuminate\Contracts\Auth\Guard;
  9. use Illuminate\Contracts\Auth\PasswordBroker;
  10. use Illuminate\Foundation\Auth\ResetsPasswords;
  11. use App\Http\Requests\LoginFormRequest;
  12. use App\Http\Requests\EmailFormRequest;
  13. use App\Http\Requests\ResetFormRequest;
  14. use App\Models\Usuario;
  15.  
  16. class AuthController extends Controller
  17. {
  18.     use ResetsPasswords;
  19.  
  20.     public function __construct(Guard $auth, PasswordBroker $passwords)
  21.     {
  22.         $this->auth = $auth;
  23.         $this->passwords = $passwords;
  24.     }  
  25.  
  26.     public function getReset($subdoman='',$token=null) {
  27.         if (is_null($token)) {
  28.             throw new NotFoundHttpException;
  29.         }
  30.  
  31.         return view('lual.auth.reset')->with('token', $token);
  32.     }
  33.  
  34.     public function postReset(ResetFormRequest $request) {
  35.         $credentials = $request->only(
  36.             'email', 'password', 'password_confirmation', 'token'
  37.         );
  38.  
  39.         $response = $this->passwords->reset($credentials, function($user, $password)
  40.         {
  41.             $user->password = \Hash::make($password);
  42.  
  43.             $user->save();
  44.  
  45.             $this->auth->login($user);
  46.         });
  47.  
  48.         switch ($response)
  49.         {
  50.             case PasswordBroker::PASSWORD_RESET:
  51.                 return redirect('/');
  52.  
  53.             default:
  54.                 return redirect()->back()
  55.                             ->withInput($request->only('email'))
  56.                             ->withErrors(['email' => trans($response)]);
  57.         }
  58.     }
  59.  
  60.     public function getRegistro() {
  61.         return view('lual.auth.registro');
  62.     }
  63. }

ResetFormRequest.php
Código PHP:
Ver original
  1. <?php namespace App\Http\Requests;
  2.  
  3. use App\Http\Requests\Request;
  4.  
  5. class ResetFormRequest extends Request
  6. {
  7.     /**
  8.      * Determine if the user is authorized to make this request.
  9.      *
  10.      * @return bool
  11.      */
  12.     public function authorize()
  13.     {
  14.         return true;
  15.     }
  16.  
  17.     /**
  18.      * Get the validation rules that apply to the request.
  19.      *
  20.      * @return array
  21.      */
  22.     public function rules()
  23.     {
  24.         return [
  25.             //
  26.             'token' => 'required',
  27.             'email' => 'required|email',
  28.             'password' => 'required|confirmed'
  29.         ];
  30.     }
  31.  
  32.     public function messages() {
  33.         return [
  34.             'token'                 => 'authLogin.token',
  35.             'email.require'         => 'authLogin.emailRequire',
  36.             'email.email'           => 'authLogin.emailValid',
  37.             'password.require'      => 'authLogin.passRequire',
  38.             'password.confirmed'    => 'authLogin.confirmed'
  39.         ];
  40.     }
  41. }

reset.blade.php

Código PHP:
Ver original
  1. @extends('lual')
  2.  
  3. @section('titulo')
  4. {{ trans('authLogin.resetTitle') }}
  5. @endsection
  6.  
  7. @section('css')
  8. <link rel="stylesheet" href="/css/auth/login.css">
  9. @endsection
  10.  
  11. @section('contenido')
  12. <section class="container">
  13.     <article class="form-login">
  14.         <div class="form-content col-xs-11 col-sm-7 col-centered">
  15.             <p class="title">{{ trans('authLogin.resetTitle') }}</p>
  16.  
  17.             @if(count($errors) > 0)
  18.             <div class="form-error row col-xs-12 col-sm-12 col-md-8 col-md-offset-2">
  19.                 <div class="icon pull-left col-md-1">
  20.                     <span class="glyphicon glyphicon-warning-sign"></span>
  21.                 </div>
  22.                 @foreach ($errors->all() as $error)
  23.                 <div class="msn pull-right col-md-11">
  24.                     <p class="title">{{ trans('authLogin.errors') }}</p>
  25.                     <p>{{ $error }}</p>
  26.                 </div>
  27.                 @endforeach
  28.             </div>
  29.             @endif
  30.  
  31.             <form class="form-horizontal" action="/auth/reset" method="post">
  32.                 <div class="col-xs-12 col-sm-12 col-md-8 col-md-offset-2">
  33.                     <div class="form-group">
  34.                         <span for="email" class="sr-only">{{ trans('authLogin.email') }}</span>
  35.                         {!! Form::email('email',null,['class'=>'form-control','placeholder'=>trans('authLogin.email')]) !!}
  36.                     </div>
  37.  
  38.                     <div class="form-group">
  39.                         <span for="password" class="sr-only">{{ trans('authLogin.password') }}</span>
  40.                         {!! Form::password('password',['class'=>'form-control','placeholder'=>trans('authLogin.password')]) !!}
  41.                     </div>
  42.  
  43.                     <div class="form-group">
  44.                         <span for="password_confirmation" class="sr-only">{{ trans('authLogin..password-confirm') }}</span>
  45.                         {!! Form::password('password_confirmation',['class'=>'form-control','placeholder'=>trans('authLogin.password-confirm')]) !!}
  46.                     </div>
  47.  
  48.                     <div class="form-group">
  49.                         <span>{!! Form::submit(trans('authLogin.sendReset'),['class'=>'btn btn-primary']) !!}</span>
  50.                         {!! Form::hidden('token', $token) !!}
  51.                         {!! Form::token() !!}
  52.                     </div>
  53.                 </div>
  54.             </form>
  55.         </div>
  56.     </article>
  57. </section>
  58. @endsection

Usuario.php
Código PHP:
Ver original
  1. <?php namespace App\Models;
  2.  
  3. use Illuminate\Auth\Authenticatable;
  4. use Illuminate\Database\Eloquent\Model;
  5. use Illuminate\Auth\Passwords\CanResetPassword;
  6. use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
  7. use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract;
  8.  
  9. class Usuario extends Model implements AuthenticatableContract, CanResetPasswordContract
  10. {
  11.     use Authenticatable, CanResetPassword;
  12.  
  13.     /**
  14.      * The database table used by the model.
  15.      *
  16.      * @var string
  17.      */
  18.     protected $table = 'usuarios';
  19.  
  20.     /**
  21.      * The attributes that are mass assignable.
  22.      *
  23.      * @var array
  24.      */
  25.     protected $fillable = ['nombre','email', 'password'];
  26.  
  27.     /**
  28.      * The attributes excluded from the model's JSON form.
  29.      *
  30.      * @var array
  31.      */
  32.     protected $hidden = ['password', 'remember_token'];
  33. }

al final en postReset() si pasa el token, pero el sistema no lo detecta o no lo puede leer, el punto es que me regresa a getReset() mandando el error "passwords.token", oajalá puedan ayudarme
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)