{% extends 'base.html.twig' %}
{% block title %}{{ "login.title"|trans }}{% endblock %}
{% block body %}
<div class="container">
<div class="row">
<div class="col-sm-9 col-md-7 col-lg-5 mx-auto">
<div class="card card-signin my-5">
<div class="card-body">
<h5 class="card-title text-center">{{ "login.title"|trans }}</h5>
<form class="form-signin" method="post">
{% if error %}
<div class="alert alert-danger">{{ error.messageKey|trans(error.messageData, 'security') }}</div>
{% endif %}
<div class="form-label-group">
<input type="email" id="inputEmail" class="form-control" placeholder="{{ "login.email"|trans }}"
value="{{ last_username }}" name="email" required autofocus>
<label for="inputEmail">{{ "login.email"|trans }}</label>
</div>
<div class="form-label-group">
<input type="password" id="inputPassword" class="form-control" placeholder="{{ "login.password"|trans }}"
name="password" required>
<label for="inputPassword">{{ "login.password"|trans }}</label>
</div>
<div class="form-label-group align-items-start">
<input type="checkbox" id="_remember_me" name="_remember_me" checked class="form-control"/>
<label for="_remember_me">{{ "login.rememberme"|trans }}</label>
</div>
<input type="hidden" name="_csrf_token" value="{{ csrf_token('authenticate') }}">
<button class="btn btn-lg btn-primary btn-block text-uppercase" type="submit">
{{ "login.title"|trans }}
</button>
</form>
</div>
</div>
</div>
</div>
</div>
{% endblock %}
{% block stylesheets %}
<style>
:root {
--input-padding-x: 1.5rem;
--input-padding-y: .75rem;
}
body {
background: #f4f6f9;
}
.card-signin {
border: 0;
border-radius: 1rem;
box-shadow: 0 0.5rem 1rem 0 rgba(0, 0, 0, 0.1);
}
.card-signin .card-title {
margin-bottom: 2rem;
font-weight: 300;
font-size: 1.5rem;
}
.card-signin .card-body {
padding: 2rem;
}
.form-signin {
width: 100%;
}
.form-signin .btn {
font-size: 80%;
border-radius: 5rem;
letter-spacing: .1rem;
font-weight: bold;
padding: 1rem;
transition: all 0.2s;
}
.form-label-group {
position: relative;
margin-bottom: 1rem;
}
.form-label-group input {
height: auto;
border-radius: 2rem;
}
.form-label-group > input,
.form-label-group > label {
padding: var(--input-padding-y) var(--input-padding-x);
}
.form-label-group > label {
position: absolute;
top: 0;
left: 0;
display: block;
width: 100%;
margin-bottom: 0;
/* Override default `<label>` margin */
line-height: 1.5;
color: #495057;
border: 1px solid transparent;
border-radius: .25rem;
transition: all .1s ease-in-out;
}
.form-label-group input::-webkit-input-placeholder {
color: transparent;
}
.form-label-group input:-ms-input-placeholder {
color: transparent;
}
.form-label-group input::-ms-input-placeholder {
color: transparent;
}
.form-label-group input::-moz-placeholder {
color: transparent;
}
.form-label-group input::placeholder {
color: transparent;
}
.form-label-group input:not(:placeholder-shown) {
padding-top: calc(var(--input-padding-y) + var(--input-padding-y) * (2 / 3));
padding-bottom: calc(var(--input-padding-y) / 3);
}
.form-label-group input:not(:placeholder-shown) ~ label {
padding-top: calc(var(--input-padding-y) / 3);
padding-bottom: calc(var(--input-padding-y) / 3);
font-size: 12px;
color: #777;
}
.btn-google {
color: white;
background-color: #ea4335;
}
.btn-facebook {
color: white;
background-color: #3b5998;
}
/* Fallback for Edge
-------------------------------------------------- */
@supports (-ms-ime-align: auto) {
.form-label-group > label {
display: none;
}
.form-label-group input::-ms-input-placeholder {
color: #777;
}
}
/* Fallback for IE
-------------------------------------------------- */
@media all and (-ms-high-contrast: none),
(-ms-high-contrast: active) {
.form-label-group > label {
display: none;
}
.form-label-group input:-ms-input-placeholder {
color: #777;
}
}
</style>
{% endblock %}