Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. // Copyright 2024 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package user
  4. import (
  5. "errors"
  6. user_model "code.gitea.io/gitea/models/user"
  7. "code.gitea.io/gitea/modules/web"
  8. "code.gitea.io/gitea/services/context"
  9. "code.gitea.io/gitea/services/forms"
  10. user_service "code.gitea.io/gitea/services/user"
  11. )
  12. func BlockedUsers(ctx *context.Context, blocker *user_model.User) {
  13. blocks, _, err := user_model.FindBlockings(ctx, &user_model.FindBlockingOptions{
  14. BlockerID: blocker.ID,
  15. })
  16. if err != nil {
  17. ctx.ServerError("FindBlockings", err)
  18. return
  19. }
  20. if err := user_model.BlockingList(blocks).LoadAttributes(ctx); err != nil {
  21. ctx.ServerError("LoadAttributes", err)
  22. return
  23. }
  24. ctx.Data["UserBlocks"] = blocks
  25. }
  26. func BlockedUsersPost(ctx *context.Context, blocker *user_model.User) {
  27. form := web.GetForm(ctx).(*forms.BlockUserForm)
  28. if ctx.HasError() {
  29. ctx.ServerError("FormValidation", nil)
  30. return
  31. }
  32. blockee, err := user_model.GetUserByName(ctx, form.Blockee)
  33. if err != nil {
  34. ctx.ServerError("GetUserByName", nil)
  35. return
  36. }
  37. switch form.Action {
  38. case "block":
  39. if err := user_service.BlockUser(ctx, ctx.Doer, blocker, blockee, form.Note); err != nil {
  40. if errors.Is(err, user_model.ErrCanNotBlock) || errors.Is(err, user_model.ErrBlockOrganization) {
  41. ctx.Flash.Error(ctx.Tr("user.block.block.failure", err.Error()))
  42. } else {
  43. ctx.ServerError("BlockUser", err)
  44. return
  45. }
  46. }
  47. case "unblock":
  48. if err := user_service.UnblockUser(ctx, ctx.Doer, blocker, blockee); err != nil {
  49. if errors.Is(err, user_model.ErrCanNotUnblock) || errors.Is(err, user_model.ErrBlockOrganization) {
  50. ctx.Flash.Error(ctx.Tr("user.block.unblock.failure", err.Error()))
  51. } else {
  52. ctx.ServerError("UnblockUser", err)
  53. return
  54. }
  55. }
  56. case "note":
  57. block, err := user_model.GetBlocking(ctx, blocker.ID, blockee.ID)
  58. if err != nil {
  59. ctx.ServerError("GetBlocking", err)
  60. return
  61. }
  62. if block != nil {
  63. if err := user_model.UpdateBlockingNote(ctx, block.ID, form.Note); err != nil {
  64. ctx.ServerError("UpdateBlockingNote", err)
  65. return
  66. }
  67. }
  68. }
  69. }