Anuncio

Entra a participar en el Slack de Laraveles. Solicita tu invitación aquí.
Nos ayuda a manter la comunidad

#1 17/09/2018 14:10:46

pepejd
Miembro
Registrado: 15/09/2018
Mensajes: 5

Problema con Cotrolador

Hola, tengo un controlador configurado para que limite el acceso por id de usuario en el momento de intentar editar el registro si no conincide mi id con el no me da acceso perfecto pero en el caso de eliminar algun registro aunque me dice acceso no autorizado en realidad si que me elimina el registro intento escribir el

$this->authorize('pass', $product); 

antes del

 $product = Product::find($id)->delete();

pero me da error supongo que porque antes debe de estar la variable alguna idea de como solucionarlo...???

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Product;

class ProductController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $products = Product::paginate();

        return view('products.index', compact('products'));
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        return view('products.create');
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        $product = Product::create($request->all());

        return redirect()->route('products.edit', $product->id)
            ->with('info', 'Rol guardado con éxito');
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        $product = Product::find($id);

        return view('products.show', compact('product'));
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {

        $product = Product::find($id);
        $this->authorize('pass', $product);

        return view('products.edit', compact('product'));
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {

        $product = Product::find($id);
        $this->authorize('pass', $product);
        $product->update($request->all());

        return redirect()->route('products.edit', $product->id)
            ->with('info', 'producto guardado con éxito');
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        $product = Product::find($id)->delete();
        $this->authorize('pass', $product);

        return back()->with('info', 'Eliminado correctamente');
    }
}

Desconectado

#2 27/09/2018 15:27:05

pepejd
Miembro
Registrado: 15/09/2018
Mensajes: 5

Re: Problema con Cotrolador

La solución fue muy sencilla la expongo por si pudiera servir a alguien.
cambie lo que me daba error que era esto

 $this->authorize('pass', $product); 
 $product = Product::find($id)->delete();

Por esto

$product = Product::find($id)
$this->authorize('pass', $product); 
$product = Product::find($id)->delete();

Desconectado

Pié de página <- REVISAR ->

Powered by FluxBB

Ayuda a mantener la comunidad: