From a485994a72c52ab67d7459b176c2ffef2c666e13 Mon Sep 17 00:00:00 2001 From: ale <ale.tasistro@gmail.com> Date: Sun, 18 May 2025 17:34:14 -0300 Subject: [PATCH] =?UTF-8?q?Agregada=20store=20de=20vuex=20para=20guardar?= =?UTF-8?q?=20informaci=C3=B3n=20de=20la=20sesi=C3=B3n=20tras=20login=20+?= =?UTF-8?q?=20ruta=20y=20controller=20+=20resource=20reducido=20de=20grupo?= =?UTF-8?q?=20de=20compra=20para=20pedidos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Api/GrupoDeCompraController.php | 5 +++ app/Http/Controllers/UserController.php | 39 +++++++++++++++++++ .../GrupoDeCompraReducidoResource.php | 22 +++++++++++ resources/js/app.js | 2 + resources/js/store/index.js | 11 ++++++ resources/js/store/modules/session.js | 32 +++++++++++++++ routes/web.php | 4 ++ 7 files changed, 115 insertions(+) create mode 100644 app/Http/Controllers/UserController.php create mode 100644 app/Http/Resources/GrupoDeCompraReducidoResource.php create mode 100644 resources/js/store/index.js create mode 100644 resources/js/store/modules/session.js diff --git a/app/Http/Controllers/Api/GrupoDeCompraController.php b/app/Http/Controllers/Api/GrupoDeCompraController.php index 58f88d5..577c83a 100644 --- a/app/Http/Controllers/Api/GrupoDeCompraController.php +++ b/app/Http/Controllers/Api/GrupoDeCompraController.php @@ -4,6 +4,7 @@ namespace App\Http\Controllers\Api; use App\GrupoDeCompra; use App\Http\Controllers\Controller; +use App\Http\Resources\GrupoDeCompraReducidoResource; use App\Http\Resources\GrupoDeCompraResource; class GrupoDeCompraController extends Controller @@ -16,4 +17,8 @@ class GrupoDeCompraController extends Controller { return new GrupoDeCompraResource($grupoDeCompra); } + public function reducido(GrupoDeCompra $grupoDeCompra) + { + return new GrupoDeCompraReducidoResource($grupoDeCompra); + } } diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php new file mode 100644 index 0000000..6a5d79a --- /dev/null +++ b/app/Http/Controllers/UserController.php @@ -0,0 +1,39 @@ +<?php + +namespace App\Http\Controllers; + +use App\GrupoDeCompra; +use App\Http\Resources\GrupoDeCompraReducidoResource; +use App\Http\Resources\GrupoDeCompraResource; +use App\UserRole; +use Illuminate\Http\Request; +use Illuminate\Support\Facades\Auth; +use App\User; +use Illuminate\Support\Facades\Log; + +class UserController extends Controller +{ + public function session(Request $request) + { + $user = Auth::user(); + $role = UserRole::find($user->role_id); + $grupo_de_compra = GrupoDeCompra::find($user->grupo_de_compra_id); + $result = [ + 'role_id' => $user->role_id, + 'grupo_de_compra' => null, + ]; + switch ($role->nombre ?? 'error') { + case 'barrio': + $result['grupo_de_compra'] = new GrupoDeCompraReducidoResource($grupo_de_compra); + break; + case 'admin_barrio': + $result['grupo_de_compra'] = new GrupoDeCompraResource($grupo_de_compra); + break; + case 'comision': + break; + default: + abort(400, 'Rol invalido'); + } + return $result; + } +} diff --git a/app/Http/Resources/GrupoDeCompraReducidoResource.php b/app/Http/Resources/GrupoDeCompraReducidoResource.php new file mode 100644 index 0000000..9bf13d6 --- /dev/null +++ b/app/Http/Resources/GrupoDeCompraReducidoResource.php @@ -0,0 +1,22 @@ +<?php + +namespace App\Http\Resources; + +use Illuminate\Http\Resources\Json\JsonResource; + +class GrupoDeCompraReducidoResource extends JsonResource +{ + /** + * Transform the resource into an array. + * + * @param \Illuminate\Http\Request $request + * @return array + */ + public function toArray($request): array { + return [ + 'id' => $this->id, + 'nombre' => $this->nombre, + 'devoluciones_habilitadas' => $this->devoluciones_habilitadas, + ]; + } +} diff --git a/resources/js/app.js b/resources/js/app.js index 51be45f..ae11e80 100644 --- a/resources/js/app.js +++ b/resources/js/app.js @@ -18,6 +18,7 @@ window.bulmaToast = require('bulma-toast'); * Eg. ./components/ExampleComponent.vue -> <example-component></example-component> */ import './components'; +import store from "./store"; /** * Constants @@ -78,6 +79,7 @@ const app = new Vue({ } }, mounted() { + store.dispatch('session/fetchSession'); Event.$on('obtener-sesion', () => { axios.get('/subpedidos/obtener_sesion') .then(response => { diff --git a/resources/js/store/index.js b/resources/js/store/index.js new file mode 100644 index 0000000..f2b2ef9 --- /dev/null +++ b/resources/js/store/index.js @@ -0,0 +1,11 @@ +import Vue from 'vue'; +import Vuex from 'vuex'; +import session from './modules/session'; + +Vue.use(Vuex); + +export default new Vuex.Store({ + modules: { + session, + }, +}); diff --git a/resources/js/store/modules/session.js b/resources/js/store/modules/session.js new file mode 100644 index 0000000..9dd00d2 --- /dev/null +++ b/resources/js/store/modules/session.js @@ -0,0 +1,32 @@ +const state = { + role_id: null, + grupo_de_compra_id: null, +}; + +const mutations = { + SET_SESSION(state, { role_id, grupo_de_compra_id }) { + state.role_id = role_id; + state.grupo_de_compra_id = grupo_de_compra_id; + }, +}; + +const actions = { + async fetchSession({ commit }) { + const response = await axios.get('/session'); + console.log(response.data); + commit('SET_SESSION', { + role_id: response.data.role_id, + grupo_de_compra_id: response.data.grupo_de_compra_id, + }); + }, +}; + +const getters = {}; + +export default { + namespaced: true, + state, + mutations, + actions, + getters, +}; diff --git a/routes/web.php b/routes/web.php index b5a9882..b21cfbd 100644 --- a/routes/web.php +++ b/routes/web.php @@ -24,6 +24,10 @@ Auth::routes(['register' => false]); Route::get('/', 'RouteController@home')->name('home'); +Route::middleware('auth')->group(function () { + Route::get('/session', 'UserController@session')->name('session'); +}); + Route::middleware(['auth', 'role:barrio'])->group( function() { Route::get('/productos', 'ProductoController@index')->name('productos.index');