diff options
author | Robert Speicher <robert@gitlab.com> | 2016-10-02 11:33:06 +0000 |
---|---|---|
committer | Robert Speicher <robert@gitlab.com> | 2016-10-02 11:33:06 +0000 |
commit | 076e0406390cb03ade887723bceb3a6bb9613986 (patch) | |
tree | ba47bc00ee3a1de6b76a80527c7dc306684e10d2 /app/services | |
parent | c9352aa6e388293784f50ecd26892f1780522256 (diff) | |
parent | 76232d541baebb25ca3536364e27b379e5356460 (diff) | |
download | gitlab-ce-076e0406390cb03ade887723bceb3a6bb9613986.tar.gz |
Merge branch 'rc-new-members-request-access-service' into 'master'
New `Members::RequestAccessService`
Part of #21979.
See merge request !6265
Diffstat (limited to 'app/services')
-rw-r--r-- | app/services/members/request_access_service.rb | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/app/services/members/request_access_service.rb b/app/services/members/request_access_service.rb new file mode 100644 index 00000000000..2614153d900 --- /dev/null +++ b/app/services/members/request_access_service.rb @@ -0,0 +1,25 @@ +module Members + class RequestAccessService < BaseService + attr_accessor :source + + def initialize(source, current_user) + @source = source + @current_user = current_user + end + + def execute + raise Gitlab::Access::AccessDeniedError unless can_request_access?(source) + + source.members.create( + access_level: Gitlab::Access::DEVELOPER, + user: current_user, + requested_at: Time.now.utc) + end + + private + + def can_request_access?(source) + source && can?(current_user, :request_access, source) + end + end +end |