@@ -69,7 +69,7 class UsersController < ApplicationController | |||
|
69 | 69 | end |
|
70 | 70 | |
|
71 | 71 | # show projects based on current user visibility |
|
72 | @memberships = @user.memberships.where(Project.visible_condition(User.current)).to_a | |
|
72 | @memberships = @user.memberships.preload(:roles, :project).where(Project.visible_condition(User.current)).to_a | |
|
73 | 73 | |
|
74 | 74 | respond_to do |format| |
|
75 | 75 | format.html { |
@@ -28,8 +28,7 class Principal < ActiveRecord::Base | |||
|
28 | 28 | |
|
29 | 29 | has_many :members, :foreign_key => 'user_id', :dependent => :destroy |
|
30 | 30 | has_many :memberships, |
|
31 |
lambda { |
|
|
32 | joins(:project). | |
|
31 | lambda {joins(:project). | |
|
33 | 32 | where("#{Project.table_name}.status<>#{Project::STATUS_ARCHIVED}")}, |
|
34 | 33 | :class_name => 'Member', |
|
35 | 34 | :foreign_key => 'user_id' |
@@ -546,6 +546,10 class User < Principal | |||
|
546 | 546 | @membership_by_project_id[project_id] |
|
547 | 547 | end |
|
548 | 548 | |
|
549 | def roles | |
|
550 | @roles ||= Role.joins(members: :project).where(["#{Project.table_name}.status <> ?", Project::STATUS_ARCHIVED]).where(Member.arel_table[:user_id].eq(id)).uniq | |
|
551 | end | |
|
552 | ||
|
549 | 553 | # Returns the user's bult-in role |
|
550 | 554 | def builtin_role |
|
551 | 555 | @builtin_role ||= Role.non_member |
@@ -673,9 +677,9 class User < Principal | |||
|
673 | 677 | return true if admin? |
|
674 | 678 | |
|
675 | 679 | # authorize if user has at least one role that has this permission |
|
676 | roles = memberships.collect {|m| m.roles}.flatten.uniq | |
|
677 | roles << (self.logged? ? Role.non_member : Role.anonymous) | |
|
678 |
r |
|
|
680 | rls = self.roles.to_a | |
|
681 | rls << builtin_role | |
|
682 | rls.any? {|role| | |
|
679 | 683 | role.allowed_to?(action) && |
|
680 | 684 | (block_given? ? yield(role, self) : true) |
|
681 | 685 | } |
@@ -12,7 +12,7 api.group do | |||
|
12 | 12 | end if include_in_api_response?('users') && !@group.builtin? |
|
13 | 13 | |
|
14 | 14 | api.array :memberships do |
|
15 | @group.memberships.each do |membership| | |
|
15 | @group.memberships.preload(:roles, :project).each do |membership| | |
|
16 | 16 | api.membership do |
|
17 | 17 | api.id membership.id |
|
18 | 18 | api.project :id => membership.project.id, :name => membership.project.name |
@@ -22,7 +22,7 api.group do | |||
|
22 | 22 | attrs = {:id => member_role.role.id, :name => member_role.role.name} |
|
23 | 23 | attrs.merge!(:inherited => true) if member_role.inherited_from.present? |
|
24 | 24 | api.role attrs |
|
25 |
end |
|
|
25 | end | |
|
26 | 26 | end |
|
27 | 27 | end |
|
28 | 28 | end if membership.project |
General Comments 0
You need to be logged in to leave comments.
Login now