From 73624e63c52f915c1530d29a965cee9d0ae2de7d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?R=C3=A9gis=20Hanol?= <regis@hanol.fr>
Date: Sun, 23 Aug 2015 22:33:03 +0200
Subject: [PATCH] FIX: revoke any api keys when suspending an user

---
 app/controllers/admin/users_controller.rb       |  1 +
 spec/controllers/admin/users_controller_spec.rb | 12 +++++++++++-
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/app/controllers/admin/users_controller.rb b/app/controllers/admin/users_controller.rb
index b0758e3d1..c096cf078 100644
--- a/app/controllers/admin/users_controller.rb
+++ b/app/controllers/admin/users_controller.rb
@@ -53,6 +53,7 @@ class Admin::UsersController < Admin::AdminController
     @user.suspended_till = params[:duration].to_i.days.from_now
     @user.suspended_at = DateTime.now
     @user.save!
+    @user.revoke_api_key
     StaffActionLogger.new(current_user).log_user_suspend(@user, params[:reason])
     MessageBus.publish "/logout", @user.id, user_ids: [@user.id]
     render nothing: true
diff --git a/spec/controllers/admin/users_controller_spec.rb b/spec/controllers/admin/users_controller_spec.rb
index d76ea7c69..4f93fe55a 100644
--- a/spec/controllers/admin/users_controller_spec.rb
+++ b/spec/controllers/admin/users_controller_spec.rb
@@ -121,6 +121,17 @@ describe Admin::UsersController do
 
     end
 
+    context '.suspend' do
+
+      let(:evil_trout) { Fabricate(:evil_trout) }
+
+      it "also revoke any api keys" do
+        User.any_instance.expects(:revoke_api_key)
+        xhr :put, :suspend, user_id: evil_trout.id
+      end
+
+    end
+
     context '.revoke_admin' do
       before do
         @another_admin = Fabricate(:admin)
@@ -501,7 +512,6 @@ describe Admin::UsersController do
     user = DiscourseSingleSignOn.parse(sso.payload)
                                 .lookup_or_create_user
 
-
     sso.name = "Bill"
     sso.username = "Hokli$$!!"
     sso.email = "bob2@bob.com"