spotify web setup is done

This commit is contained in:
2025-06-22 10:01:32 +02:00
parent b368a750fe
commit 5eaad428ff
16 changed files with 365 additions and 15 deletions

View File

@@ -1,3 +1,37 @@
class Login < ApplicationRecord
belongs_to :user
scope :alive, -> { where(dead_since: nil) }
scope :dead, -> { where.not(dead_since: nil) }
CLOSE_TO_EXPIRATION = 60
def self.find_or_create_for_response!(user, response, platform = "spotify")
login = user.logins.find_by_platform(platform)
login ||= Login.new(
user: user,
platform: platform,
last_refresh_at: Time.new
)
login.credentials = response
login.dead_since = nil
login.save!
login
end
def update_access_token!(spotify_response)
self.credentials = credentials.merge(spotify_response)
self.last_refresh_at = Time.new
save!
self
end
def about_to_expire?
Time.new > last_refresh_at + credentials["expires_in"].to_i - CLOSE_TO_EXPIRATION
end
def expired?
Time.new > last_refresh_at + credentials["expires_in"].to_i
end
end

View File

@@ -4,6 +4,8 @@ class User < ApplicationRecord
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :validatable
has_many :logins
def is_admin?
id == 1
end