feat: disciple link
This commit is contained in:
+20
-6
@@ -42,6 +42,16 @@ type User struct {
|
||||
// nil until known.
|
||||
Country *string `json:"country"`
|
||||
|
||||
// DiscipleID links this account to a row in the Mongo `disciples`
|
||||
// collection (ObjectID hex) when the account belongs to one of Śrīla
|
||||
// Prabhupāda's own initiated disciples. Admin-set only — never
|
||||
// self-serve — and unique across users, so one disciple maps to at most
|
||||
// one account. nil for everybody else.
|
||||
//
|
||||
// Tagged `json:"-"`: the raw cross-store id is an internal detail. The
|
||||
// public profile exposes only the derived `is_direct_disciple` flag.
|
||||
DiscipleID *string `json:"-"`
|
||||
|
||||
// --- Devotional profile (user-editable) ---
|
||||
// Gender is a free-but-constrained string ("male"|"female"|"other"),
|
||||
// nil when unspecified.
|
||||
@@ -86,17 +96,21 @@ type User struct {
|
||||
|
||||
// MarshalJSON adds a derived `has_password` flag so the frontend can pick
|
||||
// "Change password" vs "Set a password" for OAuth-only accounts, without
|
||||
// the password hash itself ever leaving the server.
|
||||
// the password hash itself ever leaving the server. `is_direct_disciple` is
|
||||
// likewise derived — the raw cross-store DiscipleID stays server-side while
|
||||
// the frontend gets the one bit it needs to render the badge.
|
||||
func (u User) MarshalJSON() ([]byte, error) {
|
||||
type alias User
|
||||
return json.Marshal(&struct {
|
||||
alias
|
||||
HasPassword bool `json:"has_password"`
|
||||
Limits UserLimits `json:"limits"`
|
||||
HasPassword bool `json:"has_password"`
|
||||
IsDirectDisciple bool `json:"is_direct_disciple"`
|
||||
Limits UserLimits `json:"limits"`
|
||||
}{
|
||||
alias: alias(u),
|
||||
HasPassword: u.PasswordHash != nil,
|
||||
Limits: u.EffectiveLimits(),
|
||||
alias: alias(u),
|
||||
HasPassword: u.PasswordHash != nil,
|
||||
IsDirectDisciple: u.DiscipleID != nil && *u.DiscipleID != "",
|
||||
Limits: u.EffectiveLimits(),
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user