C0 code coverage information
Generated on Fri Aug 25 10:11:28 PDT 2006 with rcov 0.7.0
Code reported as executed by Ruby looks like this...
and this: this line is also marked as covered.
Lines considered as run by rcov, but not reported by Ruby, look like this,
and this: these lines were inferred by rcov (using simple heuristics).
Finally, here's a line marked as not executed.
1 class UsersController < ApplicationController
2 model :user
3 layout 'staff'
4
5 #before_filter :check_host # if it's on www send it to cms.....
6 before_filter :check_admin_role, :only => [:list, :create, :users_awaiting_approval, :approve_user, :deny_user, :undelete]
7 before_filter :check_current_user_or_admin, :only => [:change_password, :edit, :delete, :restore_deleted]
8
9 def index
10 list
11 render :action => 'list'
12 end
13
14 def login
15 return if generate_blank
16 @user = User.new(@params['user'])
17 if @session['user'] = User.authenticate(@params['user']['username'], @params['user']['password'])
18 flash['notice'] = l(:user_login_succeeded)
19 redirect_back_or_default :action => 'welcome'
20 else
21 @login = @params['user']['username']
22 flash.now['message'] = l(:user_login_failed)
23 end
24 end
25
26 def list
27 deleted_parm = 0
28 if params[:deleted]
29 deleted_parm = 1
30 @deleted_users = true
31 end
32
33 @user_pages, @users = paginate :user, :per_page => 50, :order => "role_id DESC, display_name", :conditions => ["deleted = ?", deleted_parm]
34 end
35
36 def search
37 criteria = params[:search][:criteria].strip
38
39 @user_pages, @users = paginate :user, :per_page => 10, :conditions => "(username LIKE N'%#{ criteria }%' OR display_name LIKE N'%#{ criteria }%') AND deleted = 0"
40 @search_results = true
41 render :action => 'list'
42 end
43
44 def logout
45 reset_session
46 redirect_to :action => 'login'
47 end
48
49 def change_password
50 return if generate_filled_in(params[:user_id] || params[:id])
51 @params['user'].delete('form')
52 begin
53 User.transaction(@user) do
54 @user.editor = @session['user']
55 @user.change_password(@params['user']['password'], @params['user']['password_confirmation'])
56 if @user.save
57 UserNotify.deliver_change_password(@user, @params['user']['password'])
58 flash.now['notice'] = l(:user_updated_password, "#{@user.email}")
59 end
60 end
61 rescue
62 flash.now['message'] = l(:user_change_password_email_error)
63 end
64 end
65
66 def forgot_password
67 # Always redirect if logged in
68 if user?
69 flash['message'] = l(:user_forgot_password_logged_in)
70 redirect_to :action => 'change_password'
71 return
72 end
73
74 # Render on :get and render
75 return if generate_blank
76
77 # Handle the :post
78 if @params['user']['email'].empty?
79 flash.now['message'] = l(:user_enter_valid_email_address)
80 elsif (user = User.find_by_email(@params['user']['email'])).nil?
81 flash.now['message'] = l(:user_email_address_not_found, "#{@params['user']['email']}")
82 else
83 begin
84 User.transaction(user) do
85 user.editor = @session['user']
86 key = user.generate_security_token
87 url = url_for(:action => 'change_password') + "?user_id=#{user.id}&key=#{key}"
88 UserNotify.deliver_forgot_password(user, url)
89 flash['notice'] = l(:user_forgotten_password_emailed, "#{@params['user']['email']}")
90 unless user?
91 redirect_to :action => 'login'
92 return
93 end
94 redirect_back_or_default :action => 'welcome'
95 end
96 rescue
97 flash.now['message'] = l(:user_forgotten_password_email_error, "#{@params['user']['email']}")
98 end
99 end
100 end
101
102 def edit
103 return if generate_filled_in(params[:id])
104 if @params['user']['form']
105 form = @params['user'].delete('form')
106 begin
107 case form
108 when "edit"
109 changeable_fields = nil
110 if @session['user'].role_id >= UserSystem::USER_ROLE[:god] then
111 changeable_fields = ['display_name', 'enabled', 'expires', 'expires_at(1i)', 'expires_at(2i)', 'expires_at(3i)', 'role_id']
112 else
113 changeable_fields = ['display_name']
114 end
115
116 params = @params['user'].delete_if { |k,v| not changeable_fields.include?(k) }
117 @user.attributes = params
118 @user.editor = @session['user']
119 if @user.save
120 flash[:notice] = "User updated successfully"
121 @user.invalidate_user_session
122 end
123 when "change_password"
124 change_password
125 when "delete"
126 delete
127 else
128 raise "unknown edit action"
129 end
130 end
131 end
132 end
133
134 # Will deactivate a user and not show them in any user lists.
135 # Due to the fact that articles can be tied to deleted users,
136 # we will never truly delete a user, only flag them as deleted.
137 def delete
138 @user = User.find(params[:id])
139 begin
140 User.transaction(@user) do
141 @user.editor = @session['user']
142 if params[:submit] == "-- Kill Account --"
143 @user.destroy
144 redirect_to :action => 'list'
145 else
146 if @user.id == @session['user'].id
147 key = @user.set_delete_after
148 url = url_for(:action => 'restore_deleted')
149 url += "?user_id=#{@user.id}&key=#{key}"
150 @user.save
151 UserNotify.deliver_pending_delete(@user, url)
152 else
153 @user.set_deleted
154 @user.save
155 @user.invalidate_user_session
156 end
157 end
158 end
159 if @user.id == @session['user'].id
160 logout
161 else
162 redirect_to :action => 'list'
163 end
164 rescue
165 flash.now['message'] = l(:user_delete_email_error, "#{@user['email']}")
166 redirect_back_or_default :action => 'welcome'
167 end
168 end
169
170 def restore_deleted
171 @user = @session['user']
172 @user.editor = @session['user']
173 @user.deleted = 0
174 if not @user.save
175 flash.now['notice'] = l(:user_restore_deleted_error, "#{@user['username']}")
176 redirect_to :action => 'login'
177 else
178 redirect_to :action => 'welcome'
179 end
180 end
181
182 def undelete
183 @user = User.find(params[:id])
184 @user.deleted = 0
185 @user.editor = @session['user']
186 if @user.save
187 flash[:notice] = "User #{ @user.username } undeleted successfully"
188 else
189 flash[:error] = "Could not undelete user #{ @user.username }"
190 end
191 redirect_to :action => 'list', :deleted => true
192 end
193
194 def welcome
195 redirect_to :controller => 'articles', :action => 'list'
196 end
197
198 def not_enabled
199 end
200
201 def awaiting_approval
202 @user_pages, @users = paginate :user, :per_page => 10,
203 :conditions => "enabled = 0 AND verified = 1 AND deleted = 0", :order=> "display_name"
204 end
205
206 def approve
207 @user = User.find(params[:id])
208 @user.editor = @session['user']
209 if @user.update_attributes({ :enabled => 1, :role_id => params[:role] })
210 flash['notice'] = "User has been enabled. Notification has been sent to user."
211 UserNotify.deliver_approved(@user)
212 @user.invalidate_user_session
213 else
214 flash['error'] = "Error occured while trying to approve user. Please contact administrator."
215 end
216
217 awaiting_approval
218 render :action => 'awaiting_approval'
219 end
220
221 def deny
222 @user = User.find(params[:id])
223 @user.editor = @session['user']
224 @user.destroy
225
226 flash['notice'] = "User has been denied access. Login resources have been destroyed."
227 awaiting_approval
228 render :action => 'awaiting_approval'
229 end
230
231 # protected for now.
232 def create
233 signup
234 end
235
236 # protected for now.
237 def signup
238 return if generate_blank
239 @params['user'].delete('form')
240 @user = User.new(@params['user'])
241 begin
242 User.transaction(@user) do
243 @user.new_password = true
244 @user.editor = @session['user']
245 if @user.save
246 key = @user.generate_security_token
247 url = url_for(:action => 'welcome')
248 url += "?user_id=#{@user.id}&key=#{key}"
249 begin
250 UserNotify.deliver_signup(@user, @params['user']['password'], url)
251 rescue
252 flash.now['message'] = l(:user_confirmation_email_error)
253 return
254 end
255 flash['notice'] = l(:user_signup_succeeded)
256 redirect_to :action => 'login'
257 end
258 end
259 rescue
260 flash.now['message'] = "Error in creating new account: #{$!}"
261 end
262 end
263
264 protected
265
266 def check_host
267 if !request.env['HTTP_HOST'].nil? and request.env['HTTP_HOST'] =~ /^www/
268 redirect_to "http://cms.pitchforkmedia.com/"
269 end
270 end
271
272 def protect?(action)
273 if ['login', 'logout', 'forgot_password'].include?(action)
274 return false
275 else
276 return true
277 end
278 end
279
280 # Generate a template user for certain actions on get
281 def generate_blank
282 case @request.method
283 when :get
284 @user = User.new
285 render
286 return true
287 end
288 return false
289 end
290
291 # Generate a template user for certain actions on get
292 def generate_filled_in(user_id)
293 @user = User.find(user_id)
294 case @request.method
295 when :get
296 render
297 return true
298 end
299 return false
300 end
301 end
Generated using the rcov code coverage analysis tool for Ruby version 0.7.0.