let admins and users change usernames
This commit is contained in:
@@ -267,7 +267,7 @@ func sessLogSave(s *sessions.Session, w http.ResponseWriter, r *http.Request) {
|
||||
// ## begin validation
|
||||
|
||||
var (
|
||||
errValiNoUsername = errors.New("please enter the password twice")
|
||||
errValiNoUsername = errors.New("please enter a username")
|
||||
errValiPasswordAllFields = errors.New("please enter the password twice")
|
||||
errValiPasswordsNotSame = errors.New("passwords entered were not the same")
|
||||
errValiKeysAllFields = errors.New("please enter the api key and secret")
|
||||
|
||||
@@ -92,6 +92,24 @@ func (c *Controller) ServeHome(r *http.Request) *Response {
|
||||
}
|
||||
}
|
||||
|
||||
func (c *Controller) ServeChangeOwnUsername(r *http.Request) *Response {
|
||||
return &Response{template: "change_own_username.tmpl"}
|
||||
}
|
||||
|
||||
func (c *Controller) ServeChangeOwnUsernameDo(r *http.Request) *Response {
|
||||
username := r.FormValue("username")
|
||||
if err := validateUsername(username); err != nil {
|
||||
return &Response{
|
||||
redirect: r.Referer(),
|
||||
flashW: []string{err.Error()},
|
||||
}
|
||||
}
|
||||
user := r.Context().Value(CtxUser).(*db.User)
|
||||
user.Name = username
|
||||
c.DB.Save(user)
|
||||
return &Response{redirect: "/admin/home"}
|
||||
}
|
||||
|
||||
func (c *Controller) ServeChangeOwnPassword(r *http.Request) *Response {
|
||||
return &Response{template: "change_own_password.tmpl"}
|
||||
}
|
||||
@@ -143,6 +161,44 @@ func (c *Controller) ServeUnlinkLastFMDo(r *http.Request) *Response {
|
||||
return &Response{redirect: "/admin/home"}
|
||||
}
|
||||
|
||||
func (c *Controller) ServeChangeUsername(r *http.Request) *Response {
|
||||
username := r.URL.Query().Get("user")
|
||||
if username == "" {
|
||||
return &Response{
|
||||
err: "please provide a username",
|
||||
code: 400,
|
||||
}
|
||||
}
|
||||
user := c.DB.GetUserByName(username)
|
||||
if user == nil {
|
||||
return &Response{
|
||||
err: "couldn't find a user with that name",
|
||||
code: 400,
|
||||
}
|
||||
}
|
||||
data := &templateData{}
|
||||
data.SelectedUser = user
|
||||
return &Response{
|
||||
template: "change_username.tmpl",
|
||||
data: data,
|
||||
}
|
||||
}
|
||||
|
||||
func (c *Controller) ServeChangeUsernameDo(r *http.Request) *Response {
|
||||
username := r.URL.Query().Get("user")
|
||||
usernameNew := r.FormValue("username")
|
||||
if err := validateUsername(usernameNew); err != nil {
|
||||
return &Response{
|
||||
redirect: r.Referer(),
|
||||
flashW: []string{err.Error()},
|
||||
}
|
||||
}
|
||||
user := c.DB.GetUserByName(username)
|
||||
user.Name = usernameNew
|
||||
c.DB.Save(user)
|
||||
return &Response{redirect: "/admin/home"}
|
||||
}
|
||||
|
||||
func (c *Controller) ServeChangePassword(r *http.Request) *Response {
|
||||
username := r.URL.Query().Get("user")
|
||||
if username == "" {
|
||||
|
||||
@@ -8,11 +8,12 @@ import (
|
||||
"github.com/gorilla/sessions"
|
||||
|
||||
"go.senan.xyz/gonic/server/db"
|
||||
"go.senan.xyz/gonic/version"
|
||||
)
|
||||
|
||||
func (c *Controller) WithSession(next http.Handler) http.Handler {
|
||||
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
session, err := c.sessDB.Get(r, "gonic")
|
||||
session, err := c.sessDB.Get(r, version.NAME)
|
||||
if err != nil {
|
||||
http.Error(w, fmt.Sprintf("error getting session: %s", err), 500)
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user