Newer
Older
medialib-manager / templates / login.html
{% include "partials/auth-head.html" %}

<div class="auth-page">
    <div class="auth-card">
        <div class="auth-logo-space">
            <img src="/static/images/logo mctl full original.webp" alt="mctl" class="auth-logo">
        </div>
        <div id="auth-error" class="auth-error" style="display:none"></div>
        <form id="login-form" autocomplete="off">
            <div class="auth-field">
                <label for="username">username</label>
                <input type="text" id="username" name="username" class="auth-input" autocomplete="username" autofocus>
            </div>
            <div class="auth-field">
                <label for="password">password</label>
                <div class="auth-input-wrap">
                    <input type="password" id="password" name="password" class="auth-input" autocomplete="current-password">
                    <button type="button" class="auth-eye-btn" id="toggle-password" tabindex="-1">
                        <i class="bi bi-eye" id="eye-icon"></i>
                    </button>
                </div>
            </div>
            <button type="submit" class="auth-btn" id="login-btn">login</button>
        </form>
    </div>
</div>

<script>
$(document).ready(function () {
    $("#toggle-password").on("click", function () {
        const input = $("#password");
        const icon = $("#eye-icon");
        if (input.attr("type") === "password") {
            input.attr("type", "text");
            icon.removeClass("bi-eye").addClass("bi-eye-slash");
        } else {
            input.attr("type", "password");
            icon.removeClass("bi-eye-slash").addClass("bi-eye");
        }
    });

    $("#login-form").on("submit", function (e) {
        e.preventDefault();
        const btn = $("#login-btn");
        btn.prop("disabled", true).text("...");
        $("#auth-error").hide();
        $.ajax({
            url: "/login",
            method: "POST",
            contentType: "application/json",
            data: JSON.stringify({
                username: $("#username").val().trim(),
                password: $("#password").val()
            }),
            success: function () {
                window.location.href = "/";
            },
            error: function (xhr) {
                const msg = xhr.responseJSON && xhr.responseJSON.error ? xhr.responseJSON.error : "Login failed";
                $("#auth-error").text(msg).show();
                btn.prop("disabled", false).text("login");
            }
        });
    });
});
</script>
</body>
</html>