Guest User

Untitled

a guest
Feb 19th, 2018
337
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.64 KB | None | 0 0
  1. class Panelist < ActiveRecord::Base
  2.  
  3. def before_create
  4. self.hashed_password = Panelist.hash_password(self.password)
  5. end
  6.  
  7. def after_create
  8. @password = nil
  9. end
  10.  
  11. def confirmation_key
  12. Panelist.hash_password(hashed_password + created_at.to_s + id.to_s)
  13. end
  14.  
  15. def password_reset_key
  16. Panelist.hash_password(hashed_password + created_at.to_s + id.to_s + email)
  17. end
  18.  
  19. def try_to_login
  20. logged_in_panelist = Panelist.login(email,password)
  21. if logged_in_panelist
  22. logged_in_panelist.update_attribute(:last_ip, last_ip)
  23. return logged_in_panelist
  24. else
  25. return nil
  26. end
  27. end
  28.  
  29. def password_reset(key)
  30. if key != self.password_reset_key
  31. return 'Password reset key is not valid: ' + key + " is not " + self.password_reset_key
  32. else
  33. if self.password.length < 4
  34. return 'Password must be at least 4 characters'
  35. elsif self.password != self.password_confirmation
  36. return 'Password does not match confirmation'
  37. else
  38. self.hashed_password = Panelist.hash_password(self.password)
  39. self.update
  40. return nil
  41. end
  42. end
  43. end
  44.  
  45.  
  46. private
  47. def self.login(email, password)
  48. hashed_password = Panelist.hash_password(password || "")
  49. find(:first, :conditions => ["email = ? and hashed_password = ?", email, hashed_password])
  50. end
  51.  
  52. def self.hash_password(password)
  53. Digest::SHA1.hexdigest(password)
  54. end
  55. end
  56.  
  57. class PanelistManagerController < ApplicationController
  58. def create
  59. @panelist = Panelist.new(params[:panelist])
  60. @panelist.last_ip = request.remote_ip
  61. if @panelist.save
  62. flash[:notice] = 'Panelist was successfully created.'
  63. confirmurl = url_for( :controller => "panelist_manager", :action => "confirm", :id => @panelist.id, :key => @panelist.confirmation_key)
  64. email = PanelistMailer.create_confirmemail(@panelist, confirmurl)
  65. render(:text => "<pre>" + email.encoded + "</pre>")
  66. # PanelistMailer.deliver_confirmemail(@panelist, confirmurl)
  67. # redirect_to :action => 'list'
  68. else
  69. render :action => 'new'
  70. end
  71. end
  72. def confirm
  73. panelist = Panelist.find(params[:id])
  74. if panelist == nil
  75. redirect_to :action => 'index'
  76. else
  77. key = params[:key]
  78. if key == panelist.confirmation_key
  79. panelist.email_confirmed = 'y'
  80. panelist.update
  81. flash[:notice] = 'Your e-mail address has been confirmed, and you are now an active panelist.'
  82. redirect_to :action => 'index'
  83. else
  84. redirect_to :action => 'index'
  85. end
  86. end
  87. end
  88.  
  89. def login
  90. if request.get?
  91. session[:panelist_id] = nil
  92. @panelist = Panelist.new
  93. else
  94. @panelist = Panelist.new(params[:panelist])
  95. @panelist.last_ip = request.remote_ip
  96. logged_in_panelist = @panelist.try_to_login
  97. if logged_in_panelist
  98. session[:panelist_id] = logged_in_panelist.id
  99. flash[:notice] = "You have been logged in."
  100. if params[:redirect]
  101. redirect_to(params[:redirect])
  102. else
  103. redirect_to(:action => "index")
  104. end
  105. else
  106. flash[:notice] = "Invalid e-mail/password combination"
  107. end
  108. end
  109. end
  110.  
  111. def passwordreset
  112. if request.get?
  113. @panelist = Panelist.new
  114. else
  115. @panelist = Panelist.new(params[:panelist])
  116. reset_panelist = Panelist.find_by_email(@panelist.email)
  117. if reset_panelist
  118. reseturl = url_for(:action => 'tryreset', :id => reset_panelist.id, :key => reset_panelist.password_reset_key)
  119. email = PanelistMailer.create_resetemail(reset_panelist,reseturl)
  120. render(:text => "<pre>" + email.encoded + "</pre>")
  121. else
  122. flash[:notice] = 'No panelist with that e-mail address was found'
  123. end
  124. end
  125. end
  126.  
  127. def tryreset
  128. if request.get?
  129. @panelist = Panelist.find_by_id(params[:id])
  130. @key = params[:key]
  131. if @panelist == nil or @panelist.password_reset_key != @key
  132. redirect_to :action => 'index'
  133. end
  134. else
  135. @panelist = Panelist.new(params[:panelist])
  136. @panelist.id = params[:id]
  137. reset_panelist = Panelist.find_by_id(@panelist.id)
  138. if reset_panelist == nil
  139. redirect_to :action => 'index'
  140. else
  141. reset_panelist.password = @panelist.password
  142. reset_panelist.password_confirmation = @panelist.password_confirmation
  143. @key = params[:key]
  144. if !(flash[:notice] = reset_panelist.password_reset(@key))
  145. flash[:notice] = "Your password has been reset"
  146. redirect_to :action => 'login'
  147. end
  148. end
  149. end
  150. end
  151. end
Add Comment
Please, Sign In to add comment