<!DOCTYPE html>
<html lang="en">
<!--
  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.
-->
    <head>
        <meta charset="utf-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <meta name="viewport" content="width=device-width, initial-scale=1" />
        <title>Login to Apache Sling</title>
        <link href="../../../content/starter/css/bundle.css" rel="stylesheet" />
    </head>
    <body>
        <div class="Grid Fit-Medium Home-Grid">
            <div class="Gradient"></div>
            <header class="Cell Medium-35 Large-25 Align-Center Logos">
                <a href="http://sling.apache.org" target="_blank" rel="noopener" id="sling-logo" title="Visit the Apache Sling website">
                    <img src="../../../content/starter/img/sling-logo.svg" alt="Apache Sling Logo"/>
                </a>
                <a href="http://apache.org" target="_blank" rel="noopener" id="asf-logo" title="Visit the Apache Software Foundation website">
                    <img src="../../../content/starter/img/asf-logo.svg" alt="Apache Software Foundation Logo"/>
                </a>
            </header>
            <div class="Cell Align-Center Main-Content">
                <div class="Grid">
                    <section class="Cell Medium-35">
                    	<h3>Login:</h3>
						<form id="loginform" method="POST" action="${contextPath}/j_security_check" enctype="multipart/form-data" accept-charset="UTF-8">
							<input type="hidden" name="_charset_" value="UTF-8" />
							<input type="hidden" name="resource" value="${resource}" />
							<div id="error">
								<p>${j_reason}</p>
							</div>
							<div>
								<label for="j_username" >Username:</label>
							</div>
							<div>
								<input id="j_username" name="j_username" type="text" />
							</div>
							<div>
								<label for="j_password" accesskey="p">Password:</label>
							</div>
							<div>
								<input id="j_password" name="j_password" type="password" />
							</div>
							<div class="buttongroup">
								<button id="login" class="form-button" type="submit">Login</button>
							</div>
						</form>
                    </section>
                    <div class="Cell Medium-65">
                    </div>
                </div>
            </div>
        </div>
    </body>
</html>
