class DeviseTokenAuth::ConfirmationsController

def create

def create
  return render_create_error_missing_email if resource_params[:email].blank?
  @email = get_case_insensitive_field_from_resource_params(:email)
  @resource = resource_class.dta_find_by(uid: @email, provider: provider)
  return render_not_found_error unless @resource
  @resource.send_confirmation_instructions({
    redirect_url: redirect_url,
    client_config: resource_params[:config_name]
  })
  return render_create_success
end

def redirect_url

give redirect value from params priority or fall back to default value if provided
def redirect_url
  params.fetch(
    :redirect_url,
    DeviseTokenAuth.default_confirm_success_url
  )
end

def render_create_error_missing_email

def render_create_error_missing_email
  render_error(401, I18n.t('devise_token_auth.confirmations.missing_email'))
end

def render_create_success

def render_create_success
  render json: {
           success: true,
           message: success_message('confirmations', @email)
         }
end

def render_not_found_error

def render_not_found_error
  if Devise.paranoid
    render_error(404, I18n.t('devise_token_auth.confirmations.sended_paranoid'))
  else
    render_error(404, I18n.t('devise_token_auth.confirmations.user_not_found', email: @email))
  end
end

def resource_params

def resource_params
  params.permit(:email, :confirmation_token, :config_name)
end

def show

def show
  @resource = resource_class.confirm_by_token(resource_params[:confirmation_token])
  if @resource.errors.empty?
    yield @resource if block_given?
    redirect_header_options = { account_confirmation_success: true }
    if signed_in?(resource_name)
      token = signed_in_resource.create_token
      signed_in_resource.save!
      redirect_headers = build_redirect_headers(token.token,
                                                token.client,
                                                redirect_header_options)
      redirect_to_link = signed_in_resource.build_auth_url(redirect_url, redirect_headers)
    else
      redirect_to_link = DeviseTokenAuth::Url.generate(redirect_url, redirect_header_options)
   end
    redirect_to(redirect_to_link)
  else
    raise ActionController::RoutingError, 'Not Found'
  end
end