2019-06-02 12:54:31 +02:00
|
|
|
<div class="wizard-api-header page">
|
2019-06-03 04:49:54 +02:00
|
|
|
<div class='buttons'>
|
|
|
|
{{#if updating}}
|
|
|
|
{{loading-spinner size="small"}}
|
|
|
|
{{else}}
|
|
|
|
{{#if responseIcon}}
|
|
|
|
{{d-icon responseIcon}}
|
|
|
|
{{/if}}
|
|
|
|
{{/if}}
|
|
|
|
|
2019-06-12 22:57:38 +02:00
|
|
|
{{d-button label="admin.wizard.api.save" action=(action "save") class="btn-primary" disabled=saveDisabled}}
|
2019-06-03 04:49:54 +02:00
|
|
|
|
|
|
|
{{#if showRemove}}
|
2019-06-12 22:57:38 +02:00
|
|
|
{{d-button action=(action "remove") label="admin.wizard.api.remove"}}
|
2019-06-03 04:49:54 +02:00
|
|
|
{{/if}}
|
|
|
|
|
|
|
|
{{#if error}}
|
|
|
|
<div class="error">
|
|
|
|
{{error}}
|
|
|
|
</div>
|
|
|
|
{{/if}}
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="wizard-header">
|
|
|
|
{{#if api.isNew}}
|
|
|
|
{{i18n 'admin.wizard.api.new'}}
|
|
|
|
{{else}}
|
|
|
|
{{api.title}}
|
|
|
|
{{/if}}
|
|
|
|
</div>
|
|
|
|
|
2019-06-02 12:54:31 +02:00
|
|
|
<div class="metadata">
|
|
|
|
<div class="title">
|
|
|
|
<label>{{i18n 'admin.wizard.api.title'}}</label>
|
|
|
|
{{input value=api.title placeholder=(i18n 'admin.wizard.api.title_placeholder')}}
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="name">
|
2019-06-03 04:49:54 +02:00
|
|
|
<label>{{i18n 'admin.wizard.api.name'}}</label>
|
2019-06-02 12:54:31 +02:00
|
|
|
{{#if api.isNew}}
|
|
|
|
{{input value=api.name placeholder=(i18n 'admin.wizard.api.name_placeholder')}}
|
|
|
|
{{else}}
|
|
|
|
{{api.name}}
|
|
|
|
{{/if}}
|
|
|
|
</div>
|
2019-05-31 09:54:11 +02:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
2019-06-02 12:54:31 +02:00
|
|
|
<div class="wizard-api-header">
|
2019-06-03 04:49:54 +02:00
|
|
|
<div class="buttons">
|
2019-06-03 01:40:54 +02:00
|
|
|
{{#if isOauth}}
|
2019-06-07 05:09:31 +02:00
|
|
|
{{#if authorizing}}
|
|
|
|
{{loading-spinner size="small"}}
|
|
|
|
{{else}}
|
|
|
|
{{#if authErrorMessage}}
|
|
|
|
<span>{{authErrorMessage}}</span>
|
|
|
|
{{/if}}
|
|
|
|
{{/if}}
|
2019-06-03 01:40:54 +02:00
|
|
|
{{d-button label="admin.wizard.api.auth.btn"
|
2019-06-12 22:57:38 +02:00
|
|
|
action=(action "authorize")
|
2019-06-03 01:40:54 +02:00
|
|
|
disabled=authDisabled
|
|
|
|
class="btn-primary"}}
|
|
|
|
{{/if}}
|
2019-06-02 12:54:31 +02:00
|
|
|
</div>
|
2019-06-03 04:49:54 +02:00
|
|
|
|
|
|
|
<div class="wizard-header">
|
|
|
|
{{i18n 'admin.wizard.api.auth.label'}}
|
|
|
|
</div>
|
2019-05-31 09:54:11 +02:00
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="wizard-api-authentication">
|
|
|
|
<div class="settings">
|
|
|
|
|
|
|
|
<div class="wizard-header medium">
|
2019-06-02 12:54:31 +02:00
|
|
|
{{i18n 'admin.wizard.api.auth.settings'}}
|
2019-05-31 09:54:11 +02:00
|
|
|
</div>
|
2019-05-30 07:04:34 +02:00
|
|
|
|
2019-06-07 05:09:31 +02:00
|
|
|
{{#if showRedirectUri}}
|
|
|
|
<div class="control-group redirect-uri">
|
|
|
|
<div class="control-label">
|
|
|
|
<label>{{i18n 'admin.wizard.api.auth.redirect_uri'}}</label>
|
|
|
|
<div class="controls">
|
|
|
|
{{api.redirectUri}}
|
2019-06-02 12:54:31 +02:00
|
|
|
</div>
|
|
|
|
</div>
|
2019-06-07 05:09:31 +02:00
|
|
|
</div>
|
2019-06-02 12:54:31 +02:00
|
|
|
{{/if}}
|
2019-05-30 07:04:34 +02:00
|
|
|
|
2019-06-02 12:54:31 +02:00
|
|
|
<div class="control-group auth-type">
|
|
|
|
<label>{{i18n 'admin.wizard.api.auth.type'}}</label>
|
2019-05-30 07:04:34 +02:00
|
|
|
<div class="controls">
|
2020-02-02 11:42:05 +01:00
|
|
|
{{combo-box
|
|
|
|
value=api.authType
|
|
|
|
content=authorizationTypes
|
2020-03-22 07:47:56 +01:00
|
|
|
options=(hash
|
|
|
|
none='admin.wizard.api.auth.type_none'
|
|
|
|
)}}
|
2019-05-30 07:04:34 +02:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
2019-06-03 00:59:35 +02:00
|
|
|
{{#if isOauth}}
|
2019-06-07 05:09:31 +02:00
|
|
|
{{#if threeLeggedOauth}}
|
|
|
|
<div class="control-group">
|
|
|
|
<label>{{i18n 'admin.wizard.api.auth.url'}}</label>
|
|
|
|
<div class="controls">
|
|
|
|
{{input value=api.authUrl}}
|
|
|
|
</div>
|
2019-06-03 00:59:35 +02:00
|
|
|
</div>
|
2019-06-07 05:09:31 +02:00
|
|
|
{{/if}}
|
2019-05-30 07:04:34 +02:00
|
|
|
|
2019-06-03 00:59:35 +02:00
|
|
|
<div class="control-group">
|
|
|
|
<label>{{i18n 'admin.wizard.api.auth.token_url'}}</label>
|
|
|
|
<div class="controls">
|
|
|
|
{{input value=api.tokenUrl}}
|
|
|
|
</div>
|
2019-05-30 07:04:34 +02:00
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="control-group">
|
2019-06-02 12:54:31 +02:00
|
|
|
<label>{{i18n 'admin.wizard.api.auth.client_id'}}</label>
|
2019-05-30 07:04:34 +02:00
|
|
|
<div class="controls">
|
|
|
|
{{input value=api.clientId}}
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="control-group">
|
2019-06-02 12:54:31 +02:00
|
|
|
<label>{{i18n 'admin.wizard.api.auth.client_secret'}}</label>
|
2019-05-30 07:04:34 +02:00
|
|
|
<div class="controls">
|
|
|
|
{{input value=api.clientSecret}}
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="control-group">
|
2019-06-02 12:54:31 +02:00
|
|
|
<label>{{i18n 'admin.wizard.api.auth.params.label'}}</label>
|
2019-05-30 07:04:34 +02:00
|
|
|
<div class="controls">
|
|
|
|
{{#each api.authParams as |param|}}
|
|
|
|
<div class="param">
|
2019-06-02 12:54:31 +02:00
|
|
|
{{input value=param.key placeholder=(i18n 'admin.wizard.api.auth.params.key')}}
|
|
|
|
{{input value=param.value placeholder=(i18n 'admin.wizard.api.auth.params.value')}}
|
2019-06-12 22:57:38 +02:00
|
|
|
{{d-button action=(action "removeParam") actionParam=param icon='times'}}
|
2019-05-30 07:04:34 +02:00
|
|
|
</div>
|
|
|
|
{{/each}}
|
2019-06-12 22:57:38 +02:00
|
|
|
{{d-button label='admin.wizard.api.auth.params.new' icon='plus' action=(action "addParam")}}
|
2019-05-30 07:04:34 +02:00
|
|
|
</div>
|
|
|
|
</div>
|
2019-06-03 01:40:54 +02:00
|
|
|
{{/if}}
|
|
|
|
|
|
|
|
{{#if isBasicAuth}}
|
2019-06-03 00:59:35 +02:00
|
|
|
<div class="control-group">
|
|
|
|
<label>{{i18n 'admin.wizard.api.auth.username'}}</label>
|
|
|
|
<div class="controls">
|
|
|
|
{{input value=api.username}}
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="control-group">
|
|
|
|
<label>{{i18n 'admin.wizard.api.auth.password'}}</label>
|
|
|
|
<div class="controls">
|
|
|
|
{{input value=api.password}}
|
|
|
|
</div>
|
|
|
|
</div>
|
2019-05-30 07:04:34 +02:00
|
|
|
{{/if}}
|
|
|
|
</div>
|
|
|
|
|
2019-06-03 00:59:35 +02:00
|
|
|
{{#if isOauth}}
|
|
|
|
<div class="status">
|
|
|
|
<div class="authorization">
|
|
|
|
{{#if api.authorized}}
|
|
|
|
<span class="authorization-indicator authorized"></span>
|
|
|
|
<span>{{i18n "admin.wizard.api.status.authorized"}}</span>
|
|
|
|
{{else}}
|
|
|
|
<span class="authorization-indicator not-authorized"></span>
|
|
|
|
<span>{{i18n "admin.wizard.api.status.not_authorized"}}</span>
|
|
|
|
{{/if}}
|
|
|
|
</div>
|
2019-06-02 12:54:31 +02:00
|
|
|
|
2019-06-03 00:59:35 +02:00
|
|
|
<div class="wizard-header medium">
|
|
|
|
{{i18n 'admin.wizard.api.status.label'}}
|
|
|
|
</div>
|
2019-06-02 12:54:31 +02:00
|
|
|
|
2019-06-07 05:09:31 +02:00
|
|
|
{{#if threeLeggedOauth}}
|
|
|
|
<div class="control-group">
|
|
|
|
<label>{{i18n 'admin.wizard.api.status.code'}}</label>
|
|
|
|
<div class="controls">
|
|
|
|
{{api.code}}
|
|
|
|
</div>
|
2019-06-03 00:59:35 +02:00
|
|
|
</div>
|
2019-06-07 05:09:31 +02:00
|
|
|
{{/if}}
|
2019-05-30 07:04:34 +02:00
|
|
|
|
2019-06-03 00:59:35 +02:00
|
|
|
<div class="control-group">
|
|
|
|
<label>{{i18n 'admin.wizard.api.status.access_token'}}</label>
|
|
|
|
<div class="controls">
|
|
|
|
{{api.accessToken}}
|
|
|
|
</div>
|
2019-05-30 07:04:34 +02:00
|
|
|
</div>
|
|
|
|
|
2019-06-07 05:09:31 +02:00
|
|
|
{{#if threeLeggedOauth}}
|
|
|
|
<div class="control-group">
|
|
|
|
<label>{{i18n 'admin.wizard.api.status.refresh_token'}}</label>
|
|
|
|
<div class="controls">
|
|
|
|
{{api.refreshToken}}
|
|
|
|
</div>
|
2019-06-03 00:59:35 +02:00
|
|
|
</div>
|
2019-06-07 05:09:31 +02:00
|
|
|
{{/if}}
|
2019-05-30 07:04:34 +02:00
|
|
|
|
2019-06-03 00:59:35 +02:00
|
|
|
<div class="control-group">
|
|
|
|
<label>{{i18n 'admin.wizard.api.status.expires_at'}}</label>
|
|
|
|
<div class="controls">
|
|
|
|
{{api.tokenExpiresAt}}
|
|
|
|
</div>
|
2019-05-30 07:04:34 +02:00
|
|
|
</div>
|
|
|
|
|
2019-06-03 00:59:35 +02:00
|
|
|
<div class="control-group">
|
|
|
|
<label>{{i18n 'admin.wizard.api.status.refresh_at'}}</label>
|
|
|
|
<div class="controls">
|
|
|
|
{{api.tokenRefreshAt}}
|
|
|
|
</div>
|
2019-05-30 07:04:34 +02:00
|
|
|
</div>
|
|
|
|
</div>
|
2019-06-03 00:59:35 +02:00
|
|
|
{{/if}}
|
2019-05-30 07:04:34 +02:00
|
|
|
</div>
|
2019-05-31 09:54:11 +02:00
|
|
|
|
|
|
|
<div class="wizard-header">
|
|
|
|
{{i18n 'admin.wizard.api.endpoint.label'}}
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="wizard-api-endpoints">
|
2019-06-12 22:57:38 +02:00
|
|
|
{{d-button action=(action "addEndpoint") label='admin.wizard.api.endpoint.add' icon='plus'}}
|
2019-05-31 09:54:11 +02:00
|
|
|
|
2019-06-02 12:54:31 +02:00
|
|
|
{{#if api.endpoints}}
|
|
|
|
<div class="endpoint-list">
|
|
|
|
<ul>
|
|
|
|
{{#each api.endpoints as |endpoint|}}
|
|
|
|
<li>
|
|
|
|
<div class="endpoint">
|
2019-06-03 04:49:54 +02:00
|
|
|
<div class="endpoint-">
|
2019-08-13 06:11:46 +02:00
|
|
|
<div class="top">
|
|
|
|
{{input value=endpoint.name
|
|
|
|
placeholder=(i18n 'admin.wizard.api.endpoint.name')}}
|
|
|
|
{{input value=endpoint.url
|
|
|
|
placeholder=(i18n 'admin.wizard.api.endpoint.url')
|
|
|
|
class='endpoint-url'}}
|
|
|
|
{{d-button action=(action "removeEndpoint")
|
|
|
|
actionParam=endpoint
|
|
|
|
icon='times'
|
|
|
|
class='remove-endpoint'}}
|
|
|
|
</div>
|
|
|
|
<div class="bottom">
|
2020-02-02 11:42:05 +01:00
|
|
|
{{combo-box
|
|
|
|
content=endpointMethods
|
|
|
|
value=endpoint.method
|
2020-03-22 07:47:56 +01:00
|
|
|
options=(hash
|
|
|
|
none="admin.wizard.api.endpoint.method"
|
|
|
|
)}}
|
2020-02-02 11:42:05 +01:00
|
|
|
{{combo-box
|
|
|
|
content=contentTypes
|
|
|
|
value=endpoint.content_type
|
2020-03-22 07:47:56 +01:00
|
|
|
options=(hash
|
|
|
|
none="admin.wizard.api.endpoint.content_type"
|
|
|
|
)}}
|
2020-02-02 11:42:05 +01:00
|
|
|
{{multi-select
|
|
|
|
content=successCodes
|
|
|
|
values=endpoint.success_codes
|
2020-03-22 07:47:56 +01:00
|
|
|
options=(hash
|
|
|
|
none="admin.wizard.api.endpoint.success_codes"
|
|
|
|
)}}
|
2019-08-13 06:11:46 +02:00
|
|
|
</div>
|
2019-06-03 04:49:54 +02:00
|
|
|
</div>
|
2019-06-02 12:54:31 +02:00
|
|
|
</div>
|
|
|
|
</li>
|
|
|
|
{{/each}}
|
|
|
|
</ul>
|
|
|
|
</div>
|
|
|
|
{{/if}}
|
2019-05-31 09:54:11 +02:00
|
|
|
</div>
|
2019-06-06 18:10:13 +02:00
|
|
|
|
|
|
|
<div class="wizard-header">
|
|
|
|
{{i18n 'admin.wizard.api.log.label'}}
|
2019-06-12 22:57:38 +02:00
|
|
|
{{d-button action=(action "clearLogs")
|
2019-06-06 18:10:13 +02:00
|
|
|
icon='trash-alt'
|
|
|
|
class='clear-logs'}}
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="wizard-api-log">
|
|
|
|
<div class="log-list">
|
|
|
|
<table class="wizard-api-log-table">
|
|
|
|
<th>Datetime</th>
|
2019-06-16 13:49:51 +02:00
|
|
|
<th>User</th>
|
2019-06-06 18:10:13 +02:00
|
|
|
<th>Status</th>
|
2019-06-16 13:49:51 +02:00
|
|
|
<th>URL</th>
|
2019-06-06 18:10:13 +02:00
|
|
|
<th>Error</th>
|
|
|
|
{{#each api.log as |logentry|}}
|
|
|
|
<tr>
|
|
|
|
<td>{{logentry.time}}</td>
|
2019-06-16 13:49:51 +02:00
|
|
|
<td class="user-image">
|
|
|
|
<div class="user-image-inner">
|
|
|
|
<a href="{{unbound logentry.userpath}}" data-user-card="{{unbound logentry.username}}">{{avatar logentry imageSize="large"}}</a>
|
|
|
|
</div>
|
|
|
|
</td>
|
2019-06-06 18:10:13 +02:00
|
|
|
<td>{{logentry.status}}</td>
|
2019-06-16 13:49:51 +02:00
|
|
|
<td>{{logentry.url}}</td>
|
2019-06-06 18:10:13 +02:00
|
|
|
<td>{{logentry.error}}</td>
|
|
|
|
</tr>
|
|
|
|
{{/each}}
|
|
|
|
</table>
|
|
|
|
</div>
|
|
|
|
</div>
|