39 lines
1.7 KiB
Ruby
39 lines
1.7 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
# License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later
|
|
|
|
module Nonprofits
|
|
class NonprofitKeysController < ApplicationController
|
|
include Controllers::NonprofitHelper
|
|
before_action :authenticate_nonprofit_user!
|
|
|
|
# get /nonprofits/:nonprofit_id/nonprofit_keys
|
|
# pass in the :select query param, which is the name of the column of the specific token you want
|
|
def index
|
|
render_json { QueryNonprofitKeys.get_key(current_nonprofit.id, params[:select]) }
|
|
end
|
|
|
|
# Redirects to the mailchimp OAuth2 landing page, first setting the nonprofit id in the session
|
|
# GET /nonprofits/:nonprofit_id/nonprofit_keys/mailchimp_login
|
|
def mailchimp_login
|
|
session[:current_mailchimp_nonprofit_id] = current_nonprofit.id
|
|
redirect_to "https://login.mailchimp.com/oauth2/authorize?response_type=code&client_id=#{ENV['MAILCHIMP_OAUTH_CLIENT_ID']}"
|
|
end
|
|
|
|
# After the user OAuths mailchimp, they are redirected to /mailchimp-landing
|
|
# This action then redirects them back to /settings
|
|
# GET /mailchimp-landing
|
|
def mailchimp_landing
|
|
@nonprofit = Nonprofit.find(session[:current_mailchimp_nonprofit_id])
|
|
session.delete(:current_mailchimp_nonprofit_id)
|
|
begin
|
|
session[:mailchimp_access_token] = InsertNonprofitKeys.insert_mailchimp_access_token(@nonprofit.id, params[:code])
|
|
rescue Exception => e
|
|
flash[:notice] = "Unable to connect to your Mailchimp account, please try again. (Error: #{e})"
|
|
redirect_to '/settings'
|
|
return
|
|
end
|
|
redirect_to nonprofits_supporters_path @nonprofit, 'show-modal' => 'mailchimpSettingsModal'
|
|
end
|
|
end
|
|
end
|