diff --git a/apps/api/internal/auth/session_version.go b/apps/api/internal/auth/session_version.go index abd986f..401628c 100644 --- a/apps/api/internal/auth/session_version.go +++ b/apps/api/internal/auth/session_version.go @@ -19,7 +19,7 @@ type UserSessionState struct { func (s *Service) UserSessionState(ctx context.Context, userID uuid.UUID) (UserSessionState, error) { var st UserSessionState err := s.Pool.QueryRow(ctx, ` - SELECT is_active, session_version + SELECT COALESCE(is_active, false), COALESCE(session_version, 0) FROM users WHERE id = $1`, userID).Scan(&st.Active, &st.Version) if isUndefinedColumn(err) { diff --git a/apps/api/internal/httpapi/auth_handlers.go b/apps/api/internal/httpapi/auth_handlers.go index 33ab82c..8832bf8 100644 --- a/apps/api/internal/httpapi/auth_handlers.go +++ b/apps/api/internal/httpapi/auth_handlers.go @@ -308,11 +308,9 @@ func (s *Server) handleMe(w http.ResponseWriter, r *http.Request) { if accessErr == nil && access.FullAdmin && access.Role == auth.StaffRoleAdmin { staffTenantSwitch = true all, listErr := s.Auth.ListCompanies(r.Context(), 500) - if listErr != nil { - Error(w, http.StatusInternalServerError, "failed to load companies") - return + if listErr == nil { + companies = all } - companies = all } cidStr := s.Sessions.GetString(r.Context(), auth.SessionCompanyIDKey) homeStr := strings.TrimSpace(s.Sessions.GetString(r.Context(), auth.SessionStaffHomeCompanyKey)) diff --git a/apps/web/src/lib/components/site/CtaBanner.svelte b/apps/web/src/lib/components/site/CtaBanner.svelte index 6e19db1..84a1837 100644 --- a/apps/web/src/lib/components/site/CtaBanner.svelte +++ b/apps/web/src/lib/components/site/CtaBanner.svelte @@ -60,8 +60,6 @@ {i18n.t("home.cta.apply")} diff --git a/apps/web/src/lib/components/site/HowItWorksSection.svelte b/apps/web/src/lib/components/site/HowItWorksSection.svelte index 950aab0..f521fa2 100644 --- a/apps/web/src/lib/components/site/HowItWorksSection.svelte +++ b/apps/web/src/lib/components/site/HowItWorksSection.svelte @@ -1,5 +1,4 @@ @@ -46,9 +45,7 @@ {i18n.t("home.hero.learnMore")} {i18n.t("home.hero.apply")} diff --git a/apps/web/src/lib/components/site/data.ts b/apps/web/src/lib/components/site/data.ts index e895882..cb03c2d 100644 --- a/apps/web/src/lib/components/site/data.ts +++ b/apps/web/src/lib/components/site/data.ts @@ -1,5 +1,3 @@ -import { DEMO_BOOKING_URL } from "$lib/site"; - export type ProcessStep = { number: number; title: string; @@ -206,7 +204,7 @@ export const CTA_DATA = { ], ctaButton: { text: "Apply For Access", - href: DEMO_BOOKING_URL + href: "/register" } }; diff --git a/apps/web/src/lib/site.ts b/apps/web/src/lib/site.ts index 4e0db4a..8bec95b 100644 --- a/apps/web/src/lib/site.ts +++ b/apps/web/src/lib/site.ts @@ -1,7 +1,5 @@ /** Shared public/marketing site constants (aligned with legacy Descrybe). */ -export const DEMO_BOOKING_URL = "https://calendly.com/tim-berce/descrybe-demo"; - /** Auth routes — logged-out chrome with ThemeToggle (no dashboard shell). */ export const AUTH_PATHS = new Set([ "/login", diff --git a/apps/web/src/routes/+layout.svelte b/apps/web/src/routes/+layout.svelte index 6d7f254..7a78054 100644 --- a/apps/web/src/routes/+layout.svelte +++ b/apps/web/src/routes/+layout.svelte @@ -20,13 +20,12 @@ import AnalyticsHost from "$lib/components/AnalyticsHost.svelte"; import CookieConsentBanner from "$lib/components/CookieConsentBanner.svelte"; import { cookieConsent } from "$lib/cookie-consent.svelte"; - import { buttonClasses } from "$lib/components/ui"; import { browser } from "$app/environment"; import { goto } from "$app/navigation"; import { page } from "$app/state"; import { api, isUnauthorized } from "$lib/api"; import { safeInternalNext } from "$lib/safe-next"; - import { AUTH_PATHS, DEMO_BOOKING_URL, MARKETING_PATHS } from "$lib/site"; + import { AUTH_PATHS, MARKETING_PATHS } from "$lib/site"; import { theme } from "$lib/theme.svelte"; import { ADMIN_SIDEBAR_WIDTH_CLASS, adminPageTitleKey } from "$lib/admin-nav"; import ThemeToggle from "$lib/components/ThemeToggle.svelte"; @@ -270,19 +269,6 @@
- - {i18n.t("site.demoShort")} - -
diff --git a/apps/web/src/routes/contact-sales/+page.svelte b/apps/web/src/routes/contact-sales/+page.svelte index 18f3c8d..64b37db 100644 --- a/apps/web/src/routes/contact-sales/+page.svelte +++ b/apps/web/src/routes/contact-sales/+page.svelte @@ -2,7 +2,6 @@ import { i18n } from "$lib/i18n"; import { page } from "$app/state"; import { failureMessage } from "$lib/api"; - import { DEMO_BOOKING_URL } from "$lib/site"; import { submitSalesContact } from "$lib/sales-contact"; import { notifySuccess, notifyApiError } from "$lib/notify"; import SiteHeader from "$lib/components/site/SiteHeader.svelte"; @@ -87,14 +86,6 @@ {i18n.t("sales.contact.thanksBody")} - - {i18n.t("sales.contact.bookDemo")} - {submitting ? i18n.t("sales.contact.submitting") : i18n.t("sales.contact.submit")} - - {i18n.t("sales.contact.orBookDemo")} - diff --git a/apps/web/src/routes/login/+page.svelte b/apps/web/src/routes/login/+page.svelte index d088c7e..521f955 100644 --- a/apps/web/src/routes/login/+page.svelte +++ b/apps/web/src/routes/login/+page.svelte @@ -6,6 +6,7 @@ import { apiFormError, fieldDescribedBy, fieldInvalid, parseBodyErrorCodes } from "$lib/api-form-error"; import { i18n } from "$lib/i18n"; import { safeInternalNext } from "$lib/safe-next"; + import type { MeResponse } from "$lib/types"; import { Alert, AlertDescription, @@ -49,6 +50,7 @@ method: "POST", body: { email, password } }); + await api("/api/auth/me"); trackEvent("login", { method: "email" }); await goto(safeInternalNext(page.url.searchParams.get("next"), "/dashboard")); } catch (err) {