Agregada store de vuex para guardar información de la sesión tras login + ruta y controller + resource reducido de grupo de compra para pedidos
This commit is contained in:
parent
6d3173cd1f
commit
a485994a72
7 changed files with 115 additions and 0 deletions
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
39
app/Http/Controllers/UserController.php
Normal file
39
app/Http/Controllers/UserController.php
Normal file
|
@ -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;
|
||||
}
|
||||
}
|
22
app/Http/Resources/GrupoDeCompraReducidoResource.php
Normal file
22
app/Http/Resources/GrupoDeCompraReducidoResource.php
Normal file
|
@ -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,
|
||||
];
|
||||
}
|
||||
}
|
2
resources/js/app.js
vendored
2
resources/js/app.js
vendored
|
@ -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 => {
|
||||
|
|
11
resources/js/store/index.js
vendored
Normal file
11
resources/js/store/index.js
vendored
Normal file
|
@ -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,
|
||||
},
|
||||
});
|
32
resources/js/store/modules/session.js
vendored
Normal file
32
resources/js/store/modules/session.js
vendored
Normal file
|
@ -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,
|
||||
};
|
|
@ -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');
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue