diff --git a/core/api.snap.txt b/core/api.snap.txt index bb64f85..962d349 100644 --- a/core/api.snap.txt +++ b/core/api.snap.txt @@ -29,6 +29,8 @@ func (*Admin) ListUsers() ([]User, error) func (a *Admin) RemoveUserFromGroup(userId, groupId string) error +func (u *Admin) RenameUser(userReference string, displayName string) error + func (u *Admin) UserSetLive(userReference string, setting bool) error type ErrorInvalidCredentials error diff --git a/core/user.go b/core/user.go index b0207cb..55544d1 100644 --- a/core/user.go +++ b/core/user.go @@ -160,6 +160,15 @@ func (u *Admin) UserSetLive(userReference string, setting bool) error { if err != nil { return err } - // u.IsLive = setting + return err +} + +func (u *Admin) RenameUser(userReference string, displayName string) error { + name := normalize.Name(displayName) + query := "UPDATE user SET name = ?, display_name = ? WHERE reference = ?" + _, err := db.Connection.Exec(query, name, displayName, userReference) + if err != nil { + return err + } return err } diff --git a/http/routing/users.go b/http/routing/users.go index 0ab648f..3f8940e 100644 --- a/http/routing/users.go +++ b/http/routing/users.go @@ -67,11 +67,18 @@ func UserPost(app *lishwist.Session, h http.Header, r *http.Request) rsvp.Respon intent := r.Form.Get("intent") - if intent != "" { - err = admin.UserSetLive(reference, intent != "delete") + switch intent { + case "delete": + err = admin.UserSetLive(reference, false) if err != nil { return response.Error(http.StatusInternalServerError, "Failed to delete user: %s", err) } + case "rename": + name := r.Form.Get("display_name") + err = admin.RenameUser(reference, name) + if err != nil { + return response.Error(http.StatusInternalServerError, "Failed to rename user: %s", err) + } } return response.Data("", user)