| Class | Admin::UsersController |
| In: |
app/controllers/admin/users_controller.rb
|
| Parent: | Admin::BaseController |
Controlador para la administración de usuarios
Creación de nuevo usuario
# 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
# 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
# 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
# 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
# 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
# File app/controllers/admin/users_controller.rb, line 26
26: def new
27: @user = Admin.new(:email => params[:email])
28: end
Modificar password de un usuario
# 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
# 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
# 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
# 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
# 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