summaryrefslogtreecommitdiff
path: root/lib/api/projects.rb
diff options
context:
space:
mode:
authorLin Jen-Shin <godfat@godfat.org>2016-10-04 02:38:25 +0800
committerLin Jen-Shin <godfat@godfat.org>2016-10-04 02:38:25 +0800
commitf39ba1bb5ed9c2421e60a618f71373c5d8dc94e9 (patch)
treee5ad67c48bdc2d520b84d735225ff7eac4c7da84 /lib/api/projects.rb
parentdb6b2b18990297d98bd74af1d2f475d0d42ec443 (diff)
parenta1aea3266e4b90869d5a9bcc334272996ab80fda (diff)
downloadgitlab-ce-f39ba1bb5ed9c2421e60a618f71373c5d8dc94e9.tar.gz
Merge remote-tracking branch 'upstream/master' into pipeline-emails
* upstream/master: (372 commits) Enable Lint/StringConversionInInterpolation cop and autocorrect offenses resolve duplicated changelog entry credit myself :smile: change determine conditions override subject method in devise mailer follow the styleguide: Don't use parentheses around a literal wrap subject with method subject move spec back into shared example `an email sent from GitLab` stub config settings in spec remove empty line at block body end remove extra entry create new test in `spec/mailers/notify_spec.rb` move changelog to 8.13 add configurable email subject suffix Fixes sidebar navigation. Convert "SSH Keys" Spinach features to RSpec Enable import/export back for non-admins Update gitlab-shell to 3.6.3 Updated artwork of empty group state. Better empty state for Groups view. ...
Diffstat (limited to 'lib/api/projects.rb')
-rw-r--r--lib/api/projects.rb15
1 files changed, 9 insertions, 6 deletions
diff --git a/lib/api/projects.rb b/lib/api/projects.rb
index 5eb83c2c8f8..680055c95eb 100644
--- a/lib/api/projects.rb
+++ b/lib/api/projects.rb
@@ -207,7 +207,9 @@ module API
if namespace_id.present?
namespace = Namespace.find_by(id: namespace_id) || Namespace.find_by_path_or_name(namespace_id)
- not_found!('Target Namespace') unless namespace
+ unless namespace && can?(current_user, :create_projects, namespace)
+ not_found!('Target Namespace')
+ end
attrs[:namespace] = namespace
end
@@ -391,23 +393,24 @@ module API
# Share project with group
#
# Parameters:
- # id (required) - The ID of a project
- # group_id (required) - The ID of a group
+ # id (required) - The ID of a project
+ # group_id (required) - The ID of a group
# group_access (required) - Level of permissions for sharing
+ # expires_at (optional) - Share expiration date
#
# Example Request:
# POST /projects/:id/share
post ":id/share" do
authorize! :admin_project, user_project
required_attributes! [:group_id, :group_access]
+ attrs = attributes_for_keys [:group_id, :group_access, :expires_at]
unless user_project.allowed_to_share_with_group?
return render_api_error!("The project sharing with group is disabled", 400)
end
- link = user_project.project_group_links.new
- link.group_id = params[:group_id]
- link.group_access = params[:group_access]
+ link = user_project.project_group_links.new(attrs)
+
if link.save
present link, with: Entities::ProjectGroupLink
else