package webui import "github.com/pogo-vcs/pogo/server/webui/components" script registerScript() { // Username validation function function validateUsername(username) { if (!username) { return "Username is required"; } if (username.length < 3) { return "Username must be at least 3 characters long"; } if (username.length > 32) { return "Username must be no more than 32 characters long"; } const pattern = /^[a-zA-Z0-9_-]+$/; if (!pattern.test(username)) { return "Username can only contain letters, numbers, underscores, and hyphens"; } return null; } document.getElementById("registerForm").addEventListener("submit", async (e) => { e.preventDefault(); const username = document.getElementById("username").value.trim(); const inviteToken = document.getElementById("inviteToken").value; const errorDiv = document.getElementById("errorMessage"); const successDiv = document.getElementById("successMessage"); // Client-side validation const validationError = validateUsername(username); if (validationError) { errorDiv.textContent = validationError; errorDiv.classList.remove("hidden"); successDiv.classList.add("hidden"); return; } try { const formData = new FormData(); formData.append("username", username); formData.append("invite_token", inviteToken); const response = await fetch("/api/register", { method: "POST", body: formData, credentials: "same-origin" }); if (response.ok) { const data = await response.json(); successDiv.innerHTML = `

Registration Successful!

Welcome, ${username}! You have been automatically logged in.

Your personal access token is:

${data.token}

⚠️ Important: Save this token somewhere secure! You'll need it to access Pogo from the command line. This is the only time we'll show it to you.

Continue to repositories →

`; successDiv.classList.remove("hidden"); document.getElementById("registerForm").classList.add("hidden"); } else { const text = await response.text(); errorDiv.textContent = text || "Registration failed"; errorDiv.classList.remove("hidden"); successDiv.classList.add("hidden"); } } catch (error) { errorDiv.textContent = error.message || "Network error. Please try again."; errorDiv.classList.remove("hidden"); successDiv.classList.add("hidden"); } }); } templ Register(inviteToken string) { @layout("Register - Pogo") { @components.Header(GetUser(ctx)) @components.Main() {

Create Account

About Login with Pogo

Pogo uses personal access tokens for authentication. After registration, you'll receive a unique token that you'll use to:

  • Access Pogo from the command line
  • Log into the web interface
  • Authenticate API requests

Keep your token secure and don't share it with others.

} @registerScript() } }