mirror of
https://github.com/YunoHost/yunohost-admin.git
synced 2024-09-03 20:06:15 +02:00
Merge pull request #471 from YunoHost/fix-login
login: add card-form with admin username input to login
This commit is contained in:
commit
0c4e536fd9
3 changed files with 58 additions and 33 deletions
|
@ -551,7 +551,7 @@
|
|||
"none": "None",
|
||||
"separator": ", "
|
||||
},
|
||||
"wrong_password": "Wrong password",
|
||||
"wrong_password_or_username": "Wrong password or username",
|
||||
"yes": "Yes",
|
||||
"yunohost_admin": "YunoHost Admin",
|
||||
"certificate_manage": "Manage SSL certificate",
|
||||
|
|
|
@ -142,8 +142,8 @@ export default {
|
|||
})
|
||||
},
|
||||
|
||||
'LOGIN' ({ dispatch }, password) {
|
||||
return api.post('login', { credentials: password }, null, { websocket: false }).then(() => {
|
||||
'LOGIN' ({ dispatch }, credentials) {
|
||||
return api.post('login', { credentials }, null, { websocket: false }).then(() => {
|
||||
dispatch('CONNECT')
|
||||
})
|
||||
},
|
||||
|
|
|
@ -1,37 +1,35 @@
|
|||
<template>
|
||||
<b-form @submit.prevent="login">
|
||||
<b-input-group>
|
||||
<template v-slot:prepend>
|
||||
<b-input-group-text>
|
||||
<label class="sr-only" for="input-password">{{ $t('password') }}</label>
|
||||
<icon iname="lock" class="sm" />
|
||||
</b-input-group-text>
|
||||
</template>
|
||||
<card-form
|
||||
:title="$t('login')" icon="lock"
|
||||
:validation="$v" :server-error="serverError"
|
||||
@submit.prevent="login"
|
||||
>
|
||||
<!-- ADMIN USERNAME -->
|
||||
<form-field v-bind="fields.username" v-model="form.username" :validation="$v.form.username" />
|
||||
|
||||
<b-form-input
|
||||
id="input-password"
|
||||
required type="password"
|
||||
v-model="password"
|
||||
:placeholder="$t('administration_password')" :state="isValid"
|
||||
/>
|
||||
<!-- ADMIN PASSWORD -->
|
||||
<form-field v-bind="fields.password" v-model="form.password" :validation="$v.form.password" />
|
||||
|
||||
<template v-slot:append>
|
||||
<b-button type="submit" variant="success" :disabled="disabled">
|
||||
{{ $t('login') }}
|
||||
</b-button>
|
||||
</template>
|
||||
</b-input-group>
|
||||
|
||||
<b-form-invalid-feedback :state="isValid">
|
||||
{{ $t('wrong_password') }}
|
||||
</b-form-invalid-feedback>
|
||||
</b-form>
|
||||
<template #buttons>
|
||||
<b-button
|
||||
type="submit" variant="success"
|
||||
:disabled="disabled" form="ynh-form"
|
||||
>
|
||||
{{ $t('login') }}
|
||||
</b-button>
|
||||
</template>
|
||||
</card-form>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { validationMixin } from 'vuelidate'
|
||||
import { alphalownum_, required, minLength } from '@/helpers/validators'
|
||||
|
||||
export default {
|
||||
name: 'Login',
|
||||
|
||||
mixins: [validationMixin],
|
||||
|
||||
props: {
|
||||
skipInstallCheck: { type: Boolean, default: false },
|
||||
forceReload: { type: Boolean, default: false }
|
||||
|
@ -40,15 +38,42 @@ export default {
|
|||
data () {
|
||||
return {
|
||||
disabled: !this.skipInstallCheck,
|
||||
password: '',
|
||||
isValid: null,
|
||||
apiError: undefined
|
||||
serverError: '',
|
||||
form: {
|
||||
username: '',
|
||||
password: ''
|
||||
},
|
||||
fields: {
|
||||
username: {
|
||||
label: this.$i18n.t('user_username'),
|
||||
props: {
|
||||
id: 'username'
|
||||
}
|
||||
},
|
||||
password: {
|
||||
label: this.$i18n.t('password'),
|
||||
props: {
|
||||
id: 'password',
|
||||
type: 'password'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
validations () {
|
||||
return {
|
||||
form: {
|
||||
username: { required, alphalownum_ },
|
||||
password: { required, passwordLenght: minLength(8) }
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
methods: {
|
||||
login () {
|
||||
this.$store.dispatch('LOGIN', this.password).then(() => {
|
||||
const credentials = [this.form.username, this.form.password].join(':')
|
||||
this.$store.dispatch('LOGIN', credentials).then(() => {
|
||||
if (this.forceReload) {
|
||||
window.location.href = '/yunohost/admin/'
|
||||
} else {
|
||||
|
@ -56,7 +81,7 @@ export default {
|
|||
}
|
||||
}).catch(err => {
|
||||
if (err.name !== 'APIUnauthorizedError') throw err
|
||||
this.isValid = false
|
||||
this.serverError = this.$i18n.t('wrong_password_or_username')
|
||||
})
|
||||
}
|
||||
},
|
||||
|
|
Loading…
Reference in a new issue