summaryrefslogtreecommitdiff
path: root/doc/development/ee_features.md
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2019-11-06 18:06:29 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2019-11-06 18:06:29 +0000
commitbcdcff749598f4275f7c250c07cbfe632cfe7fdb (patch)
treefa3f6e54632837f21319794dbd9136e3de3a76ba /doc/development/ee_features.md
parent5277f8e69e935eabd3bf8c5e7833471b5bfad1d9 (diff)
downloadgitlab-ce-bcdcff749598f4275f7c250c07cbfe632cfe7fdb.tar.gz
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'doc/development/ee_features.md')
-rw-r--r--doc/development/ee_features.md40
1 files changed, 11 insertions, 29 deletions
diff --git a/doc/development/ee_features.md b/doc/development/ee_features.md
index cc9df479492..d716325f332 100644
--- a/doc/development/ee_features.md
+++ b/doc/development/ee_features.md
@@ -245,47 +245,29 @@ end
#### Use self-descriptive wrapper methods
-When it's not possible/logical to modify the implementation of a
-method. Wrap it in a self-descriptive method and use that method.
+When it's not possible/logical to modify the implementation of a method, then
+wrap it in a self-descriptive method and use that method.
-For example, in CE only an `admin` is allowed to access all private
-projects/groups, but in EE also an `auditor` has full private
-access. It would be incorrect to override the implementation of
-`User#admin?`, so instead add a method `full_private_access?` to
-`app/models/users.rb`. The implementation in CE will be:
+For example, in GitLab-FOSS, the only user created by the system is `User.ghost`
+but in EE there are several types of bot-users that aren't really users. It would
+be incorrect to override the implementation of `User#ghost?`, so instead we add
+a method `#internal?` to `app/models/user.rb`. The implementation will be:
```ruby
-def full_private_access?
- admin?
+def internal?
+ ghost?
end
```
In EE, the implementation `ee/app/models/ee/users.rb` would be:
```ruby
-override :full_private_access?
-def full_private_access?
- super || auditor?
+override :internal?
+def internal?
+ super || bot?
end
```
-In `lib/gitlab/visibility_level.rb` this method is used to return the
-allowed visibility levels:
-
-```ruby
-def levels_for_user(user = nil)
- if user.full_private_access?
- [PRIVATE, INTERNAL, PUBLIC]
- elsif # ...
-end
-```
-
-See [CE MR][ce-mr-full-private] and [EE MR][ee-mr-full-private] for
-full implementation details.
-
-[ce-mr-full-private]: https://gitlab.com/gitlab-org/gitlab-foss/merge_requests/12373
-[ee-mr-full-private]: https://gitlab.com/gitlab-org/gitlab/merge_requests/2199
-
### Code in `config/routes`
When we add `draw :admin` in `config/routes.rb`, the application will try to