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 @@ +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 @@ + $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 -> */ 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');