123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 |
- class GettingStartedController < ApplicationController
- prepend_before_action -> { authorize! }, only: [:base]
- def index
-
- return if setup_done_response
-
- return if auto_wizard_enabled_response
-
- return if setup_done && !authentication_check
-
- render json: {
- setup_done: setup_done,
- import_mode: Setting.get('import_mode'),
- import_backend: Setting.get('import_backend'),
- system_online_service: Setting.get('system_online_service'),
- }
- end
- def auto_wizard_admin
-
- return if setup_done_response
- begin
- auto_wizard_admin = Service::System::RunAutoWizard.new.execute(token: params[:token])
- rescue Service::System::RunAutoWizard::AutoWizardNotEnabledError
- return render json: {
- auto_wizard: false,
- }
- rescue Service::System::RunAutoWizard::AutoWizardExecutionError => e
- return render json: {
- auto_wizard: true,
- auto_wizard_success: false,
- message: e.message,
- }
- end
-
- current_user_set(auto_wizard_admin)
-
- Setting.set('system_init_done', true)
- render json: {
- auto_wizard: true,
- auto_wizard_success: true,
- }
- end
- def base
- args = params.slice(:url, :locale_default, :timezone_default, :organization)
- %i[logo logo_resize].each do |key|
- data = params[key]
- next if !data&.match? %r{^data:image}i
- file = ImageHelper.data_url_attributes(data)
- args[key] = file[:content] if file
- end
- begin
- set_system_information_service = Service::System::SetSystemInformation.new(data: args)
- result = set_system_information_service.execute
- render json: {
- result: 'ok',
- settings: result,
- }
- rescue Exceptions::MissingAttribute, Exceptions::InvalidAttribute => e
- render json: {
- result: 'invalid',
- messages: { e.attribute => e.message }
- }
- end
- end
- private
- def auto_wizard_enabled_response
- return false if !AutoWizard.enabled?
- render json: {
- auto_wizard: true
- }
- true
- end
- def setup_done
-
- count = User.count
- done = true
- if count <= 2
- done = false
- end
- done
- end
- def setup_done_response
- return false if !setup_done
- groups = Group.where(active: true)
- addresses = EmailAddress.where(active: true)
- render json: {
- setup_done: true,
- import_mode: Setting.get('import_mode'),
- import_backend: Setting.get('import_backend'),
- system_online_service: Setting.get('system_online_service'),
- addresses: addresses,
- groups: groups,
- config: config_to_update,
- channel_driver: {
- email: EmailHelper.available_driver,
- },
- }
- true
- end
- def config_to_update
- {
- product_logo: Setting.get('product_logo')
- }
- end
- end
|