feat: move title and api config to no auth wrapper
continuous-integration/drone/pr Build is failing
Details
continuous-integration/drone/pr Build is failing
Details
This commit is contained in:
parent
babfd24739
commit
1c339a7fe0
|
@ -23,7 +23,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="api-url-info" v-else>
|
<div class="api-url-info" v-else>
|
||||||
<i18n-t keypath="apiConfig.signInOn">
|
<i18n-t keypath="apiConfig.use">
|
||||||
<span class="url" v-tooltip="apiUrl"> {{ apiDomain }} </span>
|
<span class="url" v-tooltip="apiUrl"> {{ apiDomain }} </span>
|
||||||
</i18n-t>
|
</i18n-t>
|
||||||
<br/>
|
<br/>
|
||||||
|
|
|
@ -6,12 +6,16 @@
|
||||||
<Message v-if="motd !== ''">
|
<Message v-if="motd !== ''">
|
||||||
{{ motd }}
|
{{ motd }}
|
||||||
</Message>
|
</Message>
|
||||||
<h2 class="title">
|
<h2 class="image-title">
|
||||||
{{ $t('misc.welcomeBack') }}
|
{{ $t('misc.welcomeBack') }}
|
||||||
</h2>
|
</h2>
|
||||||
</section>
|
</section>
|
||||||
<section class="content">
|
<section class="content">
|
||||||
<slot/>
|
<div>
|
||||||
|
<h2 class="title" v-if="title">{{ title }}</h2>
|
||||||
|
<api-config @foundApi="hasApiUrl = true"/>
|
||||||
|
<slot/>
|
||||||
|
</div>
|
||||||
<legal/>
|
<legal/>
|
||||||
</section>
|
</section>
|
||||||
</div>
|
</div>
|
||||||
|
@ -22,11 +26,21 @@
|
||||||
import Logo from '@/components/home/Logo'
|
import Logo from '@/components/home/Logo'
|
||||||
import Message from '@/components/misc/message'
|
import Message from '@/components/misc/message'
|
||||||
import Legal from '@/components/misc/legal'
|
import Legal from '@/components/misc/legal'
|
||||||
|
import ApiConfig from '@/components/misc/api-config.vue'
|
||||||
import {useStore} from 'vuex'
|
import {useStore} from 'vuex'
|
||||||
import {computed} from 'vue'
|
import {computed} from 'vue'
|
||||||
|
import {useRoute} from 'vue-router'
|
||||||
|
import {useI18n} from 'vue-i18n'
|
||||||
|
import {useTitle} from '@/composables/useTitle'
|
||||||
|
|
||||||
|
const route = useRoute()
|
||||||
const store = useStore()
|
const store = useStore()
|
||||||
|
const {t} = useI18n()
|
||||||
|
|
||||||
const motd = computed(() => store.state.config.motd)
|
const motd = computed(() => store.state.config.motd)
|
||||||
|
// @ts-ignore
|
||||||
|
const title = computed(() => t(route.meta.title ?? ''))
|
||||||
|
useTitle(() => title.value)
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
@ -109,7 +123,7 @@ const motd = computed(() => store.state.config.motd)
|
||||||
margin: 1rem 0;
|
margin: 1rem 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.title {
|
.image-title {
|
||||||
color: var(--white);
|
color: var(--white);
|
||||||
font-size: 2.5rem;
|
font-size: 2.5rem;
|
||||||
}
|
}
|
||||||
|
|
|
@ -813,7 +813,7 @@
|
||||||
"url": "Vikunja URL",
|
"url": "Vikunja URL",
|
||||||
"urlPlaceholder": "eg. https://localhost:3456",
|
"urlPlaceholder": "eg. https://localhost:3456",
|
||||||
"change": "change",
|
"change": "change",
|
||||||
"signInOn": "Sign in to your Vikunja account on {0}",
|
"use": "Using Vikunja installation on {0}",
|
||||||
"error": "Could not find or use Vikunja installation at \"{domain}\". Please try a different url.",
|
"error": "Could not find or use Vikunja installation at \"{domain}\". Please try a different url.",
|
||||||
"success": "Using Vikunja installation at \"{domain}\".",
|
"success": "Using Vikunja installation at \"{domain}\".",
|
||||||
"urlRequired": "A url is required."
|
"urlRequired": "A url is required."
|
||||||
|
|
|
@ -105,21 +105,33 @@ const router = createRouter({
|
||||||
path: '/login',
|
path: '/login',
|
||||||
name: 'user.login',
|
name: 'user.login',
|
||||||
component: LoginComponent,
|
component: LoginComponent,
|
||||||
|
meta: {
|
||||||
|
title: 'user.auth.login',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: '/get-password-reset',
|
path: '/get-password-reset',
|
||||||
name: 'user.password-reset.request',
|
name: 'user.password-reset.request',
|
||||||
component: GetPasswordResetComponent,
|
component: GetPasswordResetComponent,
|
||||||
|
meta: {
|
||||||
|
title: 'user.auth.resetPassword',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: '/password-reset',
|
path: '/password-reset',
|
||||||
name: 'user.password-reset.reset',
|
name: 'user.password-reset.reset',
|
||||||
component: PasswordResetComponent,
|
component: PasswordResetComponent,
|
||||||
|
meta: {
|
||||||
|
title: 'user.auth.resetPassword',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: '/register',
|
path: '/register',
|
||||||
name: 'user.register',
|
name: 'user.register',
|
||||||
component: RegisterComponent,
|
component: RegisterComponent,
|
||||||
|
meta: {
|
||||||
|
title: 'user.auth.register',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: '/user/settings',
|
path: '/user/settings',
|
||||||
|
|
|
@ -1,14 +1,12 @@
|
||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<h2 class="title">Login</h2>
|
|
||||||
<api-config @foundApi="hasApiUrl = true"/>
|
|
||||||
<message variant="success" class="has-text-centered" v-if="confirmedEmailSuccess">
|
<message variant="success" class="has-text-centered" v-if="confirmedEmailSuccess">
|
||||||
{{ $t('user.auth.confirmEmailSuccess') }}
|
{{ $t('user.auth.confirmEmailSuccess') }}
|
||||||
</message>
|
</message>
|
||||||
<message variant="danger" v-if="errorMessage">
|
<message variant="danger" v-if="errorMessage">
|
||||||
{{ errorMessage }}
|
{{ errorMessage }}
|
||||||
</message>
|
</message>
|
||||||
<form @submit.prevent="submit" id="loginform" v-if="hasApiUrl && localAuthEnabled">
|
<form @submit.prevent="submit" id="loginform" v-if="localAuthEnabled">
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label class="label" for="username">{{ $t('user.auth.usernameEmail') }}</label>
|
<label class="label" for="username">{{ $t('user.auth.usernameEmail') }}</label>
|
||||||
<div class="control">
|
<div class="control">
|
||||||
|
@ -103,7 +101,6 @@ import {mapState} from 'vuex'
|
||||||
|
|
||||||
import {HTTPFactory} from '@/http-common'
|
import {HTTPFactory} from '@/http-common'
|
||||||
import {LOADING} from '@/store/mutation-types'
|
import {LOADING} from '@/store/mutation-types'
|
||||||
import ApiConfig from '@/components/misc/api-config.vue'
|
|
||||||
import {getErrorText} from '@/message'
|
import {getErrorText} from '@/message'
|
||||||
import Message from '@/components/misc/message'
|
import Message from '@/components/misc/message'
|
||||||
import {redirectToProvider} from '../../helpers/redirectToProvider'
|
import {redirectToProvider} from '../../helpers/redirectToProvider'
|
||||||
|
@ -112,12 +109,10 @@ import {getLastVisited, clearLastVisited} from '../../helpers/saveLastVisited'
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
Message,
|
Message,
|
||||||
ApiConfig,
|
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
confirmedEmailSuccess: false,
|
confirmedEmailSuccess: false,
|
||||||
hasApiUrl: false,
|
|
||||||
errorMessage: '',
|
errorMessage: '',
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -155,13 +150,11 @@ export default {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
this.hasApiUrl = window.API_URL !== ''
|
|
||||||
this.setTitle(this.$t('user.auth.login'))
|
this.setTitle(this.$t('user.auth.login'))
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
hasOpenIdProviders() {
|
hasOpenIdProviders() {
|
||||||
return this.hasApiUrl &&
|
return this.openidConnect.enabled &&
|
||||||
this.openidConnect.enabled &&
|
|
||||||
this.openidConnect.providers &&
|
this.openidConnect.providers &&
|
||||||
this.openidConnect.providers.length > 0
|
this.openidConnect.providers.length > 0
|
||||||
},
|
},
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<h2 class="title">{{ $t('user.auth.resetPassword') }}</h2>
|
|
||||||
<message v-if="errorMsg">
|
<message v-if="errorMsg">
|
||||||
{{ errorMsg }}
|
{{ errorMsg }}
|
||||||
</message>
|
</message>
|
||||||
|
@ -65,11 +64,9 @@ import {useI18n} from 'vue-i18n'
|
||||||
|
|
||||||
import PasswordResetModel from '@/models/passwordReset'
|
import PasswordResetModel from '@/models/passwordReset'
|
||||||
import PasswordResetService from '@/services/passwordReset'
|
import PasswordResetService from '@/services/passwordReset'
|
||||||
import {useTitle} from '@/composables/useTitle'
|
|
||||||
import Message from '@/components/misc/message'
|
import Message from '@/components/misc/message'
|
||||||
|
|
||||||
const {t} = useI18n()
|
const {t} = useI18n()
|
||||||
useTitle(() => t('user.auth.resetPassword'))
|
|
||||||
|
|
||||||
const credentials = reactive({
|
const credentials = reactive({
|
||||||
password: '',
|
password: '',
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<h2 class="title">{{ $t('user.auth.register') }}</h2>
|
<message variant="danger" v-if="errorMessage !== ''">
|
||||||
|
{{ errorMessage }}
|
||||||
|
</message>
|
||||||
<form @submit.prevent="submit" id="registerform">
|
<form @submit.prevent="submit" id="registerform">
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label class="label" for="username">{{ $t('user.auth.username') }}</label>
|
<label class="label" for="username">{{ $t('user.auth.username') }}</label>
|
||||||
|
@ -82,12 +84,6 @@
|
||||||
</x-button>
|
</x-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<message v-if="loading">
|
|
||||||
{{ $t('misc.loading') }}
|
|
||||||
</message>
|
|
||||||
<message variant="danger" v-if="errorMessage !== ''">
|
|
||||||
{{ errorMessage }}
|
|
||||||
</message>
|
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
@ -98,7 +94,6 @@ import {useI18n} from 'vue-i18n'
|
||||||
|
|
||||||
import router from '@/router'
|
import router from '@/router'
|
||||||
import {store} from '@/store'
|
import {store} from '@/store'
|
||||||
import {useTitle} from '@/composables/useTitle'
|
|
||||||
import Message from '@/components/misc/message'
|
import Message from '@/components/misc/message'
|
||||||
|
|
||||||
// FIXME: use the `beforeEnter` hook of vue-router
|
// FIXME: use the `beforeEnter` hook of vue-router
|
||||||
|
@ -110,7 +105,6 @@ onBeforeMount(() => {
|
||||||
})
|
})
|
||||||
|
|
||||||
const {t} = useI18n()
|
const {t} = useI18n()
|
||||||
useTitle(() => t('user.auth.register'))
|
|
||||||
|
|
||||||
const credentials = reactive({
|
const credentials = reactive({
|
||||||
username: '',
|
username: '',
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<h2 class="title">{{ $t('user.auth.resetPassword') }}</h2>
|
|
||||||
<message variant="danger" v-if="errorMsg">
|
<message variant="danger" v-if="errorMsg">
|
||||||
{{ errorMsg }}
|
{{ errorMsg }}
|
||||||
</message>
|
</message>
|
||||||
|
@ -51,11 +50,9 @@ import {useI18n} from 'vue-i18n'
|
||||||
|
|
||||||
import PasswordResetModel from '@/models/passwordReset'
|
import PasswordResetModel from '@/models/passwordReset'
|
||||||
import PasswordResetService from '@/services/passwordReset'
|
import PasswordResetService from '@/services/passwordReset'
|
||||||
import {useTitle} from '@/composables/useTitle'
|
|
||||||
import Message from '@/components/misc/message'
|
import Message from '@/components/misc/message'
|
||||||
|
|
||||||
const {t} = useI18n()
|
const {t} = useI18n()
|
||||||
useTitle(() => t('user.auth.resetPassword'))
|
|
||||||
|
|
||||||
// Not sure if this instance needs a shalloRef at all
|
// Not sure if this instance needs a shalloRef at all
|
||||||
const passwordResetService = reactive(new PasswordResetService())
|
const passwordResetService = reactive(new PasswordResetService())
|
||||||
|
|
Reference in New Issue