diff options
author | Rémy Coutable <remy@rymai.me> | 2016-08-11 14:56:36 +0300 |
---|---|---|
committer | Rémy Coutable <remy@rymai.me> | 2016-08-11 14:56:36 +0300 |
commit | 9a30b27bba6cdaf14c051112500d1940e1390649 (patch) | |
tree | ccc66d9b62f84ce0665433b7f34b5deec0b64be5 /app | |
parent | af019d2fa73bfb530454cf884348c49789c9ea28 (diff) | |
parent | 115c00fd7e1efb249bd603d20d50a8e23ca45ee7 (diff) |
Merge branch '18583-implement-access-request-to-project-group-api' into 'master'
Add group members API endpoints to request access and approve requests
## What does this MR do?
Add group members API endpoints to request access and approve requests.
## Are there points in the code the reviewer needs to double check?
I chose to factorize the group/project members API as well as the new group/project access requests API.
I initially also created new services to centralize the permission checks related to actions on members, but this was out of scope and this MR is already quite big so I opened a temp MR at !5566 based on this one.
## Why was this MR needed?
To finish the "request access" feature.
## What are the relevant issue numbers?
Closes #18583.
## Does this MR meet the acceptance criteria?
- [x] [CHANGELOG](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CHANGELOG) entry added
- [x] [Documentation created/updated](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/development/doc_styleguide.md)
- [x] API support added
- Tests
- [x] Added for this feature/bug
- [x] All builds are passing
- [x] Conform by the [style guides](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CONTRIBUTING.md#style-guides)
- [x] Branch has no merge conflicts with `master` (if you do - rebase it please)
- [x] [Squashed related commits together](https://git-scm.com/book/en/Git-Tools-Rewriting-History#Squashing-Commits)
See merge request !4833
Diffstat (limited to 'app')
-rw-r--r-- | app/models/members/project_member.rb | 1 | ||||
-rw-r--r-- | app/models/project.rb | 4 | ||||
-rw-r--r-- | app/services/members/destroy_service.rb | 5 |
3 files changed, 8 insertions, 2 deletions
diff --git a/app/models/members/project_member.rb b/app/models/members/project_member.rb index f176feddbad..18e97c969d7 100644 --- a/app/models/members/project_member.rb +++ b/app/models/members/project_member.rb @@ -8,6 +8,7 @@ class ProjectMember < Member # Make sure project member points only to project as it source default_value_for :source_type, SOURCE_TYPE validates_format_of :source_type, with: /\AProject\z/ + validates :access_level, inclusion: { in: Gitlab::Access.values } default_scope { where(source_type: SOURCE_TYPE) } scope :in_project, ->(project) { where(source_id: project.id) } diff --git a/app/models/project.rb b/app/models/project.rb index 3b1a53edc75..e0b28160937 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -999,6 +999,10 @@ class Project < ActiveRecord::Base project_members.find_by(user_id: user) end + def add_user(user, access_level, current_user = nil) + team.add_user(user, access_level, current_user) + end + def default_branch @default_branch ||= repository.root_ref if repository.exists? end diff --git a/app/services/members/destroy_service.rb b/app/services/members/destroy_service.rb index 15358f80208..9e3f6af628d 100644 --- a/app/services/members/destroy_service.rb +++ b/app/services/members/destroy_service.rb @@ -2,8 +2,9 @@ module Members class DestroyService < BaseService attr_accessor :member, :current_user - def initialize(member, user) - @member, @current_user = member, user + def initialize(member, current_user) + @member = member + @current_user = current_user end def execute |