# frozen_string_literal: true

require './lib/actions/oauth_signup_action'
class AuthenticationsController < ApplicationController
  before_action :authenticate_member!
  load_and_authorize_resource

  # POST /authentications
  def create
    auth = request.env['omniauth.auth']
    @authentication = nil
    if auth
      name = Growstuff::OauthSignupAction.new.determine_name(auth)

      @authentication = current_member.authentications
        .create_with(
          name:,
          token:  auth['credentials']['token'],
          secret: auth['credentials']['secret']
        )
        .find_or_create_by(
          provider: auth['provider'],
          uid:      auth['uid'],
          name:
        )

      flash[:notice] = "Authentication successful."
    else
      flash[:notice] = "Authentication failed."
    end
    redirect_to request.env['omniauth.origin'] || edit_member_registration_path
  end

  # DELETE /authentications/1
  def destroy
    @authentication.destroy

    respond_to do |format|
      format.html { redirect_to edit_member_registration_path }
    end
  end
end
