diff --git a/api-userpage.go b/api-userpage.go index 718741a..dd908d5 100644 --- a/api-userpage.go +++ b/api-userpage.go @@ -28,6 +28,14 @@ func (app *appContext) MyDetails(gc *gin.Context) { } resp.Username = user.Name resp.Admin = user.Policy.IsAdministrator + resp.AccountsAdmin = false + if !app.config.Section("ui").Key("allow_all").MustBool(false) { + adminOnly := app.config.Section("ui").Key("admin_only").MustBool(true) + if emailStore, ok := app.storage.GetEmailsKey(resp.Id); ok { + resp.AccountsAdmin = emailStore.Admin + } + resp.AccountsAdmin = resp.AccountsAdmin || (adminOnly && resp.Admin) + } resp.Disabled = user.Policy.IsDisabled if exp, ok := app.storage.users[user.ID]; ok { diff --git a/html/user.html b/html/user.html index d04af15..f249f37 100644 --- a/html/user.html +++ b/html/user.html @@ -85,7 +85,7 @@ {{ if index . "PageMessageEnabled" }} {{ if .PageMessageEnabled }} -
+
{{ .PageMessageContent }}
{{ end }} diff --git a/lang/form/en-us.json b/lang/form/en-us.json index 652856e..0fb3316 100644 --- a/lang/form/en-us.json +++ b/lang/form/en-us.json @@ -23,7 +23,9 @@ "welcomeUser": "Welcome, {user}!", "addContactMethod": "Add Contact Method", "editContactMethod": "Edit Contact Method", - "joinTheServer": "Join the server:" + "joinTheServer": "Join the server:", + "customMessagePlaceholderHeader": "Customize this card", + "customMessagePlaceholderContent": "Click the user page edit button in settings to customize this card, or show one on the login screen, and don't worry, the user can't see this." }, "notifications": { "errorUserExists": "User already exists.", diff --git a/models.go b/models.go index 9f3aef9..dbbb5d0 100644 --- a/models.go +++ b/models.go @@ -376,15 +376,16 @@ type ReCaptchaResponseDTO struct { // MyDetailsDTO is sent to the user page to personalize it for the user. type MyDetailsDTO struct { - Id string `json:"id"` - Username string `json:"username"` - Expiry int64 `json:"expiry"` - Admin bool `json:"admin"` - Disabled bool `json:"disabled"` - Email *MyDetailsContactMethodsDTO `json:"email,omitempty"` - Discord *MyDetailsContactMethodsDTO `json:"discord,omitempty"` - Telegram *MyDetailsContactMethodsDTO `json:"telegram,omitempty"` - Matrix *MyDetailsContactMethodsDTO `json:"matrix,omitempty"` + Id string `json:"id"` + Username string `json:"username"` + Expiry int64 `json:"expiry"` + Admin bool `json:"admin"` + AccountsAdmin bool `json:"accounts_admin"` + Disabled bool `json:"disabled"` + Email *MyDetailsContactMethodsDTO `json:"email,omitempty"` + Discord *MyDetailsContactMethodsDTO `json:"discord,omitempty"` + Telegram *MyDetailsContactMethodsDTO `json:"telegram,omitempty"` + Matrix *MyDetailsContactMethodsDTO `json:"matrix,omitempty"` } type MyDetailsContactMethodsDTO struct { diff --git a/ts/user.ts b/ts/user.ts index 071fe84..4e8b548 100644 --- a/ts/user.ts +++ b/ts/user.ts @@ -62,6 +62,7 @@ interface MyDetails { username: string; expiry: number; admin: boolean; + accounts_admin: boolean; disabled: boolean; email?: MyDetailsContactMethod; discord?: MyDetailsContactMethod; @@ -388,6 +389,23 @@ document.addEventListener("details-reload", () => { } expiryCard.expiry = details.expiry; + + + if (details.accounts_admin) { + let messageCard = document.getElementById("card-message") + if (typeof(messageCard) == "undefined" || messageCard == null) { + messageCard = document.createElement("div"); + messageCard.classList.add("card", "@low", "dark:~d_neutral", "content"); + messageCard.id = "card-message"; + contactCard.parentElement.appendChild(messageCard); + } + if (!messageCard.textContent) { + messageCard.innerHTML = ` + ${window.lang.strings("customMessagePlaceholderHeader")} ✏️ + ${window.lang.strings("customMessagePlaceholderContent")} + `; + } + } } }); });