У меня есть приложение, которое использует Devise и Knock.Он использует Devise для включения аутентификации для Active Admin, а Knock gem обеспечивает аутентификацию для моего API
. У меня проблема в том, что Knock не может найти current_user
, и я полагаю, что это, вероятно, потому чтоЯ использую Devise в том же проекте.
У меня есть следующие настройки:
Api Controller
class ApiController < ActionController::API
include Knock::Authenticable
end
Пользовательский контроллер (для API не ActiveAdmin)
module Api
module V1
class UsersController < ApiController
before_action :set_user, only: [:show, :update, :destroy]
# GET /users/1
def show
render json: @user
end
# POST /users
def create
@user = User.new(user_params)
if @user.save
render json: @user.id, status: :created
else
render json: @user.errors, status: :unprocessable_entity
end
end
# PATCH/PUT /users/1
def update
if @user.update(user_params)
render json: @user
else
render json: @user.errors, status: :unprocessable_entity
end
end
# DELETE /users/1
def destroy
@user.destroy
end
private
# Use callbacks to share common setup or constraints between actions.
def set_user
@user = User.find(params[:id])
end
# Only allow a trusted parameter "white list" through.
def user_params
params.require(:user).permit(:email, :password, :password_confirmation)
end
end
end
end
Контроллер аутентификации
module Api
module V1
class AuthController < ApiController
def auth
render json: { status: 200, user: current_user }
end
end
end
end
Current User
в этом контроллере аутентификации ничего не возвращает, однако в другом проекте, который у меня есть, без устройства, это будет правильно возвращать пользователя,
Есть ли способ переопределить, что такое current_user или присвоить ему что-то другое для целей использования Knock?