# frozen_string_literal: true # The father class of all controllers. class ApplicationController < ActionController::API def logic(permitted_params) @logic = Object.const_get("#{self.class}::#{action_name.camelize}Logic").new(permitted_params) end protected def current_user_account return if decoded_token.nil? email = decoded_token[0]['data'] @current_user_account ||= UserAccount.find_by(email:) end def authentication_token @authentication_token ||= request.headers[:authorization]&.sub(/^Bearer /, '') end def decoded_token @decoded_token ||= JWT.decode(authentication_token, ENV['HMAC_SECRET_KEY'], true, { algorithm: 'HS512' }) rescue JWT::ExpiredSignature @decoded_token = nil end end