mirror of
https://github.com/warmbly/warmbly.git
synced 2026-09-06 08:01:24 +00:00
35 lines
1.2 KiB
Go
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)
|
|
}
|