diff options
Diffstat (limited to 'lib/gitlab/auth/current_user_mode.rb')
-rw-r--r-- | lib/gitlab/auth/current_user_mode.rb | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/lib/gitlab/auth/current_user_mode.rb b/lib/gitlab/auth/current_user_mode.rb index 0f327a39f61..a6d706c2a49 100644 --- a/lib/gitlab/auth/current_user_mode.rb +++ b/lib/gitlab/auth/current_user_mode.rb @@ -77,7 +77,7 @@ module Gitlab return false unless user Gitlab::SafeRequestStore.fetch(admin_mode_rs_key) do - user.admin? && session_with_admin_mode? + user.admin? && (privileged_runtime? || session_with_admin_mode?) end end @@ -154,6 +154,11 @@ module Gitlab Gitlab::SafeRequestStore.delete(admin_mode_rs_key) Gitlab::SafeRequestStore.delete(admin_mode_requested_rs_key) end + + # Runtimes which imply shell access get admin mode automatically, see Gitlab::Runtime + def privileged_runtime? + Gitlab::Runtime.rake? || Gitlab::Runtime.rails_runner? || Gitlab::Runtime.console? + end end end end |