Fix #4555: Invalidate sessions for deleted users
Fix three exploits that allowed one to keep using their account after it was deleted: * It was possible to use session cookies from another computer to login after you deleted your account. * It was possible to use API keys to make API requests after you deleted your account. * It was possible to request a password reset, delete your account, then use the password reset link to change your password and login to your deleted account.
This commit is contained in:
@@ -48,6 +48,15 @@ class SessionsControllerTest < ActionDispatch::IntegrationTest
|
||||
assert_response 403
|
||||
end
|
||||
|
||||
should "not allow deleted users to login" do
|
||||
@user.update!(is_deleted: true)
|
||||
post session_path, params: { name: @user.name, password: "password" }
|
||||
|
||||
assert_response 401
|
||||
assert_nil(nil, session[:user_id])
|
||||
assert_equal(true, @user.user_events.failed_login.exists?)
|
||||
end
|
||||
|
||||
should "not allow IP banned users to login" do
|
||||
@ip_ban = create(:ip_ban, category: :full, ip_addr: "1.2.3.4")
|
||||
post session_path, params: { name: @user.name, password: "password" }, headers: { REMOTE_ADDR: "1.2.3.4" }
|
||||
|
||||
Reference in New Issue
Block a user