tinyforms/app/models/authentication.rb
Michael Bumann c478cfc7af Use sorcery for logins
This gives us more flexibility and allows us to use password authentication
later. Also we don't need to build the login functionality ourself.
2020-04-13 14:59:07 +02:00

29 lines
793 B
Ruby

class Authentication < ApplicationRecord
belongs_to :user
scope :for, -> (provider) { where(provider: provider) }
encrypts :access_token
encrypts :refresh_token
def expired?
expires_at <= Time.current
end
def google_authorization
return nil unless provider == 'google'
@google_authorization ||= CLIENT_SECRETS.to_authorization.tap do |c|
c.access_token = self.access_token
c.refresh_token = self.refresh_token
c.expires_at = self.expires_at
if expires_at < 1.minute.from_now
c.refresh!
self.access_token = c.access_token if c.access_token.present?
self.refresh_token = c.refresh_token if c.refresh_token.present?
self.expires_at = Time.at(c.expires_at) if c.expires_at.present?
end
end
end
end