Last active
December 31, 2015 12:49
-
-
Save Veske/7988593 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Post < ActiveRecord::Base | |
belongs_to :user | |
default_scope -> { order('created_at DESC') } | |
validates :content, presence: true, length: {maximum: 140} | |
validates :user_id, presence: true | |
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
module SessionsHelper | |
def sign_in(user) | |
remember_token = User.new_remember_token | |
cookies.permanent[:remember_token] = remember_token | |
user.update_attribute(:remember_token, User.encrypt(remember_token)) | |
self.current_user = user | |
end | |
def signed_in? | |
!current_user.nil? | |
end | |
def sign_out | |
self.current_user = nil | |
cookies.delete(:remember_token) | |
end | |
def current_user=(user) | |
@current_user = user | |
end | |
def current_user | |
remember_token = User.encrypt(cookies[:remember_token]) | |
@current_user ||= User.find_by(remember_token: remember_token) | |
end | |
def current_user?(user) | |
user == current_user | |
end | |
def redirect_back_or(default) | |
redirect_to(session[:return_to] || default) | |
session.delete(:return_to) | |
end | |
def store_location | |
session[:return_to] = request.url if request.get? | |
end | |
def signed_in? | |
!current_user.nil? | |
end | |
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class User < ActiveRecord::Base | |
has_many :posts, dependent: :destroy | |
before_save { self.email = email.downcase} | |
before_create :create_remember_token | |
has_secure_password | |
before_validation :downcase_email | |
validates :name, presence: true, length: {maximum: 50} | |
VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i | |
validates :email, presence: true, format: { with: VALID_EMAIL_REGEX}, uniqueness: {case_sensitive: false} | |
validates :password, length: {minimum: 3} | |
def User.new_remember_token | |
SecureRandom.urlsafe_base64 | |
end | |
def User.encrypt(token) | |
Digest::SHA1.hexdigest(token.to_s) | |
end | |
private | |
def downcase_email | |
self.remember_token = User.encrypt(User.new_remember_token) | |
self.email = self.email.downcase if self.email.present? | |
end | |
def create_remember_token | |
self.remember_token = User.encrypt(User.new_remember_token) | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment