Commit eea317795ea970f762a1331beba6fde20e7a8aeb
1 parent
a91a6491
Exists in
spb-stable
and in
3 other branches
Add current user permissions info to /api/projects/:id.json
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Showing
2 changed files
with
24 additions
and
2 deletions
Show diff stats
lib/api/entities.rb
| ... | ... | @@ -44,7 +44,7 @@ module API |
| 44 | 44 | expose :id, :description, :default_branch |
| 45 | 45 | expose :public?, as: :public |
| 46 | 46 | expose :visibility_level, :ssh_url_to_repo, :http_url_to_repo, :web_url |
| 47 | - expose :owner, using: Entities::UserBasic | |
| 47 | + expose :owner, using: Entities::UserBasic, unless: ->(project, options) { project.group } | |
| 48 | 48 | expose :name, :name_with_namespace |
| 49 | 49 | expose :path, :path_with_namespace |
| 50 | 50 | expose :issues_enabled, :merge_requests_enabled, :wall_enabled, :wiki_enabled, :snippets_enabled, :created_at, :last_activity_at |
| ... | ... | @@ -175,5 +175,27 @@ module API |
| 175 | 175 | class Namespace < Grape::Entity |
| 176 | 176 | expose :id, :path, :kind |
| 177 | 177 | end |
| 178 | + | |
| 179 | + class ProjectAccess < Grape::Entity | |
| 180 | + expose :project_access, as: :access_level | |
| 181 | + expose :notification_level | |
| 182 | + end | |
| 183 | + | |
| 184 | + class GroupAccess < Grape::Entity | |
| 185 | + expose :group_access, as: :access_level | |
| 186 | + expose :notification_level | |
| 187 | + end | |
| 188 | + | |
| 189 | + class ProjectWithAccess < Project | |
| 190 | + expose :permissions do | |
| 191 | + expose :project_access, using: Entities::ProjectAccess do |project, options| | |
| 192 | + project.users_projects.find_by(user_id: options[:user].id) | |
| 193 | + end | |
| 194 | + | |
| 195 | + expose :group_access, using: Entities::GroupAccess do |project, options| | |
| 196 | + project.group.users_groups.find_by(user_id: options[:user].id) | |
| 197 | + end | |
| 198 | + end | |
| 199 | + end | |
| 178 | 200 | end |
| 179 | 201 | end | ... | ... |
lib/api/projects.rb