Guest User

Untitled

a guest
Nov 28th, 2018
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.67 KB | None | 0 0
  1. # app/models/user.rb
  2.  
  3. class User < ActiveRecord::Base
  4. has_many :posts, :class_name => "Forem::Post", :dependent => :destroy
  5. has_many :topics, :class_name => "Forem::Topic", :dependent => :destroy
  6. # Include default devise modules. Others available are:
  7. # :token_authenticatable, :confirmable,
  8. # :lockable, :timeoutable and :omniauthable
  9. devise :database_authenticatable, :registerable,
  10. :recoverable, :rememberable, :trackable, :validatable
  11.  
  12. # Setup accessible (or protected) attributes for your model
  13. attr_accessible :email, :name, :username, :country, :gender, :password, :password_confirmation, :remember_me, :persistence_token
  14.  
  15. def to_s
  16. name
  17. end
  18.  
  19. # Creates an anonymous user. An anonymous user is basically an auto-generated +User+ account that is created for the guest user
  20. def self.anonymous!
  21. token = User.generate_token(:persistence_token)
  22. User.create(:email => "#{token}@example.net", :password => token, :password_confirmation => token, :persistence_token => token, :username => "#{token}", :gender => "male", :name => "#{token}")
  23. end
  24.  
  25. def anonymous?
  26. email =~ /@example.net$/
  27. end
  28.  
  29. # override default permission to support allow_anonymous flag
  30. def can_create_forem_topics?(forum)
  31. self.anonymous? ? forum.allow_anonymous : true
  32. end
  33.  
  34. private
  35.  
  36. # Generate a friendly string randomically to be used as token.
  37. def self.friendly_token
  38. SecureRandom.base64(15).tr('+/=', '-_ ').strip.delete("\n")
  39. end
  40.  
  41. # Generate a token by looping and ensuring does not already exist.
  42. def self.generate_token(column)
  43. loop do
  44. token = friendly_token
  45. break token unless find(:first, :conditions => { column => token })
  46. end
  47. end
  48. end
Add Comment
Please, Sign In to add comment