2026-01-02 13:41:09 +00:00
|
|
|
# Copyright (C) 2012-2026 Zammad Foundation, https://zammad-foundation.org/
|
2020-05-28 13:28:07 +00:00
|
|
|
|
|
|
|
|
class ChannelsGoogleController < ApplicationController
|
2025-02-18 12:38:47 +00:00
|
|
|
include CanXoauth2EmailChannel
|
2020-05-28 13:28:07 +00:00
|
|
|
|
2025-02-18 12:38:47 +00:00
|
|
|
prepend_before_action :authenticate_and_authorize!
|
2020-05-28 13:28:07 +00:00
|
|
|
|
2025-02-18 12:38:47 +00:00
|
|
|
def area
|
|
|
|
|
'Google::Account'.freeze
|
|
|
|
|
end
|
2020-05-28 13:28:07 +00:00
|
|
|
|
2025-02-18 12:38:47 +00:00
|
|
|
def external_credential_name
|
|
|
|
|
'google'.freeze
|
2020-05-28 13:28:07 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def enable
|
2025-02-18 12:38:47 +00:00
|
|
|
channel = Channel.find_by(id: params[:id], area:)
|
2020-05-28 13:28:07 +00:00
|
|
|
channel.active = true
|
|
|
|
|
channel.save!
|
|
|
|
|
render json: {}
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def disable
|
2025-02-18 12:38:47 +00:00
|
|
|
channel = Channel.find_by(id: params[:id], area:)
|
2020-05-28 13:28:07 +00:00
|
|
|
channel.active = false
|
|
|
|
|
channel.save!
|
|
|
|
|
render json: {}
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def destroy
|
2025-02-18 12:38:47 +00:00
|
|
|
channel = Channel.find_by(id: params[:id], area:)
|
2021-09-15 14:27:40 +00:00
|
|
|
email = EmailAddress.find_by(channel_id: channel.id)
|
|
|
|
|
email&.destroy!
|
2020-05-28 13:28:07 +00:00
|
|
|
channel.destroy!
|
|
|
|
|
render json: {}
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def rollback_migration
|
2025-02-18 12:38:47 +00:00
|
|
|
channel = Channel.find_by!(id: params[:id], area:)
|
2021-11-15 15:58:19 +00:00
|
|
|
raise __('Failed to find backup on channel!') if !channel.options[:backup_imap_classic]
|
2020-05-28 13:28:07 +00:00
|
|
|
|
|
|
|
|
channel.update!(channel.options[:backup_imap_classic][:attributes])
|
|
|
|
|
render json: {}
|
|
|
|
|
end
|
|
|
|
|
end
|