api_account.go 900 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. package api
  2. import "github.com/gin-gonic/gin"
  3. func init() {
  4. addRoutes(func(self *HttpServer) {
  5. self.router.POST("/api/account/collaborators/add", self.auth(), self.addCollaborator)
  6. })
  7. }
  8. type addCollaboratorDto struct {
  9. Email string `json:"email" binding:"required"`
  10. }
  11. func (self *HttpServer) addCollaborator(c *gin.Context) {
  12. var model addCollaboratorDto
  13. if !c.EnsureBody(&model) {
  14. c.JSON(400, gin.H{"status": "bad request"})
  15. return
  16. }
  17. accountId, _ := c.Get("accountId")
  18. account, err := self.store.GetAccount(accountId.(int))
  19. if err != nil {
  20. c.JSON(401, gin.H{"status": "Authentication error"})
  21. }
  22. collaborator, err := self.store.GetUserAccountLogin(model.Email)
  23. if err != nil {
  24. c.JSON(404, gin.H{"status": "Collaborator not found"})
  25. }
  26. account.AddCollaborator(collaborator.Id)
  27. self.store.SaveUserAccount(account)
  28. c.JSON(200, gin.H{"status": "Collaborator added"})
  29. }