Я хотел бы разрешить пользователям просматривать свойства до того, как они войдут в систему. Но мой контроллер приложений ограничивает все ресурсы до того, как они будут авторизованы. Как я могу разрешить просмотр ресурса свойств независимо от того, вошел ли пользователь в систему?или нет?
Я пытался добавить свойства к методу authorized
в application_controller
и добавить skip_before_action :authorized, only: [:index]
и authorize!
в properties_controller
.
class ApplicationController < ActionController::API
before_action :authorized
def encode_token(payload)
# should store secret in env variable
JWT.encode(payload, 'SECRET_KEY_BASE')
end
def auth_header
request.headers['Authorization']
end
def decoded_token
if auth_header
token = auth_header.split(' ')[1]
begin
JWT.decode(token, 'SECRET_KEY_BASE', true, algorithm: 'HS256')
rescue JWT::DecodeError
nil
end
end
end
def current_investor
if decoded_token
investor_id = decoded_token[0]['investor_id']
@investor = Investor.find_by(id: investor_id)
end
end
def logged_in?
!!current_investor
end
def authorized
render json: { message: 'Please log in' }, status: :unauthorized unless logged_in?
end
end
class Api::V1::PropertiesController < ApplicationController
def index
properties = Property.all
render json: PropertySerializer.new(properties).to_serialized_json
end
def create
property = Property.new(property_params)
if property.save!
render json: property_params
else
render :new
end
end
private
def property_params
params.require(:id, :price, :rent, :year_built, :last_year_appreciation, :next_year_appreciation, :lease_length, :beds_baths_sqft, :description, :zone, :address)
end
end
Я бы хотел, чтобы весь ресурс свойств был доступен независимо от того, вошел ли пользователь в систему. Спасибо!