diff --git a/logs/assets/logs_control_panel.html b/logs/assets/logs_control_panel.html index a6836f1440..5098033fc7 100644 --- a/logs/assets/logs_control_panel.html +++ b/logs/assets/logs_control_panel.html @@ -17,14 +17,16 @@

General settings

- {{checkbox "UsernameLoggingEnabled" "UsernameLoggingEnabled" "Enable username logging" .Config.UsernameLoggingEnabled.Bool}} + {{checkbox "UsernameLoggingEnabled" "UsernameLoggingEnabled" "Enable username logging" + .Config.UsernameLoggingEnabled.Bool}}

-

Note: If users are on another server - with the bot on with this enabled, then their usernames will be logged even if - you disable it on your server.
+
Note: If users are on another server + with the bot on with this enabled, then their usernames will be logged even if + you disable it on your server.

- {{checkbox "NicknameLoggingEnabled" "NicknameLoggingEnabled" "Enable nickname logging" .Config.NicknameLoggingEnabled.Bool}} + {{checkbox "NicknameLoggingEnabled" "NicknameLoggingEnabled" "Enable nickname logging" + .Config.NicknameLoggingEnabled.Bool}}

You can check a users past usernames and nicknames with the commands whois usernames and nicknames @@ -32,11 +34,12 @@

General settings


- {{checkbox "ManageMessagesCanViewDeleted" "ManageMessagesCanViewDeleted" "Allow members with Manage Messages permissions to view deleted messages" .Config.ManageMessagesCanViewDeleted.Bool}} - {{checkbox "EveryoneCanViewDeleted" "EveryoneCanViewDeleted" "Allow everyone to view deleted messages" .Config.EveryoneCanViewDeleted.Bool}} + {{checkbox "ManageMessagesCanViewDeleted" "ManageMessagesCanViewDeleted" + "Allow members with Manage Messages permissions to view deleted messages" + .Config.ManageMessagesCanViewDeleted.Bool}} + {{checkbox "EveryoneCanViewDeleted" "EveryoneCanViewDeleted" + "Allow everyone to view deletedmessages" .Config.EveryoneCanViewDeleted.Bool}}
-
-

+
+
+
-
+

Access control

+
+ +
-

If none are set, everyone will be able to access message logs - (including users not logged in at all), otherwise access is restricted to only the - specified roles. Note: people with access to the control panel will always have - access to logs.

-
diff --git a/logs/logs.go b/logs/logs.go index a91c42a9a9..f5a6eb8d1b 100644 --- a/logs/logs.go +++ b/logs/logs.go @@ -270,3 +270,8 @@ func GetNicknames(ctx context.Context, userID, guildID int64, limit, offset int) qm.Limit(limit), qm.Offset(offset)).AllG(ctx) } + +const ( + AccessModeMembers = 0 + AccessModeEveryone = 1 +) diff --git a/logs/web.go b/logs/web.go index 2bb18d9c50..dbfc8ec91f 100644 --- a/logs/web.go +++ b/logs/web.go @@ -41,6 +41,7 @@ type ConfigFormData struct { NicknameLoggingEnabled bool ManageMessagesCanViewDeleted bool EveryoneCanViewDeleted bool + AccessMode int BlacklistedChannels []string MessageLogsAllowedRoles []int64 } @@ -159,6 +160,7 @@ func HandleLogsCPSaveGeneral(w http.ResponseWriter, r *http.Request) (web.Templa EveryoneCanViewDeleted: null.BoolFrom(form.EveryoneCanViewDeleted), ManageMessagesCanViewDeleted: null.BoolFrom(form.ManageMessagesCanViewDeleted), MessageLogsAllowedRoles: form.MessageLogsAllowedRoles, + AccessMode: int16(form.AccessMode), } err := config.UpsertG(ctx, true, []string{"guild_id"}, boil.Infer(), boil.Infer()) @@ -201,19 +203,21 @@ func CheckCanAccessLogs(w http.ResponseWriter, r *http.Request, config *models.G isAdmin, _ := web.IsAdminRequest(r.Context(), r) // check if were allowed access to logs on this server - if isAdmin || len(config.MessageLogsAllowedRoles) < 1 { + if isAdmin || config.AccessMode == AccessModeEveryone { return true } member := web.ContextMember(r.Context()) if member == nil { - tmpl.AddAlerts(web.ErrorAlert("This server has restricted log access to certain roles, either you're not logged in or not on this server.")) + tmpl.AddAlerts(web.ErrorAlert("This server has restricted log access to members only.")) return false } - if !common.ContainsInt64SliceOneOf(member.Roles, config.MessageLogsAllowedRoles) { - tmpl.AddAlerts(web.ErrorAlert("This server has restricted log access to certain roles, you don't have any of them.")) - return false + if len(config.MessageLogsAllowedRoles) > 0 { + if !common.ContainsInt64SliceOneOf(member.Roles, config.MessageLogsAllowedRoles) { + tmpl.AddAlerts(web.ErrorAlert("This server has restricted log access to certain roles, you don't have any of them.")) + return false + } } return true @@ -302,7 +306,7 @@ func HandleLogsHTML(w http.ResponseWriter, r *http.Request) interface{} { // Convert into views with formatted dates and colors const TimeFormat = "2006 Jan 02 15:04" messageViews := make([]*MessageView, len(messages)) - for i, _ := range messageViews { + for i := range messageViews { m := messages[i] v := &MessageView{ Model: m,