summaryrefslogtreecommitdiff
path: root/app/abilities/user_abilities.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/abilities/user_abilities.rb')
-rw-r--r--app/abilities/user_abilities.rb25
1 files changed, 25 insertions, 0 deletions
diff --git a/app/abilities/user_abilities.rb b/app/abilities/user_abilities.rb
new file mode 100644
index 00000000000..37f884fdd86
--- /dev/null
+++ b/app/abilities/user_abilities.rb
@@ -0,0 +1,25 @@
+class UserAbilities < Abilities
+ def self.abilities(user, subject)
+ if anonymous?(user)
+ anonymous_abilities(subject)
+ else
+ authenticated_abilities(user, subject)
+ end
+ end
+
+ private
+
+ def self.anonymous_abilities(subject)
+ authenticated_abilities(nil, subject) unless restricted_public_level?
+ end
+
+ def self.authenticated_abilities(_user, _subject)
+ [:read_user]
+ end
+
+ def self.restricted_public_level?
+ current_application_settings
+ .restricted_visibility_levels
+ .include?(Gitlab::VisibilityLevel::PUBLIC)
+ end
+end