Allow other controllers to access lndhub user balance
This commit is contained in:
parent
69b3afb8f7
commit
26d613bdca
@ -41,4 +41,26 @@ class ApplicationController < ActionController::Base
|
|||||||
def after_sign_in_path_for(user)
|
def after_sign_in_path_for(user)
|
||||||
session[:user_return_to] || root_path
|
session[:user_return_to] || root_path
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def lndhub_authenticate(options={})
|
||||||
|
if session[:ln_auth_token].present? && !options[:force_reauth]
|
||||||
|
@ln_auth_token = session[:ln_auth_token]
|
||||||
|
else
|
||||||
|
lndhub = Lndhub.new
|
||||||
|
auth_token = lndhub.authenticate(current_user)
|
||||||
|
session[:ln_auth_token] = auth_token
|
||||||
|
@ln_auth_token = auth_token
|
||||||
|
end
|
||||||
|
rescue => e
|
||||||
|
Sentry.capture_exception(e) if Setting.sentry_enabled?
|
||||||
|
end
|
||||||
|
|
||||||
|
def lndhub_fetch_balance
|
||||||
|
@balance = LndhubManager::FetchUserBalance.call(auth_token: @ln_auth_token)
|
||||||
|
rescue AuthError
|
||||||
|
lndhub_authenticate(force_reauth: true)
|
||||||
|
raise if @fetch_balance_retried
|
||||||
|
@fetch_balance_retried = true
|
||||||
|
lndhub_fetch_balance
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -2,10 +2,11 @@ require "rqrcode"
|
|||||||
require "lnurl"
|
require "lnurl"
|
||||||
|
|
||||||
class Services::LightningController < ApplicationController
|
class Services::LightningController < ApplicationController
|
||||||
before_action :authenticate_user!
|
|
||||||
before_action :authenticate_with_lndhub
|
|
||||||
before_action :set_current_section
|
before_action :set_current_section
|
||||||
before_action :fetch_balance
|
before_action :require_service_available
|
||||||
|
before_action :authenticate_user!
|
||||||
|
before_action :lndhub_authenticate
|
||||||
|
before_action :lndhub_fetch_balance
|
||||||
|
|
||||||
def index
|
def index
|
||||||
@wallet_setup_url = "lndhub://#{current_user.ln_account}:#{current_user.ln_password}@#{ENV['LNDHUB_PUBLIC_URL']}"
|
@wallet_setup_url = "lndhub://#{current_user.ln_account}:#{current_user.ln_password}@#{ENV['LNDHUB_PUBLIC_URL']}"
|
||||||
@ -55,32 +56,12 @@ class Services::LightningController < ApplicationController
|
|||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def authenticate_with_lndhub(options={})
|
|
||||||
if session[:ln_auth_token].present? && !options[:force_reauth]
|
|
||||||
@ln_auth_token = session[:ln_auth_token]
|
|
||||||
else
|
|
||||||
lndhub = Lndhub.new
|
|
||||||
auth_token = lndhub.authenticate(current_user)
|
|
||||||
session[:ln_auth_token] = auth_token
|
|
||||||
@ln_auth_token = auth_token
|
|
||||||
end
|
|
||||||
rescue => e
|
|
||||||
Sentry.capture_exception(e) if Setting.sentry_enabled?
|
|
||||||
end
|
|
||||||
|
|
||||||
def set_current_section
|
def set_current_section
|
||||||
@current_section = :services
|
@current_section = :services
|
||||||
end
|
end
|
||||||
|
|
||||||
def fetch_balance
|
def require_service_available
|
||||||
lndhub = Lndhub.new
|
http_status :not_found unless Setting.lndhub_enabled?
|
||||||
data = lndhub.balance @ln_auth_token
|
|
||||||
@balance = data["BTC"]["AvailableBalance"] rescue nil
|
|
||||||
rescue AuthError
|
|
||||||
authenticate_with_lndhub(force_reauth: true)
|
|
||||||
raise if @fetch_balance_retried
|
|
||||||
@fetch_balance_retried = true
|
|
||||||
fetch_balance
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def fetch_transactions
|
def fetch_transactions
|
||||||
|
12
app/services/lndhub_manager/fetch_user_balance.rb
Normal file
12
app/services/lndhub_manager/fetch_user_balance.rb
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
module LndhubManager
|
||||||
|
class FetchUserBalance < Lndhub
|
||||||
|
def initialize(auth_token:)
|
||||||
|
@auth_token = auth_token
|
||||||
|
end
|
||||||
|
|
||||||
|
def call
|
||||||
|
data = fetch_balance(auth_token)
|
||||||
|
data["BTC"]["AvailableBalance"] rescue nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
x
Reference in New Issue
Block a user