Guest User

Untitled

a guest
Apr 19th, 2018
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.83 KB | None | 0 0
  1. ## Model
  2. require 'digest/sha1'
  3. class Driver < ActiveRecord::Base
  4. # Virtual attribute for the unencrypted password
  5. attr_accessor :password
  6.  
  7. has_many :vehicles
  8.  
  9. validates_presence_of :login, :email
  10. validates_presence_of :password, :if => :password_required?
  11. validates_presence_of :password_confirmation, :if => :password_required?
  12. validates_length_of :password, :within => 4..40, :if => :password_required?
  13. validates_confirmation_of :password, :if => :password_required?
  14. validates_length_of :login, :within => 3..40
  15. validates_length_of :email, :within => 3..100
  16. validates_uniqueness_of :login, :email, :case_sensitive => false
  17. validates_presence_of :first_name
  18. validates_presence_of :last_name
  19. validates_presence_of :city
  20. validates_presence_of :state
  21. validates_presence_of :zip
  22. validates_length_of :zip, :is => 5
  23. validates_numericality_of :zip
  24. validates_length_of :city, :minimum => 2
  25. # validates_length_of :state, :minimum => 2, :if => :password_required?
  26. before_save :encrypt_password
  27.  
  28. # prevents a user from submitting a crafted form that bypasses activation
  29. # anything else you want your user to change should be added here.
  30. attr_accessible :login, :email, :password, :password_confirmation, :first_name, :last_name, :city, :state, :zip
  31.  
  32. # Authenticates a user by their login name and unencrypted password. Returns the user or nil.
  33. def self.authenticate(login, password)
  34. u = find_by_login(login) # need to get the salt
  35. u && u.authenticated?(password) ? u : nil
  36. end
  37.  
  38. # Encrypts some data with the salt.
  39. def self.encrypt(password, salt)
  40. Digest::SHA1.hexdigest("--#{salt}--#{password}--")
  41. end
  42.  
  43. # Encrypts the password with the user salt
  44. def encrypt(password)
  45. self.class.encrypt(password, salt)
  46. end
  47.  
  48. def authenticated?(password)
  49. crypted_password == encrypt(password)
  50. end
  51.  
  52. def remember_token?
  53. remember_token_expires_at && Time.now.utc < remember_token_expires_at
  54. end
  55.  
  56. # These create and unset the fields required for remembering users between browser closes
  57. def remember_me
  58. remember_me_for 2.weeks
  59. end
  60.  
  61. def remember_me_for(time)
  62. remember_me_until time.from_now.utc
  63. end
  64.  
  65. def remember_me_until(time)
  66. self.remember_token_expires_at = time
  67. self.remember_token = encrypt("#{email}--#{remember_token_expires_at}")
  68. save(false)
  69. end
  70.  
  71. def forget_me
  72. self.remember_token_expires_at = nil
  73. self.remember_token = nil
  74. save(false)
  75. end
  76.  
  77. # Returns true if the user has just been activated.
  78. def recently_activated?
  79. @activated
  80. end
  81.  
  82. protected
  83. # before filter
  84. def encrypt_password
  85. return if password.blank?
  86. self.salt = Digest::SHA1.hexdigest("--#{Time.now.to_s}--#{login}--") if new_record?
  87. self.crypted_password = encrypt(password)
  88. end
  89.  
  90. def password_required?
  91. crypted_password.blank? || !password.blank?
  92. end
  93. end
  94.  
  95.  
  96. ## View (html_rails)
  97. <div id="right-menu">
  98. <%= render_partial '/partials/user_menu' %>
  99. </div>
  100. <div id="content">
  101. <h2>Edit Profile Information</h2><br />
  102. <%= error_messages_for :driver %>
  103. <% form_for :driver, :url => driver_url(@driver), :html => { :method => :put } do |f| -%>
  104. <p><%= f.label :login, "Login" %><br/>
  105. <%= f.text_field :login %></p>
  106.  
  107. <p><%= f.label :email, "Email" %><br/>
  108. <%= f.text_field :email %></p>
  109.  
  110. <p><%= f.label :first_name, "First Name" %><br />
  111. <%= f.text_field :first_name %></p>
  112.  
  113. <p><%= f.label :last_name, "Last Name" %><br />
  114. <%= f.text_field :last_name %></p>
  115.  
  116. <p><%= f.label :city, "City" %><br />
  117. <%= f.text_field :city %></p>
  118.  
  119. <p><%= f.label :state, "State" %><br />
  120. <%= f.select(:state, [
  121. ['Select a State', ''],
  122. #giant list of states...
  123. ]) %></p>
  124.  
  125. <p><%= label :zip, "Zip Code" %><br />
  126. <%= f.text_field :zip %></p>
  127.  
  128. <p><%= submit_tag 'Update Profile' %></p>
  129. <% end -%>
  130. </div>
  131.  
  132. ## Controller
  133. class DriversController < ApplicationController
  134. # render new.rhtml
  135. def new
  136. end
  137.  
  138. def create
  139. cookies.delete :auth_token
  140. # protects against session fixation attacks, wreaks havoc with
  141. # request forgery protection.
  142. # uncomment at your own risk
  143. # reset_session
  144. @driver = Driver.new(params[:driver])
  145. @driver.save
  146. if @driver.errors.empty?
  147. self.current_driver = @driver
  148. redirect_back_or_default('/')
  149. flash[:notice] = "Thanks for signing up!"
  150. else
  151. render :action => 'new'
  152. end
  153. end
  154.  
  155. def edit
  156. @driver = current_driver
  157. end
  158.  
  159. def update
  160. @driver = current_driver
  161. @driver.attributes = params[:driver]
  162.  
  163. if @driver.save
  164. flash[:notice] = "Update successful!"
  165. else
  166. render :action => 'edit'
  167. end
  168. end
  169. end
Add Comment
Please, Sign In to add comment