summaryrefslogtreecommitdiffstats
path: root/api/post.go
diff options
context:
space:
mode:
authorJoramWilander <jwawilander@gmail.com>2016-03-08 12:27:27 -0500
committerJoramWilander <jwawilander@gmail.com>2016-03-08 12:27:27 -0500
commit5c29d4f64935d0516e9d72d1d8cc734bcf295a87 (patch)
tree72006c3fde510a8c6a6a7b02503ced2e6510ab51 /api/post.go
parent22470c2069eb21539540d19e80fd85394782c9a7 (diff)
downloadchat-5c29d4f64935d0516e9d72d1d8cc734bcf295a87.tar.gz
chat-5c29d4f64935d0516e9d72d1d8cc734bcf295a87.tar.bz2
chat-5c29d4f64935d0516e9d72d1d8cc734bcf295a87.zip
Deleting posts with files now renames the file so that public links to those files no longer work
Diffstat (limited to 'api/post.go')
-rw-r--r--api/post.go18
1 files changed, 18 insertions, 0 deletions
diff --git a/api/post.go b/api/post.go
index e6560a8e8..cd78b16f0 100644
--- a/api/post.go
+++ b/api/post.go
@@ -1094,6 +1094,7 @@ func deletePost(c *Context, w http.ResponseWriter, r *http.Request) {
message.Add("post", post.ToJson())
PublishAndForget(message)
+ DeletePostFilesAndForget(c.Session.TeamId, post)
result := make(map[string]string)
result["id"] = postId
@@ -1101,6 +1102,23 @@ func deletePost(c *Context, w http.ResponseWriter, r *http.Request) {
}
}
+func DeletePostFilesAndForget(teamId string, post *model.Post) {
+ go func() {
+ if len(post.Filenames) == 0 {
+ return
+ }
+
+ prefix := "teams/" + teamId + "/channels/" + post.ChannelId + "/users/" + post.UserId + "/"
+ for _, filename := range post.Filenames {
+ splitUrl := strings.Split(filename, "/")
+ oldPath := prefix + splitUrl[len(splitUrl)-2] + "/" + splitUrl[len(splitUrl)-1]
+ newPath := prefix + splitUrl[len(splitUrl)-2] + "/deleted_" + splitUrl[len(splitUrl)-1]
+ moveFile(oldPath, newPath)
+ }
+
+ }()
+}
+
func getPostsBefore(c *Context, w http.ResponseWriter, r *http.Request) {
getPostsBeforeOrAfter(c, w, r, true)
}