diff --git a/app/models/environment.rb b/app/models/environment.rb index 6b97906..f551aa3 100644 --- a/app/models/environment.rb +++ b/app/models/environment.rb @@ -86,7 +86,9 @@ class Environment < ActiveRecord::Base end def admins - Person.members_of(self).all(:conditions => ['role_assignments.role_id = ?', Environment::Roles.admin(self).id]) + admin_role = Environment::Roles.admin(self) + return [] if admin_role.blank? + Person.members_of(self).all(:conditions => ['role_assignments.role_id = ?', admin_role.id]) end # returns the available features for a Environment, in the form of a diff --git a/app/models/person.rb b/app/models/person.rb index 557ac24..2aac2cc 100644 --- a/app/models/person.rb +++ b/app/models/person.rb @@ -33,16 +33,17 @@ class Person < Profile { :select => 'DISTINCT profiles.*', :conditions => ['"profiles"."id" NOT IN (SELECT DISTINCT profiles.id FROM "profiles" INNER JOIN "friendships" ON "friendships"."person_id" = "profiles"."id" WHERE "friendships"."friend_id" IN (%s))' % resources.map(&:id)] } } - def has_permission_with_admin?(permission, profile) - return true if profile.admins.include?(self) || profile.environment.admins.include?(self) - has_permission_without_admin?(permission, profile) + def has_permission_with_admin?(permission, resource) + return true if resource.blank? || resource.admins.include?(self) + return true if resource.kind_of?(Profile) && resource.environment.admins.include?(self) + has_permission_without_admin?(permission, resource) end alias_method_chain :has_permission?, :admin - def has_permission_with_plugins?(permission, profile) - permissions = [has_permission_without_plugins?(permission, profile)] + def has_permission_with_plugins?(permission, resource) + permissions = [has_permission_without_plugins?(permission, resource)] permissions += plugins.map do |plugin| - plugin.has_permission?(self, permission, profile) + plugin.has_permission?(self, permission, resource) end permissions.include?(true) end diff --git a/app/models/profile.rb b/app/models/profile.rb index c7cdfea..a592c58 100644 --- a/app/models/profile.rb +++ b/app/models/profile.rb @@ -795,7 +795,10 @@ private :generate_url, :url_options end def admins - self.members_by_role(Profile::Roles.admin(environment.id)) + return [] if environment.blank? + admin_role = Profile::Roles.admin(environment.id) + return [] if admin_role.blank? + self.members_by_role(admin_role) end def enable_contact? @@ -803,7 +806,7 @@ private :generate_url, :url_options end include Noosfero::Plugin::HotSpot - + def folder_types types = Article.folder_types plugins.dispatch(:content_types).each {|type| -- libgit2 0.21.2