tinyforms/app/models/authentication.rb
2020-04-28 01:40:06 +02:00

31 lines
813 B
Ruby

# frozen_string_literal: true
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 = access_token
c.refresh_token = refresh_token
c.expires_at = 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.zone.at(c.expires_at) if c.expires_at.present?
end
end
end
end