<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements.  See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License.  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
{% extends "main.html" %}

{% block container %}
  <section>
  	<h1 align="center"><b>Login to XDATA Online</b></h1>
    <form class="form-signin" id="login_form" method="post" action="{% url 'op_tasks:login' %}">
      {% csrf_token %}
      <h4 class="form-signin-heading">Please sign in</h4>
      <input class="form-control" name="username" value="" placeholder="Username" required autofocus/>
      <input class="form-control" type="password" name="password" value="" placeholder="Password" required/>
      <button class="btn btn-lg btn-primary btn-block" type="submit" value="submit">Sign in</button>
    </form>
    <h4 align="center">
        <a href="{% url 'op_tasks:reset' %}">Forgot password?</a>
    </h4>
  </section>
{% endblock %}