Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Recuperar contraseña restful

Estas en el tema de Recuperar contraseña restful en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola, he seguido varios tutos y la guía oficial para aprender y entender como hacer esto, lo que sucede es que todos los tutos y ...
  #1 (permalink)  
Antiguo 13/04/2016, 08:43
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 21 años, 10 meses
Puntos: 8
Recuperar contraseña restful

Hola, he seguido varios tutos y la guía oficial para aprender y entender como hacer esto, lo que sucede es que todos los tutos y guías están pensadas para una aplicación tipo escritorio, y lo que yo pretendo es hacerlo para una API tipo RestFul.

El principal problema con el que me encuentro es que los métodos "llaman" a views y al no tener esas views me tira errores.

He intentado sobrescribir dichos métodos, pero la verdad que no se muy bien como hacerlo porque es un poco confuso con tantas clases, interfaces, traits etc.. ¿alguien podría orientarme un poco con esto; lo que me gusaría hacer es

1 Crear un token.
2 Enviar a url junto a token a email de usuario.
3 Posibidad de recuperaro.

Pero lógicamente mediante json , no a través de un formuario web.

Mil gracias de antemano.
__________________
Videotutoriales de Drupal
  #2 (permalink)  
Antiguo 21/04/2016, 14:53
 
Fecha de Ingreso: junio-2010
Mensajes: 59
Antigüedad: 13 años, 10 meses
Puntos: 5
Respuesta: Recuperar contraseña restful

Te recomiendo que sigas este tutorial:

https://scotch.io/tutorials/token-ba...d-laravel-apps

En resumen como hice el auth y reset:
1.- Usa esta libreria (ponlo en tu composer.json): "tymon/jwt-auth": "0.5.*",
2.- En tu routes.php agrega las rutas:

Route::group(['prefix' => 'api'], function () {

Route::resource('user', 'Api\UserController');
Route::post('auth/login', 'Api\AuthController@doLogin');
Route::post('auth/logout', 'Api\AuthController@doLogout');
Route::post('password/email', 'Api\PasswordController@postEmail');
Route::post('password/reset', 'Api\PasswordController@postReset');
});

3.- Crea los controllers.
Este es para la autenticacion y actualizar el token si es necesario:

<?php

namespace App\Http\Controllers\Api;

use Illuminate\Http\Request;
use Illuminate\Http\Response;

use App\Http\Requests;
use App\Http\Controllers\Controller;
use \stdclass;
use \Validator;
use App\User;
use \DB;
use Hash;

class AuthController extends Controller
{

public function doLogin(Request $request)
{
$validation_rules = array(
'email' => 'required|email',
'password' => 'required|min:6|max:50'
);

$this->validate($request, $validation_rules);

$credentials = \Input::only('email', 'password');
if ( $token = \JWTAuth::attempt($credentials) ) {
\JWTAuth::setToken($token);
$blacklist = \JWTAuth::manager()
->getBlacklist()
->remove( \JWTAuth::getPayload() );
return response()->json( compact('token'), Response::HTTP_OK );
} else {
return response()->json( ['message' => 'Invalid user/password'], Response::HTTP_UNAUTHORIZED );
}
}

public function doLogout(Request $request)
{
$token = \JWTAuth::getToken();
\JWTAuth::setToken($token)->invalidate();
return response( '', Response::HTTP_NO_CONTENT );
}

public function refreshToken(Request $request)
{
$token = \JWTAuth::getToken();
$token = \JWTAuth::refresh($token);
return response()->json( compact('token'), Response::HTTP_OK );
}

}


Y este es para el reseteo del password:

<?php
namespace App\Http\Controllers\Api;

use Illuminate\Support\Facades\Password;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Mail\Message;

use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\ResetsPasswords;

class PasswordController extends Controller
{

use ResetsPasswords;


//add and modify this methods as you wish:


/**
* Send a reset link to the given user.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function postEmail(Request $request)
{
$this->validate($request, ['email' => 'required|email']);

$response = Password::sendResetLink($request->only('email'), function (Message $message) {
$message->subject($this->getEmailSubject());
});

switch ($response) {
case Password::RESET_LINK_SENT:
return response()->json( '' , Response::HTTP_NO_CONTENT);

case Password::INVALID_USER:
return response()->json( ['email' => array(trans($response))] , Response::HTTP_UNPROCESSABLE_ENTITY);
}
}



/**
* Reset the given user's password.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function postReset(Request $request)
{
$this->validate($request, [
'token' => 'required',
'email' => 'required|email',
'password' => 'required|confirmed',
]);

$credentials = $request->only(
'email', 'password', 'password_confirmation', 'token'
);

$response = Password::reset($credentials, function ($user, $password) {
$this->resetPassword($user, $password);
});

switch ($response) {
case Password::PASSWORD_RESET:
return redirect($this->redirectPath());

default:
return redirect()->back()
->withInput($request->only('email'))
->withErrors(['email' => trans($response)]);
}
}

}

Saludos
  #3 (permalink)  
Antiguo 25/04/2016, 00:57
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 21 años, 10 meses
Puntos: 8
Respuesta: Recuperar contraseña restful

Cita:
Iniciado por rodrigo_1986 Ver Mensaje
Te recomiendo que sigas este tutorial:

https://scotch.io/tutorials/token-ba...d-laravel-apps

Edito porque lo hice como dices, y me pasa lo de siempre , me sale este error "message": "View [emails.password] not found.".


Un saludo
__________________
Videotutoriales de Drupal

Última edición por Dundee; 25/04/2016 a las 01:15

Etiquetas: laravel
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:15.