user.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. package v1
  2. import (
  3. "net/http"
  4. "gogs.io/gogs/internal/context"
  5. "gogs.io/gogs/internal/database"
  6. "gogs.io/gogs/internal/route/api/v1/types"
  7. )
  8. func searchUsers(c *context.APIContext) {
  9. pageSize := c.QueryInt("limit")
  10. if pageSize <= 0 {
  11. pageSize = 10
  12. }
  13. users, _, err := database.Handle.Users().SearchByName(c.Req.Context(), c.Query("q"), 1, pageSize, "")
  14. if err != nil {
  15. c.JSON(http.StatusInternalServerError, map[string]any{
  16. "ok": false,
  17. "error": err.Error(),
  18. })
  19. return
  20. }
  21. results := make([]*types.User, len(users))
  22. for i := range users {
  23. results[i] = toUser(users[i])
  24. if !c.IsLogged {
  25. results[i].Email = ""
  26. }
  27. }
  28. c.JSONSuccess(map[string]any{
  29. "ok": true,
  30. "data": results,
  31. })
  32. }
  33. func getUserProfile(c *context.APIContext) {
  34. u, err := database.Handle.Users().GetByUsername(c.Req.Context(), c.Params(":username"))
  35. if err != nil {
  36. c.NotFoundOrError(err, "get user by name")
  37. return
  38. }
  39. // Hide user e-mail when API caller isn't signed in.
  40. if !c.IsLogged {
  41. u.Email = ""
  42. }
  43. c.JSONSuccess(toUser(u))
  44. }
  45. func getAuthenticatedUser(c *context.APIContext) {
  46. c.JSONSuccess(toUser(c.User))
  47. }