Files
warmbly/internal/config/endpoints.go
T

35 lines
1.2 KiB
Go

package config
import (
"net/url"
"os"
"strings"
)
// AppBaseURL is the dashboard origin every emailed link is built from.
//
// This used to be a hardcoded https://app.warmbly.com, which meant a
// self-hosted deployment mailed its users a reset link pointing at someone
// else's dashboard, carrying a live reset token signed with the self-host's own
// AUTH_SECRET. APP_URL is the documented variable; FRONTEND_BASE_URL is the
// older name and stays supported so existing deployments keep working.
func AppBaseURL() string {
for _, key := range []string{"APP_URL", "FRONTEND_BASE_URL"} {
if v := strings.TrimRight(strings.TrimSpace(os.Getenv(key)), "/"); v != "" {
return v
}
}
return "https://app.warmbly.com"
}
func GetPasswordResetURL(sessionToken string) string {
return AppBaseURL() + "/auth/reset-password/confirm?session=" + url.QueryEscape(sessionToken)
}
// GetInviteURL is the team-invitation accept link. Same reasoning as the reset
// URL: the dashboard's own copy-link button already used the browser origin, so
// only the emailed variant was broken on self-host.
func GetInviteURL(token string) string {
return AppBaseURL() + "/invite?token=" + url.QueryEscape(token)
}