class YoutubeCredential < ApplicationRecord belongs_to :club attr_encrypted :access_token, key: :encryption_key, attribute: "access_token_encrypted", mode: :single_iv_and_salt, algorithm: "aes-256-cbc", iv: :encryption_iv attr_encrypted :refresh_token, key: :encryption_key, attribute: "refresh_token_encrypted", mode: :single_iv_and_salt, algorithm: "aes-256-cbc", iv: :encryption_iv def expired? expires_at.present? && expires_at < Time.current end def usable? refresh_token.present? rescue ArgumentError, OpenSSL::Cipher::CipherError, NoMethodError false end private def encryption_key Rails.application.secret_key_base[0, 32] end def encryption_iv encryption_key[0, 16] end end