From b6f73221b9be5bebd646376357c51b3e9d0191ac Mon Sep 17 00:00:00 2001 From: Shivam Mishra Date: Sun, 2 Jun 2024 19:37:31 +0530 Subject: [PATCH] feat: add authorization controller for google inbox --- .../google/authorizations_controller.rb | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 app/controllers/api/v1/accounts/google/authorizations_controller.rb diff --git a/app/controllers/api/v1/accounts/google/authorizations_controller.rb b/app/controllers/api/v1/accounts/google/authorizations_controller.rb new file mode 100644 index 000000000..4978a455e --- /dev/null +++ b/app/controllers/api/v1/accounts/google/authorizations_controller.rb @@ -0,0 +1,29 @@ +class Api::V1::Accounts::Google::AuthorizationsController < Api::V1::Accounts::BaseController + before_action :check_authorization + + def create + email = params[:authorization][:email] + redirect_url = google_client.auth_code.authorize_url( + { + redirect_uri: "#{base_url}/google/callback", + scope: 'email profile https://mail.google.com/', + response_type: 'code', + client_id: GlobalConfigService.load('GOOGLE_OAUTH_CLIENT_ID', nil) + } + ) + + if redirect_url + email = email.downcase + ::Redis::Alfred.setex(email, Current.account.id, 5.minutes) + render json: { success: true, url: redirect_url } + else + render json: { success: false }, status: :unprocessable_entity + end + end + + private + + def check_authorization + raise Pundit::NotAuthorizedError unless Current.account_user.administrator? + end +end