Gestión de autorizaciones y autentificaciones en RoR 2


2. Una vez creados asignaremos las rutas restful dentro de la carpeta config/routes.rb
Abrimos el fichero config/routes.rb, y introducimos las siguientes entradas:

map.resources :usersmap.resource  :account

Para mapear los controladores vamos a utilizar las siguientes URLs para mapear la autentificación:



map.signup '/signup', :controller => 'users', :action => 'new'
map.login  '/login', :controller => 'account', :action => 'new'

map.logout '/logout', :controller => 'account', :action => 'destroy'

3. Permitir a los propios usuarios mantener sus detalles una vez registrados, tenemos que incluir el siguiente código al controlador que gestiona como hemos visto la autentificación de los usuarios.

En el caso de que hayamos creado un controlador denominado “account” y un modelo denominado como “user”, abriremos el fichero “account_controller.rb” dentro de nuestra carpeta de “app/controller” . Abrimos el fichero ‘<nombrecontrolador_controller.rb‘ y le añadimos el siguiente código:

## Edit User## allow a user to edit their detailsdef edit

@user = User.find(self.current_user.id)

end



##update the user table

def update

@user = User.find(self.current_user.id)

if @user.update_attributes(params[:user])

flash[:notice] = 'User was successfully updated.'

redirect_to :action => 'index'

else

render :action => 'edit'

end

end

end

Una vez añadido este código al controlador vamos a crear las siguientes vistas, dentro del controlador ‘user’:

_userForm.rhtml

<%= error_messages_for 'user' %><!--[form:user]--><!-- all custom fields here -->

<p><label for="user_email">Email Address</label><br/>

<%= text_field 'user', 'email'  %></p>

<!--[eoform:user]-->

Y luego creamos otro recurso más denominado ‘edit.rhmtl’

<p>Edit your details</p><%= start_form_tag :action => 'update' %><%= render :partial => 'userForm' %>

<%= submit_tag 'Edit' %>

<%= end_form_tag %>