module InfinumId module Api class WebhooksController < Api::BaseController def update_resource_callback return render_not_found unless resource resource.update(user_params) InfinumId::AfterResourceUpdate.call(resource, params[:user]) render json: { resource_name.underscore => 'updated' } end def create_resource_callback return render_already_exists if resource resource = resource_class.create(user_params.merge(provider: params[:provider])) InfinumId::AfterResourceCreate.call(resource, params[:user]) render json: { resource_name.underscore => 'created' } end private def user_params params.require(:user).permit(InfinumId.resource_attributes) end def resource @resource ||= resource_class.find_by(uid: user_params[:uid], provider: params[:provider]) || resource_class.find_by(email: user_params[:email]) end def render_not_found render json: { resource_name.underscore => 'not found' }, status: :not_found end def render_already_exists render json: { resource_name.underscore => 'already exists' }, status: :unprocessable_entity end end end end