Sha256: c10361e6face113a7a120107ee2544b7f15745e9139d95e1905d7215628c07a3

Contents?: true

Size: 1.89 KB

Versions: 9

Compression:

Stored size: 1.89 KB

Contents

class User
  include Mongoid::Document

  ROLES = %w[admin content_manager]

  #attr_accessible :roles

  # Include default devise modules. Others available are:
  # :token_authenticatable, :confirmable,
  # :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :recoverable, :rememberable,
         :trackable, :validatable, :registerable

  ## Database authenticatable
  field :email,              :type => String, :default => ""
  field :encrypted_password, :type => String, :default => ""

  validates_presence_of :email
  validates_presence_of :encrypted_password

  ## Recoverable
  field :reset_password_token,   :type => String
  field :reset_password_sent_at, :type => Time

  ## Rememberable
  field :remember_created_at, :type => Time

  ## Trackable
  field :sign_in_count,      :type => Integer, :default => 0
  field :current_sign_in_at, :type => Time
  field :last_sign_in_at,    :type => Time
  field :current_sign_in_ip, :type => String
  field :last_sign_in_ip,    :type => String


  ## Confirmable
  # field :confirmation_token,   :type => String
  # field :confirmed_at,         :type => Time
  # field :confirmation_sent_at, :type => Time
  # field :unconfirmed_email,    :type => String # Only if using reconfirmable

  ## Lockable
  # field :failed_attempts, :type => Integer, :default => 0 # Only if lock strategy is :failed_attempts
  # field :unlock_token,    :type => String # Only if unlock strategy is :email or :both
  # field :locked_at,       :type => Time

  ## Token authenticatable
  # field :authentication_token, :type => String


  #field :role,    :type => String
  field :roles_mask, :type => Integer

  def roles=(roles)
    self.roles_mask = (roles & ROLES).map { |r| 2**ROLES.index(r) }.inject(0, :+)
  end

  def roles
    ROLES.reject do |r|
      ((roles_mask || 0) & 2**ROLES.index(r)).zero?
    end
  end

  def is?(role)
    roles.include?(role.to_s)
  end

end

Version data entries

9 entries across 9 versions & 2 rubygems

Version Path
mix-rails-0.16.0 mix-rails-auth/app/models/user.rb
mix-rails-auth-0.16.0 app/models/user.rb
mix-rails-0.15.0 mix-rails-auth/app/models/user.rb
mix-rails-auth-0.15.0 app/models/user.rb
mix-rails-0.12.2 mix-rails-auth/app/models/user.rb
mix-rails-auth-0.12.2 app/models/user.rb
mix-rails-0.12.1 mix-rails-auth/app/models/user.rb
mix-rails-auth-0.12.1 app/models/user.rb
mix-rails-auth-0.11.0 app/models/user.rb