2026-01-02 13:41:09 +00:00
|
|
|
# Copyright (C) 2012-2026 Zammad Foundation, https://zammad-foundation.org/
|
2021-06-01 12:20:20 +00:00
|
|
|
|
2012-04-10 19:57:18 +00:00
|
|
|
class GettingStartedController < ApplicationController
|
2020-03-19 09:39:51 +00:00
|
|
|
prepend_before_action -> { authorize! }, only: [:base]
|
2012-04-10 19:57:18 +00:00
|
|
|
|
2012-09-20 12:08:02 +00:00
|
|
|
=begin
|
|
|
|
|
|
|
|
|
|
Resource:
|
2014-11-16 22:45:57 +00:00
|
|
|
GET /api/v1/getting_started
|
2012-09-20 12:08:02 +00:00
|
|
|
|
|
|
|
|
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}
|
2013-06-12 15:59:58 +00:00
|
|
|
|
2012-09-20 12:08:02 +00:00
|
|
|
=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
|
2015-04-27 13:42:53 +00:00
|
|
|
render json: {
|
2018-12-19 17:31:51 +00:00
|
|
|
setup_done: setup_done,
|
|
|
|
|
import_mode: Setting.get('import_mode'),
|
|
|
|
|
import_backend: Setting.get('import_backend'),
|
2015-04-27 13:42:53 +00:00
|
|
|
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
|
|
|
|
|
|
2024-02-02 06:48:52 +00:00
|
|
|
begin
|
2026-04-23 09:39:32 +00:00
|
|
|
auto_wizard_admin = Service::System::RunAutoWizard.execute(token: params[:token])
|
2024-02-02 06:48:52 +00:00
|
|
|
rescue Service::System::RunAutoWizard::AutoWizardNotEnabledError
|
|
|
|
|
return render json: {
|
2015-05-24 21:59:11 +00:00
|
|
|
auto_wizard: false,
|
|
|
|
|
}
|
2024-02-02 06:48:52 +00:00
|
|
|
rescue Service::System::RunAutoWizard::AutoWizardExecutionError => e
|
|
|
|
|
return render json: {
|
2018-12-19 17:31:51 +00:00
|
|
|
auto_wizard: true,
|
2015-05-24 21:59:11 +00:00
|
|
|
auto_wizard_success: false,
|
2024-02-02 06:48:52 +00:00
|
|
|
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: {
|
2018-12-19 17:31:51 +00:00
|
|
|
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
|
2024-01-16 11:06:18 +00:00
|
|
|
args = params.slice(:url, :locale_default, :timezone_default, :organization)
|
2014-11-16 22:45:57 +00:00
|
|
|
|
2024-01-16 11:06:18 +00:00
|
|
|
%i[logo logo_resize].each do |key|
|
|
|
|
|
data = params[key]
|
2014-11-16 22:45:57 +00:00
|
|
|
|
2024-01-16 11:06:18 +00:00
|
|
|
next if !data&.match? %r{^data:image}i
|
2014-11-16 22:45:57 +00:00
|
|
|
|
2024-01-16 11:06:18 +00:00
|
|
|
file = ImageHelper.data_url_attributes(data)
|
2017-12-06 15:49:20 +00:00
|
|
|
|
2024-01-16 11:06:18 +00:00
|
|
|
args[key] = file[:content] if file
|
2019-02-10 11:01:38 +00:00
|
|
|
end
|
|
|
|
|
|
2024-01-17 16:30:31 +00:00
|
|
|
begin
|
2026-04-23 09:39:32 +00:00
|
|
|
result = Service::System::SetSystemInformation.execute(data: args)
|
2024-01-16 11:06:18 +00:00
|
|
|
|
2024-01-17 16:30:31 +00:00
|
|
|
render json: {
|
|
|
|
|
result: 'ok',
|
|
|
|
|
settings: result,
|
|
|
|
|
}
|
|
|
|
|
rescue Exceptions::MissingAttribute, Exceptions::InvalidAttribute => e
|
2015-04-27 13:42:53 +00:00
|
|
|
render json: {
|
2018-12-19 17:31:51 +00:00
|
|
|
result: 'invalid',
|
2024-01-17 16:30:31 +00:00
|
|
|
messages: { e.attribute => e.message }
|
2014-10-22 21:00:11 +00:00
|
|
|
}
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
2015-08-23 20:21:04 +00:00
|
|
|
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
|
2021-07-16 13:44:10 +00:00
|
|
|
# return false
|
2023-09-15 07:24:53 +00:00
|
|
|
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
|
2026-03-18 13:25:32 +00:00
|
|
|
return false if !setup_done || !authentication_check
|
2014-11-20 16:04:31 +00:00
|
|
|
|
2017-12-06 15:49:20 +00:00
|
|
|
groups = Group.where(active: true)
|
|
|
|
|
addresses = EmailAddress.where(active: true)
|
2015-04-27 13:42:53 +00:00
|
|
|
|
|
|
|
|
render json: {
|
2018-12-19 17:31:51 +00:00
|
|
|
setup_done: true,
|
|
|
|
|
import_mode: Setting.get('import_mode'),
|
|
|
|
|
import_backend: Setting.get('import_backend'),
|
2015-04-27 13:42:53 +00:00
|
|
|
system_online_service: Setting.get('system_online_service'),
|
2018-12-19 17:31:51 +00:00
|
|
|
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
|
2015-04-27 14:15:29 +00:00
|
|
|
end
|