user.go 1.3 KB

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