mirror of
https://github.com/lingble/chatwoot.git
synced 2025-12-03 19:43:43 +00:00
This PR adds the following changes 1. Refactor `microsoft/callbacks_controller` to move common logic to `oauth_callback_controller`, most of the logic is re-used for Google 2. Add UI components, `googleClient` and I18n entries for Google login 3. Add Google callback and inbox creation 4. Add a `joinUrl` utility along with specs (need to move it to utils) 5. Add `GoogleConcern`, `Google::AuthorizationsController` and `Google::CallbacksController` > Note: The UI is hidden for now, so we can merge this without any hiccups, to enable it just revert the commit `05c18de` ### Preview https://github.com/chatwoot/chatwoot/assets/18097732/1606d150-4561-49dc-838d-e0b00fe49ce3 ### Linear Tickers [CW-3370](https://linear.app/chatwoot/issue/CW-3370) [CW-3371](https://linear.app/chatwoot/issue/CW-3371) --------- Co-authored-by: Muhsin Keloth <muhsinkeramam@gmail.com>
29 lines
932 B
Ruby
29 lines
932 B
Ruby
class Api::V1::Accounts::Microsoft::AuthorizationsController < Api::V1::Accounts::BaseController
|
|
include MicrosoftConcern
|
|
before_action :check_authorization
|
|
|
|
def create
|
|
email = params[:authorization][:email]
|
|
redirect_url = microsoft_client.auth_code.authorize_url(
|
|
{
|
|
redirect_uri: "#{base_url}/microsoft/callback",
|
|
scope: 'offline_access https://outlook.office.com/IMAP.AccessAsUser.All https://outlook.office.com/SMTP.Send openid profile',
|
|
prompt: 'consent'
|
|
}
|
|
)
|
|
if redirect_url
|
|
cache_key = "microsoft::#{email.downcase}"
|
|
::Redis::Alfred.setex(cache_key, 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
|