Artifact 365921b3da8a7f7fd2b50d58dfe21168a98e57376ea36681aa2fff51b3c17e59:
- File
internal/auth/invite.go
— part of check-in
[f5744359d3]
at
2026-04-19 16:30:54
on branch trunk
— Initial open source release
libfossil is a pure-Go implementation of the Fossil SCM, reading and writing the same .fossil SQLite repository format as upstream Fossil.
This is the first public release of code that previously lived in a private repository. The module path is github.com/danmestas/libfossil and the binary is named libfossil to avoid $PATH collisions with upstream fossil.
Included: - Repo lifecycle (create, clone), checkout/checkin, timeline, merge, diff, annotate, shun, tag, branch, bisect, stash, undo/redo - Sync-over-HTTP protocol (client and handler) - Two SQLite drivers: modernc (pure Go, default) and ncruces (wasm-capable) - Observer interfaces (SyncObserver, CheckoutObserver) with an optional OpenTelemetry implementation in observer/otel (separate submodule) - Deterministic simulation testing harness with BUGGIFY fault injection - Kong-based embeddable CLI under cli/ and a standalone binary under cmd/libfossil/ (user: [email protected], size: 969) [annotate] [blame] [check-ins using]
package auth import ( "encoding/base64" "encoding/json" "fmt" ) type InviteToken struct { URL string `json:"url"` Login string `json:"login"` Password string `json:"password"` Caps string `json:"caps"` } func (t InviteToken) Encode() string { b, err := json.Marshal(t) if err != nil { panic(fmt.Sprintf("auth.InviteToken.Encode: %v", err)) } return base64.URLEncoding.EncodeToString(b) } func DecodeInviteToken(s string) (InviteToken, error) { b, err := base64.URLEncoding.DecodeString(s) if err != nil { return InviteToken{}, fmt.Errorf("auth.DecodeInviteToken: %w", err) } var t InviteToken if err := json.Unmarshal(b, &t); err != nil { return InviteToken{}, fmt.Errorf("auth.DecodeInviteToken: %w", err) } if t.Login == "" { return InviteToken{}, fmt.Errorf("auth.DecodeInviteToken: missing login") } if t.Password == "" { return InviteToken{}, fmt.Errorf("auth.DecodeInviteToken: missing password") } return t, nil }