Skip to content

Commit 857cca1

Browse files
committed
Need a better ban hammer
1 parent ff50cf1 commit 857cca1

7 files changed

+81
-49
lines changed

app/controllers/application_controller.rb

+19-3
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ def refresh_user_from_cookie
1717
return unless session[:user_id].nil?
1818
user = User.where(:token => cookies[:login]).first
1919
if !user.nil?
20-
session[:user_id] = user.id
20+
sign_in(user)
2121
#restart the clock
2222
cookies[:login] = { :value => cookies[:login], :expires => 2.weeks.from_now, :domain => COOKIE_DOMAIN}
2323
end
@@ -93,6 +93,14 @@ def fake_style(style)
9393
return style
9494
end
9595

96+
def sign_in(user)
97+
if user.banned
98+
flash[:alert] = 'You have been banned.'
99+
else
100+
session[:user_id] = user.id
101+
end
102+
end
103+
96104
private
97105

98106
# User authentication. Controllers are expected to define the following methods:
@@ -115,13 +123,21 @@ def authenticate
115123
end
116124
return
117125
end
118-
126+
127+
user = User.find(session[:user_id])
128+
if user.banned
129+
flash[:alert] = 'You have been banned.'
130+
session[:user_id] = nil
131+
redirect_to '/'
132+
return
133+
end
134+
119135
# admin only stuff
120136
if admin_action?
121137
handle_access_denied unless verify_admin_action
122138
return
123139
end
124-
140+
125141
# regular user stuff
126142
if !verify_private_action(session[:user_id]) and !verify_admin_action
127143
handle_access_denied

app/controllers/login_controller.rb

+13-11
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ def forum
2222
end
2323

2424
def login_as
25-
session[:user_id] = User.find(params[:id]).id
25+
sign_in(User.find(params[:id]))
2626
redirect_to '/'
2727
end
2828

@@ -31,7 +31,7 @@ def authenticate_normal
3131
# Only validate if the user was previously valid. some people may have bad data and if we
3232
# validate them, they can't log in.
3333
user_was_valid = user.valid?
34-
session[:user_id] = user.id
34+
sign_in(user)
3535
remember = params[:remember] == "true"
3636
if remember
3737
if user.token.nil?
@@ -110,7 +110,7 @@ def authenticate_openid_complete
110110
end
111111
cookies[:login] = { :value => user.token, :expires => 2.weeks.from_now, :domain => COOKIE_DOMAIN}
112112
end
113-
session[:user_id] = user.id
113+
sign_in(user.id)
114114
go_to_return_to()
115115
else
116116
session[:temp_login_details] = {:provider_identifier => ua.provider_identifier, :email => sreg['email'], :name => sreg['nickname'], :provider => ua.provider, :url => ua.url}
@@ -159,7 +159,7 @@ def authenticate_openid_complete
159159
end
160160
user.ip = request.remote_ip()
161161
user.save(:validate => user_was_valid)
162-
session[:user_id] = user.id
162+
sign_in(user)
163163
go_to_return_to
164164
end
165165

@@ -199,7 +199,7 @@ def resolve_name_conflict
199199

200200
if @user.save
201201
session[:temp_login_details] = nil
202-
session[:user_id] = @user.id
202+
sign_in(@user)
203203
go_to_return_to()
204204
return
205205
end
@@ -235,7 +235,7 @@ def resolve_name_required
235235

236236
if @user.save
237237
session[:temp_login_details] = nil
238-
session[:user_id] = @user.id
238+
sign_in(@user)
239239
go_to_return_to()
240240
return
241241
end
@@ -371,7 +371,7 @@ def omniauth_callback
371371
end
372372
return
373373
end
374-
session[:user_id] = user.id
374+
sign_in(user)
375375
if !return_to.nil?
376376
redirect_to return_to
377377
else
@@ -421,7 +421,7 @@ def omniauth_callback
421421
handle_omniauth_failure(user.errors.full_messages.join(', '))
422422
return
423423
end
424-
session[:user_id] = user.id
424+
sign_in(user)
425425
if !return_to.nil?
426426
redirect_to return_to
427427
else
@@ -471,10 +471,12 @@ def go_to_return_to
471471
return_to = params[:return_to]
472472
end
473473
if return_to.nil?
474-
logger.info("No return to URL, going to user page")
475-
redirect_to(:controller => "users", :action => "show", :id => session[:user_id])
474+
if session[:user_id]
475+
redirect_to(:controller => "users", :action => "show", :id => session[:user_id])
476+
else
477+
redirect_to('/')
478+
end
476479
else
477-
logger.info("Going to return to URL - " + return_to)
478480
session[:return_to] = nil
479481
redirect_to(return_to)
480482
end

app/controllers/styles_controller.rb

+1
Original file line numberDiff line numberDiff line change
@@ -467,6 +467,7 @@ def admin_delete_save
467467
end
468468
@style.obsoleting_style_id = params[:style][:obsoleting_style_id]
469469
@style.save(validate: false)
470+
@style.user.update_attribute(:banned, true) if params['ban_user'] == '1'
470471
redirect_to(:action => "show", :id => @style.id, :r => Time.now.to_i)
471472
end
472473

app/controllers/users_controller.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ def create
112112
if @return_to.nil?
113113
@return_to = session[:return_to]
114114
end
115-
session[:user_id] = @user.id
115+
sign_in(@user)
116116
if @return_to.nil?
117117
redirect_to(:action => "show", :id => @user.id)
118118
else

app/views/styles/admin_delete.html.erb

+6-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,12 @@
2020
<label for="obsoleting-style-id">Superceded by (ID)</label>
2121
<input id="obsoleting-style-id" name="style[obsoleting_style_id]" value="<%=h @style.obsoleting_style_id%>">
2222
</p>
23-
23+
24+
<p>
25+
<label for="ban-user">Ban user?</label>
26+
<input type="checkbox" id="ban-user" name="ban_user" value="1">
27+
</p>
28+
2429
<p>
2530
<input type="hidden" name="id" value="<%=@style.id%>">
2631
<input type="submit" value="Delete">
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
class AddUserBanFlag < ActiveRecord::Migration
2+
def change
3+
add_column :users, :banned, :boolean, default: false, null: false
4+
end
5+
end

0 commit comments

Comments
 (0)