Adminlogs: More user edit logs, groups, and group promotions.

Shorten the group form field names.

Add group_unknown phrase.
Add panel_logs_administration_action_group_create phrase.
Add panel_logs_administration_action_group_edit phrase.
Add panel_logs_administration_action_group_promotion_create phrase.
Add panel_logs_administration_action_group_promotion_delete phrase.
This commit is contained in:
Azareal 2019-11-08 17:52:30 +10:00
parent 6e8c241d8b
commit 20984f7ea3
7 changed files with 60 additions and 17 deletions

View File

@ -1019,9 +1019,14 @@
"user_unknown":"Unknown", "user_unknown":"Unknown",
"topic_unknown":"Unknown", "topic_unknown":"Unknown",
"group_unknown":"Unknown",
"panel_logs_administration_head":"Admin Action Logs", "panel_logs_administration_head":"Admin Action Logs",
"panel_logs_administration_action_user_edit":"User <a href='%s'>%s</a> was modified by <a href='%s'>%s</a>", "panel_logs_administration_action_user_edit":"User <a href='%s'>%s</a> was modified by <a href='%s'>%s</a>",
"panel_logs_administration_action_group_create":"Group <a href='%s'>%s</a> was created by <a href='%s'>%s</a>",
"panel_logs_administration_action_group_edit":"Group <a href='%s'>%s</a> was modified by <a href='%s'>%s</a>",
"panel_logs_administration_action_group_promotion_create":"A group promotion was created by <a href='%s'>%s</a>",
"panel_logs_administration_action_group_promotion_delete":"A group promotion was deleted by <a href='%s'>%s</a>",
"panel_logs_administration_action_unknown":"Unknown action '%s' on elementType '%s' by <a href='%s'>%s</a>", "panel_logs_administration_action_unknown":"Unknown action '%s' on elementType '%s' by <a href='%s'>%s</a>",
"panel_logs_administration_no_logs":"There aren't any events logged.", "panel_logs_administration_no_logs":"There aren't any events logged.",

View File

@ -225,7 +225,11 @@ func GroupsPromotionsCreateSubmit(w http.ResponseWriter, r *http.Request, user c
if err != nil { if err != nil {
return ferr return ferr
} }
_, err = c.GroupPromotions.Create(from, to, twoWay, level, posts) pid, err := c.GroupPromotions.Create(from, to, twoWay, level, posts)
if err != nil {
return c.InternalError(err, w, r)
}
err = c.AdminLogs.Create("create", pid, "group_promotion", user.LastIP, user.ID)
if err != nil { if err != nil {
return c.InternalError(err, w, r) return c.InternalError(err, w, r)
} }
@ -272,6 +276,10 @@ func GroupsPromotionsDeleteSubmit(w http.ResponseWriter, r *http.Request, user c
if err != nil { if err != nil {
return c.InternalError(err, w, r) return c.InternalError(err, w, r)
} }
err = c.AdminLogs.Create("delete", pid, "group_promotion", user.LastIP, user.ID)
if err != nil {
return c.InternalError(err, w, r)
}
http.Redirect(w, r, "/panel/groups/edit/promotions/"+strconv.Itoa(gid), http.StatusSeeOther) http.Redirect(w, r, "/panel/groups/edit/promotions/"+strconv.Itoa(gid), http.StatusSeeOther)
return nil return nil
@ -378,12 +386,12 @@ func GroupsEditSubmit(w http.ResponseWriter, r *http.Request, user c.User, sgid
return ferr return ferr
} }
gname := r.FormValue("group-name") gname := r.FormValue("name")
if gname == "" { if gname == "" {
return c.LocalError(p.GetErrorPhrase("panel_groups_need_name"), w, r, user) return c.LocalError(p.GetErrorPhrase("panel_groups_need_name"), w, r, user)
} }
gtag := r.FormValue("group-tag") gtag := r.FormValue("tag")
rank := r.FormValue("group-type") rank := r.FormValue("type")
var originalRank string var originalRank string
// TODO: Use a switch for this // TODO: Use a switch for this
@ -403,7 +411,6 @@ func GroupsEditSubmit(w http.ResponseWriter, r *http.Request, user c.User, sgid
if !user.Perms.EditGroupGlobalPerms { if !user.Perms.EditGroupGlobalPerms {
return c.LocalError(p.GetErrorPhrase("panel_groups_cannot_edit_group_type"), w, r, user) return c.LocalError(p.GetErrorPhrase("panel_groups_cannot_edit_group_type"), w, r, user)
} }
switch rank { switch rank {
case "Admin": case "Admin":
if !user.Perms.EditGroupAdmin { if !user.Perms.EditGroupAdmin {
@ -433,6 +440,10 @@ func GroupsEditSubmit(w http.ResponseWriter, r *http.Request, user c.User, sgid
if err != nil { if err != nil {
return c.InternalError(err, w, r) return c.InternalError(err, w, r)
} }
err = c.AdminLogs.Create("edit", group.ID, "group", user.LastIP, user.ID)
if err != nil {
return c.InternalError(err, w, r)
}
http.Redirect(w, r, "/panel/groups/edit/"+strconv.Itoa(gid), http.StatusSeeOther) http.Redirect(w, r, "/panel/groups/edit/"+strconv.Itoa(gid), http.StatusSeeOther)
return nil return nil
@ -466,7 +477,7 @@ func GroupsEditPermsSubmit(w http.ResponseWriter, r *http.Request, user c.User,
pCheck := func(hasPerm bool, perms []string) { pCheck := func(hasPerm bool, perms []string) {
if hasPerm { if hasPerm {
for _, perm := range perms { for _, perm := range perms {
pvalue := r.PostFormValue("group-perm-" + perm) pvalue := r.PostFormValue("perm-" + perm)
pmap[perm] = (pvalue == "1") pmap[perm] = (pvalue == "1")
} }
} }
@ -478,6 +489,10 @@ func GroupsEditPermsSubmit(w http.ResponseWriter, r *http.Request, user c.User,
if err != nil { if err != nil {
return c.InternalError(err, w, r) return c.InternalError(err, w, r)
} }
err = c.AdminLogs.Create("edit", group.ID, "group", user.LastIP, user.ID)
if err != nil {
return c.InternalError(err, w, r)
}
http.Redirect(w, r, "/panel/groups/edit/perms/"+strconv.Itoa(gid), http.StatusSeeOther) http.Redirect(w, r, "/panel/groups/edit/perms/"+strconv.Itoa(gid), http.StatusSeeOther)
return nil return nil
@ -492,15 +507,15 @@ func GroupsCreateSubmit(w http.ResponseWriter, r *http.Request, user c.User) c.R
return c.NoPermissions(w, r, user) return c.NoPermissions(w, r, user)
} }
groupName := r.PostFormValue("group-name") groupName := r.PostFormValue("name")
if groupName == "" { if groupName == "" {
return c.LocalError(p.GetErrorPhrase("panel_groups_need_name"), w, r, user) return c.LocalError(p.GetErrorPhrase("panel_groups_need_name"), w, r, user)
} }
groupTag := r.PostFormValue("group-tag") groupTag := r.PostFormValue("tag")
var isAdmin, isMod, isBanned bool var isAdmin, isMod, isBanned bool
if user.Perms.EditGroupGlobalPerms { if user.Perms.EditGroupGlobalPerms {
switch r.PostFormValue("group-type") { switch r.PostFormValue("type") {
case "Admin": case "Admin":
if !user.Perms.EditGroupAdmin { if !user.Perms.EditGroupAdmin {
return c.LocalError(p.GetErrorPhrase("panel_groups_create_cannot_designate_admin"), w, r, user) return c.LocalError(p.GetErrorPhrase("panel_groups_create_cannot_designate_admin"), w, r, user)
@ -521,6 +536,11 @@ func GroupsCreateSubmit(w http.ResponseWriter, r *http.Request, user c.User) c.R
if err != nil { if err != nil {
return c.InternalError(err, w, r) return c.InternalError(err, w, r)
} }
err = c.AdminLogs.Create("create", gid, "group", user.LastIP, user.ID)
if err != nil {
return c.InternalError(err, w, r)
}
http.Redirect(w, r, "/panel/groups/edit/"+strconv.Itoa(gid), http.StatusSeeOther) http.Redirect(w, r, "/panel/groups/edit/"+strconv.Itoa(gid), http.StatusSeeOther)
return nil return nil
} }

View File

@ -106,6 +106,14 @@ func adminlogsElementType(action string, elementType string, elementID int, acto
case "user": case "user":
targetUser := handleUnknownUser(c.Users.Get(elementID)) targetUser := handleUnknownUser(c.Users.Get(elementID))
out = p.GetTmplPhrasef("panel_logs_administration_action_user_"+action, targetUser.Link, targetUser.Name, actor.Link, actor.Name) out = p.GetTmplPhrasef("panel_logs_administration_action_user_"+action, targetUser.Link, targetUser.Name, actor.Link, actor.Name)
case "group":
g, err := c.Groups.Get(elementID)
if err != nil {
g = &c.Group{Name: p.GetTmplPhrase("group_unknown")}
}
out = p.GetTmplPhrasef("panel_logs_administration_action_group_"+action, "/panel/groups/edit/"+strconv.Itoa(g.ID), g.Name, actor.Link, actor.Name)
case "group_promotion":
out = p.GetTmplPhrasef("panel_logs_administration_action_group_promotion_"+action, actor.Link, actor.Name)
} }
if out == "" { if out == "" {
out = p.GetTmplPhrasef("panel_logs_administration_action_unknown", action, elementType, actor.Link, actor.Name) out = p.GetTmplPhrasef("panel_logs_administration_action_unknown", action, elementType, actor.Link, actor.Name)

View File

@ -209,6 +209,11 @@ func UsersAvatarSubmit(w http.ResponseWriter, r *http.Request, user c.User, suid
return c.InternalError(err, w, r) return c.InternalError(err, w, r)
} }
err = c.AdminLogs.Create("edit", targetUser.ID, "user", user.LastIP, user.ID)
if err != nil {
return c.InternalError(err, w, r)
}
var se string var se string
if r.PostFormValue("show-email") == "1" { if r.PostFormValue("show-email") == "1" {
se = "&show-email=1" se = "&show-email=1"
@ -244,6 +249,11 @@ func UsersAvatarRemoveSubmit(w http.ResponseWriter, r *http.Request, user c.User
return ferr return ferr
} }
err = c.AdminLogs.Create("edit", targetUser.ID, "user", user.LastIP, user.ID)
if err != nil {
return c.InternalError(err, w, r)
}
var se string var se string
if r.PostFormValue("show-email") == "1" { if r.PostFormValue("show-email") == "1" {
se = "&show-email=1" se = "&show-email=1"

View File

@ -10,13 +10,13 @@
<form action="/panel/groups/edit/submit/{{.ID}}?s={{.CurrentUser.Session}}" method="post"> <form action="/panel/groups/edit/submit/{{.ID}}?s={{.CurrentUser.Session}}" method="post">
<div class="formrow"> <div class="formrow">
<div class="formitem formlabel"><a>{{lang "panel_group_name"}}</a></div> <div class="formitem formlabel"><a>{{lang "panel_group_name"}}</a></div>
<div class="formitem"><input name="group-name" type="text" value="{{.Name}}" placeholder="{{lang "panel_group_name_placeholder"}}" /></div> <div class="formitem"><input name="name" type="text" value="{{.Name}}" placeholder="{{lang "panel_group_name_placeholder"}}" /></div>
</div> </div>
{{if .CurrentUser.Perms.EditGroup}} {{if .CurrentUser.Perms.EditGroup}}
<div class="formrow"> <div class="formrow">
<div class="formitem formlabel"><a>{{lang "panel_group_type"}}</a></div> <div class="formitem formlabel"><a>{{lang "panel_group_type"}}</a></div>
<div class="formitem"> <div class="formitem">
<select name="group-type"{{if .DisableRank}} disabled{{end}}> <select name="type"{{if .DisableRank}} disabled{{end}}>
<option value="Guest"{{if eq .Rank "Guest"}} selected{{end}} disabled>{{lang "panel_groups_rank_guest"}}</option> <option value="Guest"{{if eq .Rank "Guest"}} selected{{end}} disabled>{{lang "panel_groups_rank_guest"}}</option>
<option value="Member"{{if eq .Rank "Member"}} selected{{end}}>{{lang "panel_groups_rank_member"}}</option> <option value="Member"{{if eq .Rank "Member"}} selected{{end}}>{{lang "panel_groups_rank_member"}}</option>
<option value="Mod"{{if eq .Rank "Mod"}} selected{{end}}{{if not .CurrentUser.Perms.EditGroupSuperMod}} disabled{{end}}>{{lang "panel_groups_rank_mod"}}</option> <option value="Mod"{{if eq .Rank "Mod"}} selected{{end}}{{if not .CurrentUser.Perms.EditGroupSuperMod}} disabled{{end}}>{{lang "panel_groups_rank_mod"}}</option>
@ -27,7 +27,7 @@
</div>{{end}} </div>{{end}}
<div class="formrow"> <div class="formrow">
<div class="formitem formlabel"><a>{{lang "panel_group_tag"}}</a></div> <div class="formitem formlabel"><a>{{lang "panel_group_tag"}}</a></div>
<div class="formitem"><input name="group-tag" type="text" value="{{.Tag}}" placeholder="{{lang "panel_group_tag_placeholder"}}" /></div> <div class="formitem"><input name="tag" type="text" value="{{.Tag}}" placeholder="{{lang "panel_group_tag_placeholder"}}" /></div>
</div> </div>
<div class="formrow form_button_row"> <div class="formrow form_button_row">
<div class="formitem"><button name="panel-button" class="formbutton">{{lang "panel_group_update_button"}}</button></div> <div class="formitem"><button name="panel-button" class="formbutton">{{lang "panel_group_update_button"}}</button></div>

View File

@ -14,7 +14,7 @@
<div class="formitem"> <div class="formitem">
<a>{{.LangStr}}</a> <a>{{.LangStr}}</a>
<div class="to_right"> <div class="to_right">
<select name="group-perm-{{.Name}}"> <select name="perm-{{.Name}}">
<option{{if .Toggle}} selected{{end}} value=1>{{lang "option_yes"}}</option> <option{{if .Toggle}} selected{{end}} value=1>{{lang "option_yes"}}</option>
<option{{if not .Toggle}} selected{{end}} value=0>{{lang "option_no"}}</option> <option{{if not .Toggle}} selected{{end}} value=0>{{lang "option_no"}}</option>
</select> </select>
@ -37,7 +37,7 @@
<div class="formitem"> <div class="formitem">
<a>{{.LangStr}}</a> <a>{{.LangStr}}</a>
<div class="to_right"> <div class="to_right">
<select name="group-perm-{{.Name}}"> <select name="perm-{{.Name}}">
<option{{if .Toggle}} selected{{end}} value=1>{{lang "option_yes"}}</option> <option{{if .Toggle}} selected{{end}} value=1>{{lang "option_yes"}}</option>
<option{{if not .Toggle}} selected{{end}} value=0>{{lang "option_no"}}</option> <option{{if not .Toggle}} selected{{end}} value=0>{{lang "option_no"}}</option>
</select> </select>

View File

@ -24,12 +24,12 @@
<form action="/panel/groups/create/?s={{.CurrentUser.Session}}" method="post"> <form action="/panel/groups/create/?s={{.CurrentUser.Session}}" method="post">
<div class="formrow"> <div class="formrow">
<div class="formitem formlabel"><a>{{lang "panel_groups_create_name"}}</a></div> <div class="formitem formlabel"><a>{{lang "panel_groups_create_name"}}</a></div>
<div class="formitem"><input name="group-name" type="text" placeholder="{{lang "panel_groups_create_name_placeholder"}}" /></div> <div class="formitem"><input name="name" type="text" placeholder="{{lang "panel_groups_create_name_placeholder"}}" /></div>
</div> </div>
<div class="formrow"> <div class="formrow">
<div class="formitem formlabel"><a>{{lang "panel_groups_create_type"}}</a></div> <div class="formitem formlabel"><a>{{lang "panel_groups_create_type"}}</a></div>
<div class="formitem"> <div class="formitem">
<select name="group-type"{{if not .CurrentUser.Perms.EditGroupGlobalPerms}} disabled{{end}}> <select name="type"{{if not .CurrentUser.Perms.EditGroupGlobalPerms}} disabled{{end}}>
<option selected>Member</option> <option selected>Member</option>
<option{{if not .CurrentUser.Perms.EditGroupSuperMod}} disabled{{end}}>Mod</option> <option{{if not .CurrentUser.Perms.EditGroupSuperMod}} disabled{{end}}>Mod</option>
<option{{if not .CurrentUser.Perms.EditGroupAdmin}} disabled{{end}}>Admin</option> <option{{if not .CurrentUser.Perms.EditGroupAdmin}} disabled{{end}}>Admin</option>
@ -39,7 +39,7 @@
</div> </div>
<div class="formrow"> <div class="formrow">
<div class="formitem formlabel"><a>{{lang "panel_groups_create_tag"}}</a></div> <div class="formitem formlabel"><a>{{lang "panel_groups_create_tag"}}</a></div>
<div class="formitem"><input name="group-tag" type="text" /></div> <div class="formitem"><input name="tag" type="text" /></div>
</div> </div>
<div class="formrow form_button_row"> <div class="formrow form_button_row">
<div class="formitem"><button name="panel-button" class="formbutton">{{lang "panel_groups_create_button"}}</button></div> <div class="formitem"><button name="panel-button" class="formbutton">{{lang "panel_groups_create_button"}}</button></div>