Class: Pbw::User

Inherits:
Object
  • Object
show all
Includes:
Mongoid::Document, Mongoid::Timestamps
Defined in:
app/models/pbw/user.rb

Constant Summary collapse

ROLES =
%W{superadmin admin moderator player}

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.creatable_by?(user, subject) ⇒ Boolean

Returns:

  • (Boolean)


98
99
100
# File 'app/models/pbw/user.rb', line 98

def self.creatable_by?(user, subject)
    true
end

.deletable_by?(user, subject) ⇒ Boolean

Returns:

  • (Boolean)


106
107
108
# File 'app/models/pbw/user.rb', line 106

def self.deletable_by?(user, subject)
    user.admin?
end

.editable_by?(user, subject) ⇒ Boolean

Returns:

  • (Boolean)


102
103
104
# File 'app/models/pbw/user.rb', line 102

def self.editable_by?(user, subject)
    user.admin? || subject == user
end

.friendly_tokenObject



110
111
112
# File 'app/models/pbw/user.rb', line 110

def self.friendly_token
  SecureRandom.base64(15).tr('+/=lIO0', 'pqrsxyz')
end

.viewable_by?(user, subject) ⇒ Boolean

Returns:

  • (Boolean)


94
95
96
# File 'app/models/pbw/user.rb', line 94

def self.viewable_by?(user, subject)
    true
end

Instance Method Details

#admin?Boolean

Returns:

  • (Boolean)


56
57
58
# File 'app/models/pbw/user.rb', line 56

def admin?
    self.role == "admin" || superadmin?
end

#emailObject

Database authenticatable



12
# File 'app/models/pbw/user.rb', line 12

field :email,              :type => String, :default => ""

#failed_attemptsObject

Lockable



34
# File 'app/models/pbw/user.rb', line 34

field :failed_attempts, :type => Integer, :default => 0

#make_admin!Object



60
61
62
63
# File 'app/models/pbw/user.rb', line 60

def make_admin!
    self.role = "admin"
    save!
end

#make_moderator!Object



69
70
71
72
# File 'app/models/pbw/user.rb', line 69

def make_moderator!
    self.role = "moderator"
    save!
end

#make_superadmin!Object



51
52
53
54
# File 'app/models/pbw/user.rb', line 51

def make_superadmin!
    self.role = "superadmin"
    save!
end

#moderator?Boolean

Returns:

  • (Boolean)


65
66
67
# File 'app/models/pbw/user.rb', line 65

def moderator?
    self.role == "moderator" || admin?
end

#player?Boolean

Returns:

  • (Boolean)


74
75
76
# File 'app/models/pbw/user.rb', line 74

def player?
    self.role == "player" || moderator?
end

#remember_created_atObject

Rememberable



20
# File 'app/models/pbw/user.rb', line 20

field :remember_created_at, :type => Time

#reset_password!Object



82
83
84
85
86
87
88
# File 'app/models/pbw/user.rb', line 82

def reset_password!
    token = User.friendly_token
    self.password = token
    self.password_confirmation = token
    save!
    send_password_email(token)
end

#reset_password_tokenObject

Recoverable



16
# File 'app/models/pbw/user.rb', line 16

field :reset_password_token,   :type => String

#send_password_email(password) ⇒ Object



90
91
92
# File 'app/models/pbw/user.rb', line 90

def send_password_email(password)
    UserMailer.password_reset(self,password).deliver
end

#send_registration_emailObject



78
79
80
# File 'app/models/pbw/user.rb', line 78

def send_registration_email
    UserMailer.registration(self).deliver
end

#sign_in_countObject

Trackable



23
# File 'app/models/pbw/user.rb', line 23

field :sign_in_count,      :type => Integer, :default => 0

#superadmin?Boolean

Returns:

  • (Boolean)


47
48
49
# File 'app/models/pbw/user.rb', line 47

def superadmin?
  self.role == "superadmin"
end