Class Admin::UsersController
In: app/controllers/admin/users_controller.rb
Parent: Admin::BaseController

Controlador para la administración de usuarios

Methods

create   destroy   edit   export   index   new   permisos   pwd_edit   pwd_update   search   show   update  

Public Instance methods

Creación de nuevo usuario

[Source]

    # File app/controllers/admin/users_controller.rb, line 43
43:   def create
44:     @user = params[:user][:type].constantize.new(params[:user])
45:     if @user.save
46:       flash[:notice] = "El usuario ha sido dado de alta!"
47:       redirect_to admin_users_url(:t => @user.type)
48:     else
49:       render :action => "new"
50:     end
51:   end

[Source]

     # File app/controllers/admin/users_controller.rb, line 120
120:   def destroy
121:     @user = User.find(params[:id])
122:     user_type = @user.type
123:   
124:     if @user.destroy
125:       flash[:notice] = "El usuario se ha borrado correctamente"
126:       redirect_to admin_users_url(:t => user_type) and return
127:     else
128:       flash[:error] = "No ha podido borrarse el usuario"
129:       redirect_to edit_admin_user_path(@user) and return
130:     end
131:   end

Modificar un usuario

[Source]

    # File app/controllers/admin/users_controller.rb, line 61
61:   def edit
62:     @user = User.find(params[:id])
63:     get_document_counters
64:   end

Export en formato "excel" de todos los usuarios registrados

[Source]

     # File app/controllers/admin/users_controller.rb, line 139
139:   def export
140:     @users = User.find(:all, :order => "id")
141:     CSV.open("#{Document::EXPORT_PATH}/usuarios.csv", "w", ";") do |writer|
142:       writer << ['id', 'Email', 'Nombre', 'Apellidos', 'Tipo', 'Departamento', 'Lugar', 'URL', 'Medio', 'Teléfono', 'Twitter']
143:       
144:       @users.each do |user|
145:         department = user.respond_to?("department") ? user.department.name : ""
146:         writer << [user.id, "#{user.email}", "#{user.name}", "#{user.last_names}", "#{User::TYPES[user.type]}", \
147:                    "#{department}", "#{user.raw_location}", "#{user.url}", "#{user.media}", 
148:                    "#{user.organization}", "#{user.telephone}", "#{user.screen_name}"]
149:       end
150:     end
151:     send_file("#{Document::EXPORT_PATH}/usuarios.csv", :type => "text/csv")
152:   end

Listado de usuarios, por tipos

[Source]

    # File app/controllers/admin/users_controller.rb, line 8
 8:   def index
 9:     
10:     if params[:q].present?
11:       conditions = ["lower(tildes(name || coalesce(last_names, '') || coalesce(telephone, '') || email)) like ?", "%#{params[:q].tildes.downcase}%"]
12:     else
13:       @t = params[:t] || 'Admin'
14:       conditions = ["type=?", @t]
15:     end
16:     
17:     @users = User.paginate(:page => params[:page], 
18:       :conditions => conditions,
19:       :order => "(CASE WHEN status = 'pendiente' THEN 0 ELSE 1 end), tildes(lower(name)), email")
20:       
21:     @sessions = SessionLog.find :all, :joins => :user, :conditions => ["type=?", @t], 
22:       :order => "action_at DESC", :limit => 20
23:   end

Formulario de nuevo usuario

[Source]

    # File app/controllers/admin/users_controller.rb, line 26
26:   def new
27:     @user = Admin.new(:email => params[:email])
28:   end

Vista de los permisos de cada tipo de usuario

[Source]

     # File app/controllers/admin/users_controller.rb, line 134
134:   def permisos
135:     send_file("#{RAILS_ROOT}/app/views/admin/users/permisos.pdf")
136:   end

Modificar password de un usuario

[Source]

     # File app/controllers/admin/users_controller.rb, line 105
105:   def pwd_edit
106:     @user=User.find(params[:id])
107:   end

Actualizar password de un usuario

[Source]

     # File app/controllers/admin/users_controller.rb, line 110
110:   def pwd_update
111:     @user=User.find(params[:id])
112:     if @user.update_attributes(:password=>params[:user][:password], :password_confirmation => params[:user][:password_confirmation])
113:       flash[:notice] = "Contraseña modificada"
114:       redirect_to(params[:return_to].empty? ? admin_users_path : params[:return_to])
115:     else
116:       render :action => "pwd_edit"
117:     end
118:   end

Búsqueda del usuario por email, para ofrecer el cambio de perfil si es que ya existe

[Source]

    # File app/controllers/admin/users_controller.rb, line 31
31:   def search
32:     if params[:email]
33:       @user = User.find_by_email(params[:email])
34:       if @user
35:         render :action => "make_admin"
36:       else
37:         redirect_to :action => 'new', :email => params[:email], :t => params[:t]
38:       end
39:     end
40:   end

Vista de un usuario

[Source]

    # File app/controllers/admin/users_controller.rb, line 54
54:   def show
55:     @user = User.find(params[:id])
56:     @sessions = @user.session_logs.find :all, :order => "action_at DESC", :limit => 20
57:     @comments = @user.comments.find :all, :order => "created_at DESC"
58:   end

Actualizar un usuario

[Source]

     # File app/controllers/admin/users_controller.rb, line 67
 67:   def update
 68:     if params[:submit_cancel]      
 69:       redirect_to admin_users_path
 70:     else
 71:       @user = User.find(params[:id])
 72:       get_document_counters
 73:       if params[:user][:type]
 74:         # Tengo que hacer esto para que cambie el class de user y actualice bien el departamento
 75:         @user.type= params[:user][:type]
 76:         @user.save
 77:         @user = User.find(params[:id])
 78:       end
 79:       
 80:       approving_user = @user.status.eql?("pendiente") && params[:user][:status].eql?("aprobado")
 81:       
 82:       if @user.update_attributes(params[:user])
 83:         flash[:notice] = 'El usuario se ha actualizado correctamente.'
 84:         
 85:         if @user.is_a?(Journalist) && approving_user
 86:           email = Notifier.create_welcome_journalist(@user)
 87: 
 88:           begin
 89:             logger.info("Mandando bienvenida a #{@user.email}")
 90:             Notifier.deliver(email)
 91:           rescue Net::SMTPServerBusy, Net::SMTPSyntaxError => err_type
 92:             logger.info("Error al mandar mail de bienvenida: " + err_type)
 93:             flash[:error] = t('session.Error_servidor_correo')
 94:           end
 95:         end
 96:         
 97:         redirect_to admin_users_url(:t => @user.type)
 98:       else
 99:         render :action => 'edit'
100:       end
101:     end
102:   end

[Validate]