Rails アプリを作成していますが、既に has_secure_password を使用した基本認証を作成しています。ただし、その上に facebook と twitter の認証を追加したいと考えています。私の認証は次のとおりです。
ユーザー.rb
class User < ActiveRecord::Base
before_create :create_remember_token
has_secure_password
validates :name, presence: true
VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
validates :email, presence: true, uniqueness: true, format: {with: VALID_EMAIL_REGEX }
validates :last_name, presence: true
def User.new_remember_token
SecureRandom.urlsafe_base64
end
def User.encrypt(token)
Digest::SHA1.hexdigest(token.to_s)
end
private
def create_remember_token
self.remember_token = User.encrypt(User.new_remember_token)
end
end
セッションコントローラー
class SessionsController < ApplicationController
def new
end
def create
user = User.find_by(email: params[:session][:email])
if user && user.authenticate(params[:session][:password])
sign_in user
redirect_to users_path(user), success: 'Başarılı bir şekilde giriş yapıldı!'
else
redirect_to root_path, danger: 'Giriş sırasında sorun oluştu lütfen bilgilerin doğruluğunu kontrol et'
end
end
def destroy
sign_out
redirect_to root_path, success: 'Başarılı bir şekilde çıkış yapıldı.'
end
end
セッションヘルパー
モジュール SessionsHelper
def sign_in(user)
remember_token = User.new_remember_token
if params[:remember_me]
cookies.permanent[:remember_token] = remember_token
else
cookies[:remember_token] = remember_token
end
user.update_attribute(:remember_token, User.encrypt(remember_token))
self.current_user = user
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 signed_in?
!current_user.nil?
end
def sign_out
self.current_user = nil
cookies.delete(:remember_token)
end
end
だから私はこれの上に Omniauth を介して Facebook と Twitter の認証を追加したいのですが、これを行うための最良の戦略が何であるかはわかりません.それは可能ですか、それとも現在の認証方法を完全に変更する必要がありますか?