| Class | PeopleController |
| In: |
app/controllers/people_controller.rb
|
| Parent: | ApplicationController |
Controlador para el registro de usuarios de tipo Person
Creación de la cuenta
# File app/controllers/people_controller.rb, line 31
31: def create
32: @title = t('people.registro_nuevo', :name => t('site_name'))
33: @user = Person.new(params[:user])
34: @user.user_ip = request.remote_ip
35:
36: respond_to do |format|
37: if @user.save
38: cookies.delete :auth_token
39: # protects against session fixation attacks, wreaks havoc with
40: # request forgery protection.
41: # uncomment at your own risk
42: # reset_session
43: # self.current_user = @user
44:
45: flash[:notice] = t('people.gracias_por_unirte')
46: flash[:tracking] = "/#{I18n.locale}/registered"
47:
48: email = Notifier.create_activate_person_account(@user)
49:
50: begin
51: logger.info("Mandando activacion a #{@user.email}")
52: Notifier.deliver(email)
53: rescue Net::SMTPServerBusy, Net::SMTPSyntaxError => err_type
54: logger.info("Error al mandar mail de activacion: " + err_type)
55: flash[:error] = t('session.Error_servidor_correo')
56: end
57:
58:
59: format.html { redirect_to(root_path) }
60: format.xml { render :xml => @user, :status => :created, :location => @user }
61: else
62: format.html { render :action => "new" }
63: format.xml { render :xml => @user.errors, :status => :unprocessable_entity }
64: end
65: end
66: end
Formulario de registro
# File app/controllers/people_controller.rb, line 22
22: def new
23: @user = Person.new
24: @title = t('people.registro_nuevo', :name => t('site_name'))
25: # @title = I18n.t('people.registro_nuevo', :name => Notifier::SERVICENAME)
26: # store_previous_location unless session[:return_to]
27: @breadcrumbs_info = [[t('people.registro_nuevo', :name => Notifier::SERVICENAME), signup_path]]
28: end
Actualización de los datos personales
# File app/controllers/people_controller.rb, line 69
69: def update
70: @person = Person.approved.find(current_user.id)
71: if @person.update_attributes(params[:person])
72: redirect_to account_path
73: else
74: render :template => '/account/edit'
75: end
76:
77: end
"Live validation" de los campos de registro
# File app/controllers/people_controller.rb, line 80
80: def validate_field
81: if params[:type].eql?('Person')
82: user_attrs = ['email', 'password', 'password_confirmation', 'url', 'name', 'last_names']
83: elsif params[:type].eql?('Journalist')
84: user_attrs = ['email', 'password', 'password_confirmation', 'media', 'url', 'name', 'last_names']
85: else
86: user_attrs = ['email', 'password', 'password_confirmation', 'telephone', 'name', 'last_names']
87: end
88:
89: user_params = params.dup.delete_if {|k, v| !user_attrs.include?(k)}
90:
91: render :update do |page|
92: if user_params.length > 0
93: u = params[:type].constantize.new(user_params)
94: u.valid?
95: user_params.each do |pk, pv|
96: if u.errors.on(pk)
97: page.select("#user_#{pk}_container span.error_message").each(&:remove)
98: page.insert_html :after, "user_#{pk}", content_tag(:span, u.errors.on(pk).to_a.join(' y '), :class => 'error_message')
99: else
100: page.select("#user_#{pk}_container span.error_message").each(&:remove)
101: end
102: end
103: end
104: end
105: end