spotify web setup is done
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -4,6 +4,8 @@ class User < ApplicationRecord
|
||||
devise :database_authenticatable, :registerable,
|
||||
:recoverable, :rememberable, :validatable
|
||||
|
||||
has_many :logins
|
||||
|
||||
def is_admin?
|
||||
id == 1
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user