summaryrefslogtreecommitdiff
path: root/lib/api/helpers.rb
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2015-02-03 10:57:27 -0800
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2015-02-03 10:57:27 -0800
commitdc9bf324207c21f39633392c4180ba62193c02c6 (patch)
tree100d2de9a08bd3e6d6c2800a652abca5237d5e30 /lib/api/helpers.rb
parent141c6a027ee369fbb954f936aca51f4231fce607 (diff)
parent4e97f26649a7756bef843fca74e3c58eadd117e1 (diff)
downloadgitlab-ce-dc9bf324207c21f39633392c4180ba62193c02c6.tar.gz
Merge pull request #8723 from jubianchi/api-groups-path
Access groups using path
Diffstat (limited to 'lib/api/helpers.rb')
-rw-r--r--lib/api/helpers.rb25
1 files changed, 23 insertions, 2 deletions
diff --git a/lib/api/helpers.rb b/lib/api/helpers.rb
index 1ded63d136f..be9e4280d65 100644
--- a/lib/api/helpers.rb
+++ b/lib/api/helpers.rb
@@ -55,6 +55,21 @@ module API
end
end
+ def find_group(id)
+ begin
+ group = Group.find(id)
+ rescue ActiveRecord::RecordNotFound
+ group = Group.find_by!(path: id)
+ end
+
+ if can?(current_user, :read_group, group)
+ group
+ else
+ forbidden!("#{current_user.username} lacks sufficient "\
+ "access to #{group.name}")
+ end
+ end
+
def paginate(relation)
per_page = params[:per_page].to_i
paginated = relation.page(params[:page]).per(per_page)
@@ -135,10 +150,16 @@ module API
errors
end
+ def validate_access_level?(level)
+ Gitlab::Access.options_with_owner.values.include? level.to_i
+ end
+
# error helpers
- def forbidden!
- render_api_error!('403 Forbidden', 403)
+ def forbidden!(reason = nil)
+ message = ['403 Forbidden']
+ message << " - #{reason}" if reason
+ render_api_error!(message.join(' '), 403)
end
def bad_request!(attribute)