Moved system_init_done check to construction. Whiling import or getting started it will change automatically which leads to errors.

This commit is contained in:
Martin Edenhofer 2016-06-16 15:22:08 +02:00
parent 1e1f32a5a1
commit dda7bbdeae
3 changed files with 141 additions and 138 deletions

View file

@ -9,8 +9,13 @@ class Index extends App.WizardFullScreen
# set title # set title
@title 'Get Started' @title 'Get Started'
# redirect to login if master user already exists
if @Config.get('system_init_done')
@navigate '#login'
return
# if not import backend exists, go ahead # if not import backend exists, go ahead
if !App.Config.get('ImportPlugins') if !@Config.get('ImportPlugins')
@navigate 'getting_started/admin' @navigate 'getting_started/admin'
return return
@ -25,15 +30,10 @@ class Index extends App.WizardFullScreen
@ajax( @ajax(
id: 'getting_started' id: 'getting_started'
type: 'GET' type: 'GET'
url: @apiPath + '/getting_started' url: "#{@apiPath}/getting_started"
processData: true processData: true
success: (data, status, xhr) => success: (data, status, xhr) =>
# redirect to login if master user already exists
if @Config.get('system_init_done')
@navigate '#login'
return
# check if auto wizard is executed # check if auto wizard is executed
if data.auto_wizard == true if data.auto_wizard == true
@ -43,7 +43,7 @@ class Index extends App.WizardFullScreen
# check if import is active # check if import is active
if data.import_mode == true if data.import_mode == true
@navigate '#import/' + data.import_backend @navigate "#import/#{data.import_backend}"
return return
# render page # render page
@ -56,7 +56,7 @@ class Index extends App.WizardFullScreen
renderAutoWizard: -> renderAutoWizard: ->
@html App.view('getting_started/auto_wizard_enabled')() @html App.view('getting_started/auto_wizard_enabled')()
App.Config.set( 'getting_started', Index, 'Routes' ) App.Config.set('getting_started', Index, 'Routes')
class AutoWizard extends App.WizardFullScreen class AutoWizard extends App.WizardFullScreen
constructor: -> constructor: ->
@ -67,6 +67,11 @@ class AutoWizard extends App.WizardFullScreen
@navigate '#' @navigate '#'
return return
# redirect to login if master user already exists
if @Config.get('system_init_done')
@navigate '#login'
return
# set title # set title
@title 'Auto Wizard' @title 'Auto Wizard'
@renderSplash() @renderSplash()
@ -89,16 +94,21 @@ class AutoWizard extends App.WizardFullScreen
processData: true processData: true
success: (data, status, xhr) => success: (data, status, xhr) =>
# redirect to login if master user already exists
if @Config.get('system_init_done')
@navigate '#login'
return
# check if auto wizard enabled # check if auto wizard enabled
if data.auto_wizard is false if data.auto_wizard is false
@navigate '#' @navigate '#'
return return
# auto wizard setup was successful
if data.auto_wizard_success is true
# login check / get session user
delay = =>
App.Auth.loginCheck()
@navigate '#'
@delay(delay, 800)
return
if data.auto_wizard_success is false if data.auto_wizard_success is false
if data.message if data.message
@renderFailed(data) @renderFailed(data)
@ -106,12 +116,8 @@ class AutoWizard extends App.WizardFullScreen
@renderToken() @renderToken()
return return
# login check / get session user # redirect to login if master user already exists
delay = => @navigate '#login'
App.Auth.loginCheck()
@navigate '#'
@delay(delay, 1200)
return
) )
renderFailed: (data) -> renderFailed: (data) ->
@ -140,6 +146,11 @@ class Admin extends App.WizardFullScreen
# set title # set title
@title 'Create Admin' @title 'Create Admin'
# redirect to login if master user already exists
if @Config.get('system_init_done')
@navigate '#login'
return
@fetch() @fetch()
release: => release: =>
@ -151,7 +162,7 @@ class Admin extends App.WizardFullScreen
@ajax( @ajax(
id: 'getting_started' id: 'getting_started'
type: 'GET' type: 'GET'
url: @apiPath + '/getting_started' url: "#{@apiPath}/getting_started"
processData: true processData: true
success: (data, status, xhr) => success: (data, status, xhr) =>
@ -160,14 +171,9 @@ class Admin extends App.WizardFullScreen
# @navigate '#getting_started/base' # @navigate '#getting_started/base'
# return # return
# redirect to login if master user already exists
if @Config.get('system_init_done')
@navigate '#login'
return
# check if import is active # check if import is active
if data.import_mode == true if data.import_mode == true
@navigate '#import/' + data.import_backend @navigate "#import/#{data.import_backend}"
return return
# load group collection # load group collection
@ -217,7 +223,7 @@ class Admin extends App.WizardFullScreen
error: -> error: ->
App.Event.trigger 'notify', { App.Event.trigger 'notify', {
type: 'error' type: 'error'
msg: App.i18n.translateContent( 'Signin failed! Please contact the support team!' ) msg: App.i18n.translateContent('Signin failed! Please contact the support team!')
timeout: 2500 timeout: 2500
} }
) )
@ -227,16 +233,14 @@ class Admin extends App.WizardFullScreen
@formEnable(e) @formEnable(e)
App.Event.trigger 'notify', { App.Event.trigger 'notify', {
type: 'error' type: 'error'
msg: App.i18n.translateContent( details.error_human || 'Can\'t create user!' ) msg: App.i18n.translateContent(details.error_human || 'Can\'t create user!')
timeout: 2500 timeout: 2500
} }
) )
relogin: (data, status, xhr) => relogin: (data, status, xhr) =>
@log 'notice', 'relogin:success', data @log 'notice', 'relogin:success', data
App.Event.trigger 'notify:removeall' App.Event.trigger 'notify:removeall'
@navigate 'getting_started/base' @navigate 'getting_started/base'
App.Config.set('getting_started/admin', Admin, 'Routes') App.Config.set('getting_started/admin', Admin, 'Routes')
@ -271,13 +275,13 @@ class Base extends App.WizardFullScreen
@ajax( @ajax(
id: 'getting_started', id: 'getting_started',
type: 'GET', type: 'GET',
url: @apiPath + '/getting_started', url: "#{@apiPath}/getting_started",
processData: true, processData: true,
success: (data, status, xhr) => success: (data, status, xhr) =>
# check if import is active # check if import is active
if data.import_mode == true if data.import_mode == true
@navigate '#import/' + data.import_backend @navigate "#import/#{data.import_backend}"
return return
# import config options # import config options
@ -344,7 +348,7 @@ class Base extends App.WizardFullScreen
@ajax( @ajax(
id: 'getting_started_base' id: 'getting_started_base'
type: 'POST' type: 'POST'
url: @apiPath + '/getting_started/base' url: "#{@apiPath}/getting_started/base"
data: JSON.stringify(@params) data: JSON.stringify(@params)
processData: true processData: true
success: (data, status, xhr) => success: (data, status, xhr) =>
@ -406,15 +410,15 @@ class EmailNotification extends App.WizardFullScreen
# get data # get data
@ajax( @ajax(
id: 'getting_started', id: 'getting_started'
type: 'GET', type: 'GET'
url: @apiPath + '/getting_started', url: "#{@apiPath}/getting_started"
processData: true, processData: true
success: (data, status, xhr) => success: (data, status, xhr) =>
# check if import is active # check if import is active
if data.import_mode == true if data.import_mode == true
@navigate '#import/' + data.import_backend @navigate "#import/#{data.import_backend}"
return return
@channelDriver = data.channel_driver @channelDriver = data.channel_driver
@ -469,8 +473,8 @@ class EmailNotification extends App.WizardFullScreen
@ajax( @ajax(
id: 'email_notification' id: 'email_notification'
type: 'POST' type: 'POST'
url: @apiPath + '/channels/email_notification' url: "#{@apiPath}/channels/email_notification"
data: JSON.stringify( params ) data: JSON.stringify(params)
processData: true processData: true
success: (data, status, xhr) => success: (data, status, xhr) =>
if data.result is 'ok' if data.result is 'ok'
@ -524,15 +528,15 @@ class Channel extends App.WizardFullScreen
# get data # get data
@ajax( @ajax(
id: 'getting_started', id: 'getting_started'
type: 'GET', type: 'GET'
url: @apiPath + '/getting_started', url: "#{@apiPath}/getting_started"
processData: true, processData: true
success: (data, status, xhr) => success: (data, status, xhr) =>
# check if import is active # check if import is active
if data.import_mode == true if data.import_mode == true
@navigate '#import/' + data.import_backend @navigate "#import/#{data.import_backend}"
return return
# render page # render page
@ -567,15 +571,15 @@ class ChannelEmailPreConfigured extends App.WizardFullScreen
# get data # get data
@ajax( @ajax(
id: 'getting_started', id: 'getting_started'
type: 'GET', type: 'GET'
url: @apiPath + '/getting_started', url: "#{@apiPath}/getting_started"
processData: true, processData: true
success: (data, status, xhr) => success: (data, status, xhr) =>
# check if import is active # check if import is active
if data.import_mode == true if data.import_mode == true
@navigate '#import/' + data.import_backend @navigate "#import/#{data.import_backend}"
return return
# render page # render page
@ -628,15 +632,15 @@ class ChannelEmail extends App.WizardFullScreen
# get data # get data
@ajax( @ajax(
id: 'getting_started', id: 'getting_started'
type: 'GET', type: 'GET'
url: @apiPath + '/getting_started', url: "#{@apiPath}/getting_started"
processData: true, processData: true
success: (data, status, xhr) => success: (data, status, xhr) =>
# check if import is active # check if import is active
if data.import_mode == true if data.import_mode == true
@navigate '#import/' + data.import_backend @navigate "#import/#{data.import_backend}"
return return
@channelDriver = data.channel_driver @channelDriver = data.channel_driver
@ -718,8 +722,8 @@ class ChannelEmail extends App.WizardFullScreen
@ajax( @ajax(
id: 'email_probe' id: 'email_probe'
type: 'POST' type: 'POST'
url: @apiPath + '/channels/email_probe' url: "#{@apiPath}/channels/email_probe"
data: JSON.stringify( params ) data: JSON.stringify(params)
processData: true processData: true
success: (data, status, xhr) => success: (data, status, xhr) =>
if data.result is 'ok' if data.result is 'ok'
@ -767,8 +771,8 @@ class ChannelEmail extends App.WizardFullScreen
@ajax( @ajax(
id: 'email_inbound' id: 'email_inbound'
type: 'POST' type: 'POST'
url: @apiPath + '/channels/email_inbound' url: "#{@apiPath}/channels/email_inbound"
data: JSON.stringify( params ) data: JSON.stringify(params)
processData: true processData: true
success: (data, status, xhr) => success: (data, status, xhr) =>
if data.result is 'ok' if data.result is 'ok'
@ -820,8 +824,8 @@ class ChannelEmail extends App.WizardFullScreen
@ajax( @ajax(
id: 'email_outbound' id: 'email_outbound'
type: 'POST' type: 'POST'
url: @apiPath + '/channels/email_outbound' url: "#{@apiPath}/channels/email_outbound"
data: JSON.stringify( params ) data: JSON.stringify(params)
processData: true processData: true
success: (data, status, xhr) => success: (data, status, xhr) =>
if data.result is 'ok' if data.result is 'ok'
@ -832,12 +836,12 @@ class ChannelEmail extends App.WizardFullScreen
@verify(@account) @verify(@account)
else else
@showSlide('js-outbound') @showSlide('js-outbound')
@showAlert('js-outbound', data.message_human || data.message ) @showAlert('js-outbound', data.message_human || data.message)
@showInvalidField('js-outbound', data.invalid_field) @showInvalidField('js-outbound', data.invalid_field)
@enable(e) @enable(e)
fail: => fail: =>
@showSlide('js-outbound') @showSlide('js-outbound')
@showAlert('js-outbound', data.message_human || data.message ) @showAlert('js-outbound', data.message_human || data.message)
@showInvalidField('js-outbound', data.invalid_field) @showInvalidField('js-outbound', data.invalid_field)
@enable(e) @enable(e)
) )
@ -848,8 +852,8 @@ class ChannelEmail extends App.WizardFullScreen
@ajax( @ajax(
id: 'email_verify' id: 'email_verify'
type: 'POST' type: 'POST'
url: @apiPath + '/channels/email_verify' url: "#{@apiPath}/channels/email_verify"
data: JSON.stringify( account ) data: JSON.stringify(account)
processData: true processData: true
success: (data, status, xhr) => success: (data, status, xhr) =>
if data.result is 'ok' if data.result is 'ok'
@ -857,11 +861,11 @@ class ChannelEmail extends App.WizardFullScreen
else else
if data.source is 'inbound' || data.source is 'outbound' if data.source is 'inbound' || data.source is 'outbound'
@showSlide("js-#{data.source}") @showSlide("js-#{data.source}")
@showAlert("js-#{data.source}", data.message_human || data.message ) @showAlert("js-#{data.source}", data.message_human || data.message)
@showInvalidField("js-#{data.source}", data.invalid_field) @showInvalidField("js-#{data.source}", data.invalid_field)
else else
if count is 2 if count is 2
@showAlert('js-verify', data.message_human || data.message ) @showAlert('js-verify', data.message_human || data.message)
@delay( @delay(
=> =>
@showSlide('js-intro') @showSlide('js-intro')
@ -875,7 +879,7 @@ class ChannelEmail extends App.WizardFullScreen
@verify( @account, count + 1 ) @verify( @account, count + 1 )
fail: => fail: =>
@showSlide('js-intro') @showSlide('js-intro')
@showAlert('js-intro', 'Unable to verify sending and receiving. Please check your settings.' ) @showAlert('js-intro', 'Unable to verify sending and receiving. Please check your settings.')
) )
App.Config.set('getting_started/channel/email', ChannelEmail, 'Routes') App.Config.set('getting_started/channel/email', ChannelEmail, 'Routes')
@ -901,15 +905,15 @@ class Agent extends App.WizardFullScreen
# get data # get data
@ajax( @ajax(
id: 'getting_started', id: 'getting_started'
type: 'GET', type: 'GET'
url: @apiPath + '/getting_started', url: "#{@apiPath}/getting_started"
processData: true, processData: true
success: (data, status, xhr) => success: (data, status, xhr) =>
# check if import is active # check if import is active
if data.import_mode == true if data.import_mode == true
@navigate '#import/' + data.import_backend @navigate "#import/#{data.import_backend}"
return return
# load group collection # load group collection

View file

@ -16,26 +16,26 @@ class Index extends App.ControllerContent
# set title # set title
@title 'Import' @title 'Import'
# redirect to login if master user already exists
if @Config.get('system_init_done')
@navigate '#login'
return
@fetch() @fetch()
fetch: -> fetch: ->
# get data # get data
@ajax( @ajax(
id: 'getting_started', id: 'getting_started'
type: 'GET', type: 'GET'
url: @apiPath + '/getting_started', url: "#{@apiPath}/getting_started"
processData: true, processData: true
success: (data, status, xhr) => success: (data, status, xhr) =>
# redirect to login if master user already exists
if @Config.get('system_init_done')
@navigate '#login'
return
# check if import is active # check if import is active
if data.import_mode == true && data.import_backend != 'otrs' if data.import_mode == true && data.import_backend != 'otrs'
@navigate '#import/' + data.import_backend @navigate "#import/#{data.import_backend}"
return return
# render page # render page
@ -71,11 +71,11 @@ class Index extends App.ControllerContent
# get data # get data
callback = => callback = =>
@ajax( @ajax(
id: 'import_otrs_url', id: 'import_otrs_url'
type: 'POST', type: 'POST'
url: @apiPath + '/import/otrs/url_check', url: "#{@apiPath}/import/otrs/url_check"
data: JSON.stringify(url: url) data: JSON.stringify(url: url)
processData: true, processData: true
success: (data, status, xhr) => success: (data, status, xhr) =>
# validate form # validate form
@ -85,7 +85,7 @@ class Index extends App.ControllerContent
@nextStartMigration.removeClass('hide') @nextStartMigration.removeClass('hide')
else else
@urlStatus.attr('data-state', 'error') @urlStatus.attr('data-state', 'error')
@linkErrorMessage.text( data.message_human || data.message ) @linkErrorMessage.text(data.message_human || data.message)
@nextStartMigration.addClass('hide') @nextStartMigration.addClass('hide')
) )
@ -95,23 +95,22 @@ class Index extends App.ControllerContent
e.preventDefault() e.preventDefault()
@showImportState() @showImportState()
@ajax( @ajax(
id: 'import_start', id: 'import_start'
type: 'POST', type: 'POST'
url: @apiPath + '/import/otrs/import_start', url: "#{@apiPath}/import/otrs/import_start"
processData: true, processData: true
success: (data, status, xhr) => success: (data, status, xhr) =>
if data.result is 'ok' if data.result is 'ok'
@delay(@updateMigration, 3000) @delay(@updateMigration, 3000)
) )
updateMigration: => updateMigration: =>
@showImportState() @showImportState()
@ajax( @ajax(
id: 'import_status', id: 'import_status'
type: 'GET', type: 'GET'
url: @apiPath + '/import/otrs/import_status', url: "#{@apiPath}/import/otrs/import_status"
processData: true, processData: true
success: (data, status, xhr) => success: (data, status, xhr) =>
if data.result is 'import_done' if data.result is 'import_done'
@ -128,11 +127,11 @@ class Index extends App.ControllerContent
for key, item of data.data for key, item of data.data
if item.done > item.total if item.done > item.total
item.done = item.total item.done = item.total
element = @$('.js-' + key.toLowerCase() ) element = @$('.js-' + key.toLowerCase())
element.find('.js-done').text(item.done) element.find('.js-done').text(item.done)
element.find('.js-total').text(item.total) element.find('.js-total').text(item.total)
element.find('progress').attr('max', item.total ) element.find('progress').attr('max', item.total)
element.find('progress').attr('value', item.done ) element.find('progress').attr('value', item.done)
if item.total <= item.done if item.total <= item.done
element.addClass('is-done') element.addClass('is-done')
else else
@ -140,11 +139,11 @@ class Index extends App.ControllerContent
@delay(@updateMigration, 6500) @delay(@updateMigration, 6500)
) )
App.Config.set( 'import/otrs', Index, 'Routes' ) App.Config.set('import/otrs', Index, 'Routes')
App.Config.set( 'otrs', { App.Config.set('otrs', {
image: 'otrs-logo.png' image: 'otrs-logo.png'
title: 'OTRS' title: 'OTRS'
name: 'OTRS' name: 'OTRS'
class: 'js-otrs' class: 'js-otrs'
url: '#import/otrs' url: '#import/otrs'
}, 'ImportPlugins' ) }, 'ImportPlugins')

View file

@ -23,26 +23,26 @@ class Index extends App.ControllerContent
# set title # set title
@title 'Import' @title 'Import'
# redirect to login if master user already exists
if @Config.get('system_init_done')
@navigate '#login'
return
@fetch() @fetch()
fetch: -> fetch: ->
# get data # get data
@ajax( @ajax(
id: 'getting_started', id: 'getting_started'
type: 'GET', type: 'GET'
url: @apiPath + '/getting_started', url: "#{@apiPath}/getting_started"
processData: true, processData: true
success: (data, status, xhr) => success: (data, status, xhr) =>
# redirect to login if master user already exists
if @Config.get('system_init_done')
@navigate '#login'
return
# check if import is active # check if import is active
if data.import_mode == true && data.import_backend != 'zendesk' if data.import_mode == true && data.import_backend != 'zendesk'
@navigate '#import/' + data.import_backend @navigate "#import/#{data.import_backend}"
return return
# render page # render page
@ -63,11 +63,11 @@ class Index extends App.ControllerContent
# get data # get data
callback = => callback = =>
@ajax( @ajax(
id: 'import_zendesk_url', id: 'import_zendesk_url'
type: 'POST', type: 'POST'
url: @apiPath + '/import/zendesk/url_check', url: "#{@apiPath}/import/zendesk/url_check"
data: JSON.stringify(url: @zendeskUrl.val()) data: JSON.stringify(url: @zendeskUrl.val())
processData: true, processData: true
success: (data, status, xhr) => success: (data, status, xhr) =>
# validate form # validate form
@ -78,7 +78,7 @@ class Index extends App.ControllerContent
@nextEnterCredentials.removeClass('hide') @nextEnterCredentials.removeClass('hide')
else else
@urlStatus.attr('data-state', 'error') @urlStatus.attr('data-state', 'error')
@linkErrorMessage.text( data.message_human || data.message ) @linkErrorMessage.text( data.message_human || data.message)
@nextEnterCredentials.addClass('hide') @nextEnterCredentials.addClass('hide')
) )
@ -91,11 +91,11 @@ class Index extends App.ControllerContent
# get data # get data
callback = => callback = =>
@ajax( @ajax(
id: 'import_zendesk_api_token', id: 'import_zendesk_api_token'
type: 'POST', type: 'POST'
url: @apiPath + '/import/zendesk/credentials_check', url: "#{@apiPath}/import/zendesk/credentials_check"
data: JSON.stringify(username: @zendeskEmail.val(), token: @zendeskApiToken.val()) data: JSON.stringify(username: @zendeskEmail.val(), token: @zendeskApiToken.val())
processData: true, processData: true
success: (data, status, xhr) => success: (data, status, xhr) =>
# validate form # validate form
@ -106,11 +106,11 @@ class Index extends App.ControllerContent
@nextStartMigration.removeClass('hide') @nextStartMigration.removeClass('hide')
else else
@urlStatus.attr('data-state', 'error') @urlStatus.attr('data-state', 'error')
@apiTokenErrorMessage.text( data.message_human || data.message ) @apiTokenErrorMessage.text(data.message_human || data.message)
@nextStartMigration.addClass('hide') @nextStartMigration.addClass('hide')
) )
@delay( callback, 700, 'import_zendesk_api_token' ) @delay(callback, 700, 'import_zendesk_api_token')
showCredentials: (e) => showCredentials: (e) =>
e.preventDefault() e.preventDefault()
@ -129,25 +129,25 @@ class Index extends App.ControllerContent
e.preventDefault() e.preventDefault()
@showImportState() @showImportState()
@ajax( @ajax(
id: 'import_start', id: 'import_start'
type: 'POST', type: 'POST'
url: @apiPath + '/import/zendesk/import_start', url: "#{@apiPath}/import/zendesk/import_start"
processData: true, processData: true
success: (data, status, xhr) => success: (data, status, xhr) =>
# validate form # validate form
console.log(data) console.log(data)
if data.result is 'ok' if data.result is 'ok'
@delay( @updateMigration, 3000 ) @delay(@updateMigration, 3000)
) )
updateMigration: => updateMigration: =>
@showImportState() @showImportState()
@ajax( @ajax(
id: 'import_status', id: 'import_status'
type: 'GET', type: 'GET'
url: @apiPath + '/import/zendesk/import_status', url: "#{@apiPath}/import/zendesk/import_status"
processData: true, processData: true
success: (data, status, xhr) => success: (data, status, xhr) =>
if data.result is 'import_done' if data.result is 'import_done'
@ -173,13 +173,13 @@ class Index extends App.ControllerContent
element.addClass('is-done') element.addClass('is-done')
else else
element.removeClass('is-done') element.removeClass('is-done')
@delay( @updateMigration, 5000 ) @delay(@updateMigration, 5000)
) )
App.Config.set( 'import/zendesk', Index, 'Routes' ) App.Config.set('import/zendesk', Index, 'Routes')
App.Config.set( 'zendesk', { App.Config.set('zendesk', {
title: 'Zendesk' title: 'Zendesk'
name: 'Zendesk' name: 'Zendesk'
class: 'js-zendesk' class: 'js-zendesk'
url: '#import/zendesk' url: '#import/zendesk'
}, 'ImportPlugins' ) }, 'ImportPlugins')