2016-10-27 16:02:41 +00:00
|
|
|
<template>
|
2019-07-05 07:17:44 +00:00
|
|
|
<div class="login panel panel-default">
|
|
|
|
<!-- Default panel contents -->
|
2018-11-07 15:56:12 +00:00
|
|
|
|
2019-07-05 07:17:44 +00:00
|
|
|
<div class="panel-heading">
|
|
|
|
{{ $t('login.login') }}
|
|
|
|
</div>
|
2019-06-12 20:16:55 +00:00
|
|
|
|
2019-07-05 07:17:44 +00:00
|
|
|
<div class="panel-body">
|
|
|
|
<form
|
|
|
|
class="login-form"
|
|
|
|
@submit.prevent="submit"
|
|
|
|
>
|
|
|
|
<template v-if="isPasswordAuth">
|
|
|
|
<div class="form-group">
|
|
|
|
<label for="username">{{ $t('login.username') }}</label>
|
|
|
|
<input
|
|
|
|
id="username"
|
|
|
|
v-model="user.username"
|
|
|
|
:disabled="loggingIn"
|
|
|
|
class="form-control"
|
|
|
|
:placeholder="$t('login.placeholder')"
|
|
|
|
>
|
2018-11-06 20:48:05 +00:00
|
|
|
</div>
|
2019-07-05 07:17:44 +00:00
|
|
|
<div class="form-group">
|
|
|
|
<label for="password">{{ $t('login.password') }}</label>
|
|
|
|
<input
|
|
|
|
id="password"
|
|
|
|
ref="passwordInput"
|
|
|
|
v-model="user.password"
|
|
|
|
:disabled="loggingIn"
|
|
|
|
class="form-control"
|
|
|
|
type="password"
|
|
|
|
>
|
|
|
|
</div>
|
2019-09-05 11:23:28 +00:00
|
|
|
<div class="form-group">
|
|
|
|
<router-link :to="{name: 'password-reset'}">
|
|
|
|
{{ $t('password_reset.forgot_password') }}
|
|
|
|
</router-link>
|
|
|
|
</div>
|
2019-07-05 07:17:44 +00:00
|
|
|
</template>
|
|
|
|
|
|
|
|
<div
|
|
|
|
v-if="isTokenAuth"
|
|
|
|
class="form-group"
|
|
|
|
>
|
|
|
|
<p>{{ $t('login.description') }}</p>
|
2019-01-28 15:43:51 +00:00
|
|
|
</div>
|
2019-06-12 20:16:55 +00:00
|
|
|
|
2019-07-05 07:17:44 +00:00
|
|
|
<div class="form-group">
|
|
|
|
<div class="login-bottom">
|
|
|
|
<div>
|
|
|
|
<router-link
|
|
|
|
v-if="registrationOpen"
|
|
|
|
:to="{name: 'registration'}"
|
|
|
|
class="register"
|
|
|
|
>
|
|
|
|
{{ $t('login.register') }}
|
|
|
|
</router-link>
|
|
|
|
</div>
|
|
|
|
<button
|
|
|
|
:disabled="loggingIn"
|
|
|
|
type="submit"
|
|
|
|
class="btn btn-default"
|
|
|
|
>
|
|
|
|
{{ $t('login.login') }}
|
|
|
|
</button>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</form>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div
|
|
|
|
v-if="error"
|
|
|
|
class="form-group"
|
|
|
|
>
|
|
|
|
<div class="alert error">
|
|
|
|
{{ error }}
|
|
|
|
<i
|
2020-10-20 18:18:23 +00:00
|
|
|
class="button-icon" icon="times"
|
2019-07-05 07:17:44 +00:00
|
|
|
@click="clearError"
|
|
|
|
/>
|
|
|
|
</div>
|
2016-10-27 16:02:41 +00:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<script src="./login_form.js" ></script>
|
2017-02-24 15:32:41 +00:00
|
|
|
|
|
|
|
<style lang="scss">
|
2018-04-01 02:28:20 +00:00
|
|
|
@import '../../_variables.scss';
|
2017-02-24 15:32:41 +00:00
|
|
|
|
|
|
|
.login-form {
|
2019-05-13 18:54:25 +00:00
|
|
|
display: flex;
|
|
|
|
flex-direction: column;
|
|
|
|
padding: 0.6em;
|
|
|
|
|
2018-08-20 18:06:29 +00:00
|
|
|
.btn {
|
|
|
|
min-height: 28px;
|
|
|
|
width: 10em;
|
|
|
|
}
|
|
|
|
|
2018-04-07 16:30:27 +00:00
|
|
|
.register {
|
|
|
|
flex: 1 1;
|
|
|
|
}
|
2017-04-21 15:52:42 +00:00
|
|
|
|
2018-04-07 16:30:27 +00:00
|
|
|
.login-bottom {
|
|
|
|
margin-top: 1.0em;
|
|
|
|
display: flex;
|
|
|
|
flex-direction: row;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: space-between;
|
|
|
|
}
|
2019-01-28 15:43:51 +00:00
|
|
|
|
2019-05-13 18:54:25 +00:00
|
|
|
.form-group {
|
|
|
|
display: flex;
|
|
|
|
flex-direction: column;
|
|
|
|
padding: 0.3em 0.5em 0.6em;
|
|
|
|
line-height:24px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.form-bottom {
|
|
|
|
display: flex;
|
|
|
|
padding: 0.5em;
|
|
|
|
height: 32px;
|
|
|
|
|
|
|
|
button {
|
|
|
|
width: 10em;
|
|
|
|
}
|
|
|
|
|
|
|
|
p {
|
|
|
|
margin: 0.35em;
|
|
|
|
padding: 0.35em;
|
|
|
|
display: flex;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-01-28 15:43:51 +00:00
|
|
|
.error {
|
|
|
|
text-align: center;
|
|
|
|
|
|
|
|
animation-name: shakeError;
|
|
|
|
animation-duration: 0.4s;
|
|
|
|
animation-timing-function: ease-in-out;
|
|
|
|
}
|
|
|
|
}
|
2017-02-24 15:32:41 +00:00
|
|
|
</style>
|