zammad/app/controllers/getting_started_controller.rb

155 lines
3.4 KiB
Ruby
Raw Permalink Normal View History

# Copyright (C) 2012-2026 Zammad Foundation, https://zammad-foundation.org/
2012-04-10 19:57:18 +00:00
class GettingStartedController < ApplicationController
prepend_before_action -> { authorize! }, only: [:base]
2012-04-10 19:57:18 +00:00
=begin
Resource:
2014-11-16 22:45:57 +00:00
GET /api/v1/getting_started
Response:
{
"master_user": 1,
"groups": [
{
"name": "group1",
"active":true
},
{
"name": "group2",
"active":true
}
]
}
Test:
2014-11-16 22:45:57 +00:00
curl http://localhost/api/v1/getting_started -v -u #{login}:#{password}
=end
2012-04-10 19:57:18 +00:00
def index
# check if first user already exists
2014-10-22 21:00:11 +00:00
return if setup_done_response
2012-04-10 19:57:18 +00:00
2015-04-08 13:55:53 +00:00
# check it auto wizard is already done
2015-05-24 21:59:11 +00:00
return if auto_wizard_enabled_response
2015-04-08 13:55:53 +00:00
2012-04-10 19:57:18 +00:00
# return result
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'),
2014-10-22 21:00:11 +00:00
}
end
2015-05-24 21:59:11 +00:00
def auto_wizard_admin
# check if system setup is already done
return if setup_done_response
begin
auto_wizard_admin = Service::System::RunAutoWizard.execute(token: params[:token])
rescue Service::System::RunAutoWizard::AutoWizardNotEnabledError
return render json: {
2015-05-24 21:59:11 +00:00
auto_wizard: false,
}
rescue Service::System::RunAutoWizard::AutoWizardExecutionError => e
return render json: {
auto_wizard: true,
2015-05-24 21:59:11 +00:00
auto_wizard_success: false,
message: e.message,
2015-05-24 21:59:11 +00:00
}
end
# set current session user
current_user_set(auto_wizard_admin)
# set system init to done
Setting.set('system_init_done', true)
render json: {
auto_wizard: true,
2015-05-24 21:59:11 +00:00
auto_wizard_success: true,
}
end
2014-11-16 22:45:57 +00:00
def base
args = params.slice(:url, :locale_default, :timezone_default, :organization)
2014-11-16 22:45:57 +00:00
%i[logo logo_resize].each do |key|
data = params[key]
2014-11-16 22:45:57 +00:00
next if !data&.match? %r{^data:image}i
2014-11-16 22:45:57 +00:00
file = ImageHelper.data_url_attributes(data)
args[key] = file[:content] if file
end
begin
result = Service::System::SetSystemInformation.execute(data: args)
render json: {
result: 'ok',
settings: result,
}
rescue Exceptions::MissingAttribute, Exceptions::InvalidAttribute => e
render json: {
result: 'invalid',
messages: { e.attribute => e.message }
2014-10-22 21:00:11 +00:00
}
end
end
private
2014-11-16 22:45:57 +00:00
2015-05-24 21:59:11 +00:00
def auto_wizard_enabled_response
return false if !AutoWizard.enabled?
render json: {
auto_wizard: true
}
true
end
2014-10-22 21:00:11 +00:00
def setup_done
# return false
count = User.count
2014-10-22 21:00:11 +00:00
done = true
if count <= 2
done = false
end
done
end
def setup_done_response
return false if !setup_done || !authentication_check
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: {
2015-08-31 23:12:51 +00:00
email: EmailHelper.available_driver,
},
2012-04-11 06:34:56 +00:00
}
2014-10-22 21:00:11 +00:00
true
2012-04-10 19:57:18 +00:00
end
2014-10-22 21:00:11 +00:00
2015-08-04 19:42:49 +00:00
def config_to_update
2015-08-04 18:57:11 +00:00
{
product_logo: Setting.get('product_logo')
}
end
end