// DeleteCustomer deletes customer for a group. Here for symmetry. func DeleteCustomer(u *url.URL, h http.Header, _ interface{}, context *models.Context) (int, http.Header, interface{}, error) { // do not allow customer deletion, causes losing track of transactions. return http.StatusForbidden, nil, nil, nil if err := context.IsGroupAdmin(); err != nil { return response.NewBadRequest(err) } if err := payment.DeleteCustomerForGroup(context.GroupName); err != nil { return response.NewBadRequest(err) } return response.NewDeleted() }
func Delete(u *url.URL, h http.Header, req *models.Channel, context *models.Context) (int, http.Header, interface{}, error) { if !context.IsLoggedIn() { return response.NewBadRequest(models.ErrNotLoggedIn) } id, err := request.GetURIInt64(u, "id") if err != nil { return response.NewBadRequest(err) } if err := req.ById(id); err != nil { return response.NewBadRequest(err) } if req.TypeConstant == models.Channel_TYPE_GROUP { return response.NewBadRequest(errors.New("You can not delete group channel")) } canOpen, err := req.CanOpen(context.Client.Account.Id) if err != nil { return response.NewBadRequest(err) } if !canOpen { return response.NewBadRequest(models.ErrCannotOpenChannel) } // TO-DO // add super-admin check here if req.CreatorId != context.Client.Account.Id { isAdmin, err := modelhelper.IsAdmin(context.Client.Account.Nick, req.GroupName) if err != nil { return response.NewBadRequest(err) } if !isAdmin { return response.NewAccessDenied(models.ErrAccessDenied) } } if err := req.Delete(); err != nil { return response.NewBadRequest(err) } // yes it is deleted but not removed completely from our system return response.NewDeleted() }
func Delete(u *url.URL, h http.Header, _ interface{}) (int, http.Header, interface{}, error) { parentId, err := request.GetURIInt64(u, "id") if err != nil { return response.NewBadRequest(err) } if parentId == 0 { // todo add proper logging return response.NewBadRequest(err) } replyId, err := request.GetURIInt64(u, "replyId") if err != nil { return response.NewBadRequest(err) } if replyId == 0 { // todo add proper logging return response.NewBadRequest(err) } // first delete the connection between message and the reply mr := models.NewMessageReply() mr.MessageId = parentId mr.ReplyId = replyId if err := mr.Delete(); err != nil { return response.NewBadRequest(err) } // then delete the message itself reply := models.NewChannelMessage() reply.Id = replyId if err := reply.Delete(); err != nil { return response.NewBadRequest(err) } // yes it is deleted but not removed completely from our system return response.NewDeleted() }
func (s *SneakerS3) Delete(u *url.URL, h http.Header, _ interface{}, context *models.Context) (int, http.Header, interface{}, error) { pathName := u.Query().Get("pathName") logger := s.createLogger(context, "Delete", pathName, http.StatusBadRequest) if pathName == "" { return response.NewBadRequestWithLogger(logger, ErrPathNotFound) } if !context.IsLoggedIn() { return response.NewBadRequestWithLogger(logger, models.ErrNotLoggedIn) } err := s.Manager.Rm(pathName) if err != nil { return response.NewBadRequestWithLogger(logger, err) } logger = s.createLogger(context, "Delete", pathName, http.StatusAccepted) logger.Info("") return response.NewDeleted() }
func Delete(u *url.URL, h http.Header, _ interface{}, c *models.Context) (int, http.Header, interface{}, error) { if !c.IsLoggedIn() { return response.NewAccessDenied(models.ErrNotLoggedIn) } id, err := request.GetURIInt64(u, "id") if err != nil { return response.NewBadRequest(err) } if id == 0 { return response.NewBadRequest(models.ErrMessageIdIsNotSet) } cm := models.NewChannelMessage() cm.Id = id if err := cm.ById(id); err != nil { if err == bongo.RecordNotFound { return response.NewNotFound() } return response.NewBadRequest(err) } // Add isAdmin checking // is user is admin, then can delete another user's message if cm.AccountId != c.Client.Account.Id { isAdmin, err := modelhelper.IsAdmin(c.Client.Account.Nick, c.GroupName) if err != nil { return response.NewBadRequest(err) } if !isAdmin { return response.NewBadRequest(models.ErrAccessDenied) } } // if this is a reply no need to delete it's replies if cm.TypeConstant == models.ChannelMessage_TYPE_REPLY { mr := models.NewMessageReply() mr.ReplyId = id parent, err := mr.FetchParent() if err != nil { return response.NewBadRequest(err) } // delete the message here err = cm.DeleteMessageAndDependencies(false) // then invalidate the cache of the parent message bongo.B.AddToCache(parent) } else { err = cm.DeleteMessageAndDependencies(true) } if err != nil { return response.NewBadRequest(err) } // yes it is deleted but not removed completely from our system return response.NewDeleted() }