Dynamically check username
This commit is contained in:
		@@ -14,6 +14,8 @@
 | 
			
		||||
        <label class="form-label mt-4" for="username">User name</label>
 | 
			
		||||
        <input class="form-control" id="username" type="text"
 | 
			
		||||
               name="username" value="{{ u.username }}" required/>
 | 
			
		||||
        <div class="valid-feedback">This username is valid</div>
 | 
			
		||||
        <div class="invalid-feedback">This username is already taken.</div>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
    <!-- First name -->
 | 
			
		||||
@@ -99,6 +101,39 @@
 | 
			
		||||
</form>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
    // Check Username
 | 
			
		||||
    async function find_username(username) {
 | 
			
		||||
        let data = new URLSearchParams();
 | 
			
		||||
        data.append("username", username);
 | 
			
		||||
 | 
			
		||||
        return (await(await fetch("/admin/api/find_username", {
 | 
			
		||||
            body: data,
 | 
			
		||||
            method: "POST",
 | 
			
		||||
        })).json()).user_id
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const usernameEl = document.getElementById("username")
 | 
			
		||||
    async function check_username() {
 | 
			
		||||
         try {
 | 
			
		||||
                usernameEl.classList.remove("is-invalid");
 | 
			
		||||
                usernameEl.classList.remove("is-valid");
 | 
			
		||||
 | 
			
		||||
                if (usernameEl.value === "")
 | 
			
		||||
                    return;
 | 
			
		||||
 | 
			
		||||
                const userID = await find_username(usernameEl.value);
 | 
			
		||||
                usernameEl.classList.add((userID === null || userID === "{{ u.uid }}") ? "is-valid" : "is-invalid");
 | 
			
		||||
 | 
			
		||||
            } catch(e) {
 | 
			
		||||
                console.error(e);
 | 
			
		||||
            }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    check_username();
 | 
			
		||||
    usernameEl.addEventListener("change", check_username);
 | 
			
		||||
    usernameEl.addEventListener("keyup", check_username);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    // Clients granted
 | 
			
		||||
    function refreshDisplayAuthorizedClients() {
 | 
			
		||||
        const clientsSelectorEl = document.getElementById("clients_target");
 | 
			
		||||
@@ -110,5 +145,8 @@
 | 
			
		||||
        el.addEventListener("change", refreshDisplayAuthorizedClients)
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
</script>
 | 
			
		||||
{% endblock content %}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user