<commit_before><div class="login">
    <form novalidate="novalidate" class="login-form" name="loginForm" data-ng-submit="logIn()">
        <div class="form-error" data-ng-repeat="error in errors track by $index">
            <p>{{ error | translate }}</p>
        </div>

        <label>
            <span class="label-text">{{ "TR__EMAIL_OR_USERNAME" | translate }}</span>
            <input
                data-adh-input-sync=""
                type="text"
                name="nameOrEmail"
                required="required"
                data-ng-model="credentials.nameOrEmail" />
            <span class="input-error" data-ng-show="showError(loginForm, loginForm.nameOrEmail, 'required')">
                {{ "TR__ERROR_REQUIRED_EMAIL_OR_USERNAME" | translate }}
            </span>
        </label>
        <label>
            <span class="label-text">{{ "TR__PASSWORD" | translate }}</span>
            <input
                data-adh-input-sync=""
                type="password"
                name="password"
                required="required"
                data-ng-model="credentials.password" />
            <span class="input-error" data-ng-show="showError(loginForm, loginForm.password, 'required')">
                {{ "TR__ERROR_REQUIRED_PASSWORD" | translate }}
            </span>
        </label>

        <div class="login-info">
            {{ "TR__FORGOTTEN_PASSWORD" | translate }} <a href="/create_password_reset">{{ "TR__RESET" | translate }}</a>.
        </div>

        <input
            type="submit"
            value="{{ 'TR__LOGIN' | translate }}"
            class="button-cta"
            data-ng-disabled="loginForm.$invalid" />

        <div
            data-ng-if="options.POST"
            class="login-info"
            data-adh-html-translate="TR__OR_REGISTER_HERE"
            data-translate-templates="{
                link: '&lt;a href=&quot;/register&quot;&gt;{{ content }}&lt;/a&gt;'<commit_msg>Validate password field in login (fixes #1747)<commit_after><div class="login">
    <form novalidate="novalidate" class="login-form" name="loginForm" data-ng-submit="logIn()">
        <div class="form-error" data-ng-repeat="error in errors track by $index">
            <p>{{ error | translate }}</p>
        </div>

        <label>
            <span class="label-text">{{ "TR__EMAIL_OR_USERNAME" | translate }}</span>
            <input
                data-adh-input-sync=""
                type="text"
                name="nameOrEmail"
                required="required"
                data-ng-model="credentials.nameOrEmail" />
            <span class="input-error" data-ng-show="showError(loginForm, loginForm.nameOrEmail, 'required')">
                {{ "TR__ERROR_REQUIRED_EMAIL_OR_USERNAME" | translate }}
            </span>
        </label>
        <label>
            <span class="label-text">{{ "TR__PASSWORD" | translate }}</span>
            <input
                data-adh-input-sync=""
                type="password"
                name="password"
                required="required"
                data-ng-minlength="6"
                data-ng-maxlength="100"
                data-ng-model="credentials.password" />
            <span class="input-error" data-ng-show="showError(loginForm, loginForm.password, 'required')">
                {{ "TR__ERROR_REQUIRED_PASSWORD" | translate }}
            </span>
            <span class="input-error" data-ng-show="showError(loginForm, loginForm.password, 'minlength')">
                {{ "TR__ERROR_TOO_SHORT_PASSWORD" | translate }}
            </span>
        </label>

        <div class="login-info">
            {{ "TR__FORGOTTEN_PASSWORD" | translate }} <a href="/create_password_reset">{{ "TR__RESET" | translate }}</a>.
        </div>

        <input
            type="submit"
            value="{{ 'TR__LOGIN' | translate }}"
            class="button-cta"
            data-ng-disabled="loginForm.$invalid" />

        <div
            data-ng-if="options.POST"
            class="login-info"
            data-adh-html-translate="TR__OR_REGISTER_HERE"
            data-translate-templates="{
                link: '&lt;a href=&quot;/register&quot;&gt;{{ content }}&lt;/a&gt;'
{'fraction_non_alphanumeric': 0.15342530922930542, 'fraction_numerical': 0.0019029495718363464, 'mean_word_length': 1.8900343642611683, 'pattern_counts': {'":': 0, '<': 57, '<?xml version=': 0, '>': 55, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5834274', 'n_tokens_mistral': 1248, 'n_tokens_neox': 1191, 'n_words': 193}