Implement GET /users/username/{username} endpoint for APIv4 (#5310)

* added get user by username endpoint

* added get user by username unit test and driver

* changed username length to 22 characters max

* changed Params to UserName to Username

* reorganized get user by username and get user by email formatting in model/client4
Этот коммит содержится в:
Ruzette Tanyag
2017-02-08 05:00:16 -05:00
коммит произвёл Joram Wilander
родитель 5462f0119e
Коммит 0162d8ad08
8 изменённых файлов: 133 добавлений и 3 удалений

Просмотреть файл

@@ -30,6 +30,7 @@ func InitUser() {
BaseRoutes.Users.Handle("/login", ApiHandler(login)).Methods("POST")
BaseRoutes.Users.Handle("/logout", ApiHandler(logout)).Methods("POST")
BaseRoutes.UserByUsername.Handle("", ApiSessionRequired(getUserByUsername)).Methods("GET")
BaseRoutes.UserByEmail.Handle("", ApiSessionRequired(getUserByEmail)).Methods("GET")
}
@@ -93,6 +94,34 @@ func getUser(c *Context, w http.ResponseWriter, r *http.Request) {
}
}
func getUserByUsername(c *Context, w http.ResponseWriter, r *http.Request) {
c.RequireUsername()
if c.Err != nil {
return
}
// No permission check required
var user *model.User
var err *model.AppError
if user, err = app.GetUserByUsername(c.Params.Username); err != nil {
c.Err = err
return
}
etag := user.Etag(utils.Cfg.PrivacySettings.ShowFullName, utils.Cfg.PrivacySettings.ShowEmailAddress)
if HandleEtag(etag, "Get User", w, r) {
return
} else {
app.SanitizeProfile(user, c.IsSystemAdmin())
w.Header().Set(model.HEADER_ETAG_SERVER, etag)
w.Write([]byte(user.ToJson()))
return
}
}
func getUserByEmail(c *Context, w http.ResponseWriter, r *http.Request) {
c.RequireEmail()
if c.Err != nil {