Придумай и выбей драгоценный камень current_user - PullRequest
0 голосов
/ 19 сентября 2018

У меня есть приложение, которое использует 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?

...