app/models/pbw/user.rb in pbw-0.0.9 vs app/models/pbw/user.rb in pbw-0.0.10

- old
+ new

@@ -4,11 +4,11 @@ include ::Mongoid::Timestamps ROLES = %W{superadmin admin moderator player} devise :database_authenticatable, :registerable, :timeoutable, - :recoverable, :rememberable, :trackable, :validatable, :lockable + :recoverable, :rememberable, :trackable, :lockable ## Database authenticatable field :email, :type => String, :default => "" field :encrypted_password, :type => String, :default => "" @@ -25,25 +25,27 @@ field :last_sign_in_at, :type => Time field :current_sign_in_ip, :type => String field :last_sign_in_ip, :type => String field :name, :type => String - validates_presence_of :name - validates_uniqueness_of :name, :email, :case_sensitive => false - validates_format_of :email, :with => /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}$/ - validates_confirmation_of :password - + field :role, :type => String, :default => 'player' ## 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 - has_many :resource_containers - has_many :tokens + has_many :item_containers, :class_name => 'Pbw::ItemContainer' + has_many :tokens, :class_name => 'Pbw::Token' + validates :name, presence: true + validates :password, confirmation: true, length: {minimum: 8} + validates :email, uniqueness: {case_sensitive: false}, format: {with: /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}$/} + + attr_accessible :email, :name, :password, :password_confirmation + def superadmin? self.role == "superadmin" end def make_superadmin! @@ -71,10 +73,26 @@ def player? self.role == "player" end + def send_registration_email + UserMailer.registration(self).deliver + end + + def reset_password! + token = User.friendly_token + self.password = token + self.password_confirmation = token + save! + send_password_email(token) + end + + def send_password_email(password) + UserMailer.password_reset(self,password).deliver + end + def self.viewable_by?(user, subject) true end def self.creatable_by?(user, subject) @@ -85,8 +103,12 @@ user.admin? || subject == user end def self.deletable_by?(user, subject) user.admin? + end + + def self.friendly_token + SecureRandom.base64(15).tr('+/=lIO0', 'pqrsxyz') end end end