fix registration availability checks and signup endpoint

- correct api paths for username/email availability checks
- use singleton userAdapter instead of creating new instance
- use getApiBaseUrl() for signup to include /api/v1 prefix
This commit is contained in:
Justin Edmund 2025-12-13 22:15:31 -08:00
parent 30128107fb
commit 7e0f66d9cc
3 changed files with 5 additions and 7 deletions

View file

@ -197,7 +197,7 @@ export class UserAdapter extends BaseAdapter {
* Check username availability * Check username availability
*/ */
async checkUsernameAvailability(username: string): Promise<{ available: boolean }> { async checkUsernameAvailability(username: string): Promise<{ available: boolean }> {
return this.request<{ available: boolean }>(`/users/check-username`, { return this.request<{ available: boolean }>(`/check/username`, {
method: 'POST', method: 'POST',
body: JSON.stringify({ username }) body: JSON.stringify({ username })
}) })
@ -207,7 +207,7 @@ export class UserAdapter extends BaseAdapter {
* Check email availability * Check email availability
*/ */
async checkEmailAvailability(email: string): Promise<{ available: boolean }> { async checkEmailAvailability(email: string): Promise<{ available: boolean }> {
return this.request<{ available: boolean }>(`/users/check-email`, { return this.request<{ available: boolean }>(`/check/email`, {
method: 'POST', method: 'POST',
body: JSON.stringify({ email }) body: JSON.stringify({ email })
}) })

View file

@ -3,7 +3,7 @@
import AuthCard from '$lib/components/auth/AuthCard.svelte' import AuthCard from '$lib/components/auth/AuthCard.svelte'
import Input from '$lib/components/ui/Input.svelte' import Input from '$lib/components/ui/Input.svelte'
import Button from '$lib/components/ui/Button.svelte' import Button from '$lib/components/ui/Button.svelte'
import { UserAdapter } from '$lib/api/adapters/user.adapter' import { userAdapter } from '$lib/api/adapters/user.adapter'
import * as m from '$lib/paraglide/messages' import * as m from '$lib/paraglide/messages'
interface Props { interface Props {
@ -38,8 +38,6 @@
let usernameTimer: ReturnType<typeof setTimeout> let usernameTimer: ReturnType<typeof setTimeout>
let emailTimer: ReturnType<typeof setTimeout> let emailTimer: ReturnType<typeof setTimeout>
const userAdapter = new UserAdapter()
// Username validation regex // Username validation regex
const usernameRegex = /^[a-zA-Z0-9_-]+$/ const usernameRegex = /^[a-zA-Z0-9_-]+$/
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/ const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/

View file

@ -2,7 +2,7 @@ import type { RequestHandler } from '@sveltejs/kit'
import { json } from '@sveltejs/kit' import { json } from '@sveltejs/kit'
import { dev } from '$app/environment' import { dev } from '$app/environment'
import { z } from 'zod' import { z } from 'zod'
import { PUBLIC_SIERO_API_URL } from '$env/static/public' import { getApiBaseUrl } from '$lib/api/adapters/config'
import { passwordGrantLogin } from '$lib/auth/oauth' import { passwordGrantLogin } from '$lib/auth/oauth'
import { userAdapter } from '$lib/api/adapters/user.adapter' import { userAdapter } from '$lib/api/adapters/user.adapter'
import { buildCookies } from '$lib/auth/map' import { buildCookies } from '$lib/auth/map'
@ -40,7 +40,7 @@ export const POST: RequestHandler = async ({ request, cookies, fetch }) => {
try { try {
// 1. Create user account via API // 1. Create user account via API
const signupRes = await fetch(`${PUBLIC_SIERO_API_URL}/users`, { const signupRes = await fetch(`${getApiBaseUrl()}/users`, {
method: 'POST', method: 'POST',
headers: { 'Content-Type': 'application/json' }, headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ body: JSON.stringify({