Hola, estoy usando Laravel 4 y uso los procedimientos de laravel para logearme, osea uso Auth, sin embargo el sistema que estoy realizando debe contar con logeo para adiministradores, o usuarios del sistema (modifican productos, etc, etc) y logeo tambien para usuarios normales para realizar compras.
Pero obviamente tener registros de administradores y usuarios normales en la misma tabla es una mala practica. Que es lo que deberia hacer en este caso?
Gracias
entre Desarrolladores
Recibe ayuda de expertos
Registrate y pregunta
Es gratis y fácil
Recibe respuestas
Respuestas, votos y comentarios
Vota y selecciona respuestas
Recibe puntos, vota y da la solución
Pregunta
Logeo con 2 tablas en Laravel (Auth)
- preguntó
- Web
- 2037 Vistas
- 1 Respuestas
- solucionada
1 Respuesta
Hola @christian_avalos, al crear dos tablas para usuarios como bien dices no sería una buena práctica, te doy una mejor forma de manejar a tus usuarios, puedes crear un sistema de permisos y grupos de esta forma asignamos a los usuarios un grupo que cuenta con varios permisos, llamemos a las tablas: permissions
, groups
y group_permission
usuarios
contendra una columna para el grupo o bien una tabla que haga de referencia entre los usuarios y los grupos.
id (int) | group_id (int) | username (varchar) | email (varchar)
1 1 | christian_avalos | [email protected]
groups
contendrá a los grupos de usuario, un nombre y una descripción (opcional), su estructura podría ser:
id (int) | name (varchar) | description (varchar)
1 Administrador ...
2 Regular ...
permissions
contendra los permisos como variables en camel case y una descripcion (opcional)
id (int) | name (varchar) | description (varchar)
1 can_modify_products | puede modificar productos
2 can_shop_products | puede comprar productos
group_permission
contendra la relación entre los grupos y los permisos así como un campo que especifique si esta permitido ese permiso, su estructura puede ser la siguiente:
group_id (int) | permission_id (int) | allowed (tinyint)
1 | 1 | 1
1 | 2 | 1
2 | 1 | 0
2 | 2 | 1
de modo que tendrias en laravel los modelos User, Group y Permission
el modelo Group puede contener lo siguiente:
public function permissions()
{
return $this->belongsToMany('permission');
}
public function hasPermission($permission)
{
return in_array($permission, array_fetch($this->permissions->toArray(), 'name'));
}
el modelo User lo siguiente:
public function group()
{
return $this->belongsTo('Group');
}
con esto puedes manejar a tus usuarios de mejor manera.
$user = User::find(1);
if( $user->group->id == 1 )
{
// el usuario es administrador
}
if( $user->group->hasPermission('can_modify_product') )
{
// el usuario puede modificar productos
}
if( $user->group->hasPermission('can_shop_products') )
{
// el usuario puede hacer compras a productos
}
saludos!
Por favor, accede o regístrate para añadir un comentario.
Por favor, accede o regístrate para responder a esta pregunta.
En el blog
-
- 98478
- 1
- Jul 5, 2015
Preguntas sin respuesta
-
- 58
- 1
- Jul 11
-
- 52
- 0
- Jul 7
-
- 1074
- 0
- Jun 22
-
- 132
- 0
- May 26
-
- 110
- 0
- May 24
-
- 125
- -1
- May 21
-
- 129
- 1
- May 18
-
- 168
- 1
- May 9
- ver todas las preguntas
Actividad Reciente
-
Ira87 compartió en su muro hace 5 días
Tengo 2 tablas relació -
Ira87 compartió en su muro hace 5 días
Necesito ayuda yoelrodguez seleccionó una respuesta hace 6 días
Error a ejecutar mi apliación en framework flashPeter comentó hace 6 días
Error a ejecutar mi apliación en framework flashyoelrodguez respondió hace 6 días
Error a ejecutar mi apliación en framework flashyoelrodguez preguntó Ago 9
Error a ejecutar mi apliación en framework flash-
daniel publicó en el muro de daniel
Saludo distinguido IngAgo 7 kahlito seleccionó una respuesta Ago 4
Hacer efecto de transición sobre dos imágeneskahlito seleccionó una respuesta Ago 4
Hacer efecto de transición sobre dos imágeneskahlito seleccionó una respuesta Ago 4
Hacer efecto de transición sobre dos imágenes
Ultimas Preguntas
Usuarios Top
- Leonardo-Tadei
- 227240 Puntos
- Peter
- 150280 Puntos
- white
- 75880 Puntos
- carlossevi
- 63580 Puntos
- magarzon
- 30650 Puntos
- pregunton
- 20400 Puntos