app/models/user.rb in artfully_ose-1.2.0 vs app/models/user.rb in artfully_ose-1.3.0.pre1
- old
+ new
@@ -12,29 +12,56 @@
has_many :discounts
has_many :user_memberships
has_many :organizations, :through => :user_memberships
+ serialize :cas_extra_attributes
+
scope :logged_in_more_than_once, where("users.sign_in_count > 1")
+ searchable do
+ text :first_name
+ text :last_name
+ text :email
+
+ text :full_name do
+ (first_name || "") + " " + (last_name || "")
+ end
+
+ text :organizations do
+ organizations.map {|org| org.name }.join(" ")
+ end
+ end
+ include Ext::DelayedIndexing
+
def self.generate_password
Devise.friendly_token
end
- # Setup accessible (or protected) attributes for your model
- attr_accessible :email, :password, :password_confirmation, :remember_me, :user_agreement, :newsletter_emails, :first_name, :last_name, :user_memberships_attributes
+ delegate :can?, :cannot?, :to => :ability
+ def ability
+ Ability.new(self)
+ end
+ attr_accessible :email, :password, :password_confirmation, :remember_me,
+ :user_agreement, :newsletter_emails, :first_name, :last_name,
+ :user_memberships_attributes, :fa_user_id, :cas_extra_attributes
+
def is_in_organization?
@is_in_organization ||= !!(user_memberships.any? && ! user_memberships.first.organization.new_record?)
end
def current_organization
@current_organization ||= is_in_organization? ? user_memberships.first.organization : Organization.new
end
def membership_in(organization)
- user_memberships.where(:organization_id => organization.id).limit(1).first
+ if @membership && organization.id == @membership.organization_id
+ @membership
+ else
+ user_memberships.where(:organization_id => organization.id).limit(1).first
+ end
end
def self.like(query = "")
return if query.blank?
q = "%#{query}%"
@@ -54,7 +81,19 @@
elsif email.present?
email.to_s
else
"No Name ##{id}"
end
+ end
+
+ def permission_in(organization)
+ membership_in(organization).try(:role_title)
+ end
+
+ def has_permission_in?(role, organization)
+ !!(membership_in(organization).try("#{Permission.database_column_for(role)}"))
+ end
+
+ def is_org_admin_of(organization)
+ !!(membership_in(organization) && membership_in(organization).organization_administrator?)
end
end