From 2818930089fc8a86023aa67c5dedb1821cc7fcfb Mon Sep 17 00:00:00 2001 From: les Date: Sat, 14 Mar 2020 18:45:20 +0100 Subject: [PATCH] test with trusted instances --- components/Nav.vue | 34 ++++++++++++++++++++++++++++++- components/admin/Federation.vue | 24 +++++++++++++++++++++- server/api/controller/settings.js | 9 ++------ 3 files changed, 58 insertions(+), 9 deletions(-) diff --git a/components/Nav.vue b/components/Nav.vue index 7cb8ce4e..61a8314d 100644 --- a/components/Nav.vue +++ b/components/Nav.vue @@ -15,6 +15,15 @@ i.el-icon-share span.hidden-xs-only {{$t('common.share')}} + el-submenu(v-if='settings.trusted_instances && settings.trusted_instances.length' index=4) + template(slot='title') + i.el-icon-guide + span.hidden-xs-only {{$t('common.places')}} + el-menu-item(v-for='instance in settings.trusted_instances' :key='instance.name') + a(:href='instance.url' target='_link') + img(:src='`${instance.url}/favicon.ico`') + span.ml-1 {{instance.name}} + el-menu-item(v-if='!$auth.loggedIn' index='/login') i.el-icon-user span.hidden-xs-only {{$t('common.login')}} @@ -56,7 +65,30 @@ export default { logout () { Message({ showClose: true, message: this.$t('common.logout_ok'), type: 'success' }) this.$auth.logout() - } + }, + async createTrustedInstance () { + let url = this.instance_url + if (!url.match(/^https?:\/\//)) { + url = `https://${url}` + } + try { + const instance = await this.$axios.$get(`${url}/.well-known/nodeinfo/2.0`) + const trusted_instance = { + url, + name: instance.metadata.nodeName, + description: instance.metadata.nodeDescription, + place: instance.metadata.placeDescription + } + this.setSetting({ key: 'trusted_instances', value: this.settings.trusted_instances.concat(trusted_instance) }) + } catch (e) { + console.error(e) + Message({ + showClose: true, + type: 'error', + message: e + }) + } + }, } } diff --git a/components/admin/Federation.vue b/components/admin/Federation.vue index f701c6a9..530ec724 100644 --- a/components/admin/Federation.vue +++ b/components/admin/Federation.vue @@ -12,15 +12,37 @@ small.text-secondary {{$t('admin.hide_boost_bookmark_help')}} div.mt-4 {{$t('admin.instance_name')}} - el-input.w-25(v-model='instance_name' placeholder='Instance name') + el-input(v-model='instance_name' placeholder='Instance name') small.d-block.text-secondary {{$t('admin.instance_name_help')}} (@{{instance_name}}@{{settings.baseurl|url2host}}) + div.mt-4 {{$t('admin.trusted_instances')}} + el-input(v-model='instance_url') + el-button(slot='append' @click='createTrustedInstance') {{$t('common.send')}} + + el-table(:data='settings.trusted_instances') + el-table-column(:label="$t('common.name')") + template(slot-scope='data') + span {{data.row.name}} + el-table-column(:label="$t('common.url')") + template(slot-scope='data') + span {{data.row.url}} + el-table-column(:label="$t('common.action')") + template(slot-scope='data') + el-button(size='mini' + type='danger' + @click='delete_instance(data.row)') {{$t('admin.delete_user')}} +