Foros del Web » Programando para Internet » Ruby »

roles de usuarios

Estas en el tema de roles de usuarios en el foro de Ruby en Foros del Web. Buenas, mi pregunta es sencilla(o eso espero). Para haceros la pregunta y la solucion mas facil, vamos a suponer que mi codigo es la primera ...
  #1 (permalink)  
Antiguo 30/12/2009, 06:40
 
Fecha de Ingreso: julio-2009
Mensajes: 36
Antigüedad: 14 años, 8 meses
Puntos: 0
roles de usuarios

Buenas, mi pregunta es sencilla(o eso espero).

Para haceros la pregunta y la solucion mas facil, vamos a suponer que mi codigo es la primera parte de la pagina guides.rails.com(creo que era asi). En ese codigo solamente tenemos una pagina para crear posts.

Pues bien, me gustaría hacer para que tenga un administrador(esto de crear usuarios y toda esa parafernalia lo tengo implementado) el cual podrá borrar y editar todos los posts, y un usuario normal que solo podrá BORRAR Y EDITAR sus posts (y ver todos los posts, claro jeje).

No sé si para solucionarlo es todo un rollo para tener que usar un plugin, porque estoy intentando hacer todo sin plugins.

Lo unico que sé hacer es que el usuario logeado pueda ver toda la web y una persona navegante anonima tenga restringido el acceso a ciertas cosas(por ejemplo a que no podrá acceder a los posts y eso).

Si necesitais alguna parte de mi codigo y tal.. pedidmelo y os lo enseño.

Gracias.

EDITO: Se me habia ocurrido crear un nuevo controlador en el que asocie user_id y post_id y podria ser facil de resolver, lo malo de esto es que tendría que crear esa relacion con cada modelo que haga, por ejemplo si mas adelante hago comentarios o mas cosas, ademas de que no sigue la filosofia de ruby de "no repitas codigo" jeje.

Última edición por alr11389; 30/12/2009 a las 07:51
  #2 (permalink)  
Antiguo 31/12/2009, 18:08
 
Fecha de Ingreso: julio-2009
Mensajes: 36
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: roles de usuarios

Estaba pensando en hacer una migración en la que añado a la base de datos la columna "Rol" a usuarios.

A Rol lo asigno como string, y como mi rol es sencillo, podría poner en el modelo usuario:

ROL = [
["administrador", "admin"],
["usuario", "usuario"]
]

y en el formulario asignar ese campo como oculto y que por defecto sea usuario(o que solo pueda crear un usuario administrador un administrador, o ya se me ocurrirá algo jeje).

A partir de ahi solo me quedaría comprobar con un if si el rol del usuario es admin o usuario para mostrar un menú u otro.

No sé si os parecerá estupido que no sepa hacerlo, pero esque no sé jaja.

Actualmente para las sesiones las compruebo con "if session[:usuario_id]" pero para lo otro ni idea... y eso que probé con:

if @usuario.rol == "usuario"
if usuario.rol == "usuario"
if Usuarios.rol == "usuario"

con bucles para recorrer el array usuario, con comillas simples y dobles.. de todo jaja. A ver si alguien me echa ese pequeño guante(y si tiene alguna sugerencia sobre mi modo de hacer el rol, mejor)

gracias

EDITO: esque no lo entiendo. Mi helper respecto a la vista tiene:

def comprobar_admin
usuario= Usuario.find_by_id(session[:usuario_id])
if usuario.id == "1"
return true
else
return false
end
end

En este caso no tengo aun definido la propiedad Rol y lo estoy probando por medio de la id del usuario.

En la vista tengo:

<% if session[:usuario_id] %> #para comprobar que se ha iniciado sesion
<% if comprobar_admin %>
#aqui escribo el codigo en el caso de que sea administrador
<% end %>
<% end %>

Yo creo, que por logica, deberia funcionar.. pero que va.. al menos no da ningun error. Segun el resultado, parece como que nunca nadie es administrador.

Anda! mira, con el id no funciona, pero con el nombre de usuario si. Que raro, bueno.. al menos funciona y esto podria servirle para alguien en un futuro.

Última edición por alr11389; 31/12/2009 a las 19:33
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:21.