summaryrefslogtreecommitdiff
blob: ee4bce4834e2cf58606e78e2c45eb223a54f3ed8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package links

import (
	"go-gentoo/pkg/app/handler/auth"
	"go-gentoo/pkg/database"
	"go-gentoo/pkg/models"
	"net/http"
)

func Delete(w http.ResponseWriter, r *http.Request) {
	user := auth.GetUser(w, r)

	r.ParseForm()
	prefix := r.Form.Get("prefix")
	token := r.Form.Get("token")
	from := r.Form.Get("from")
	var shortlink string
	if prefix != "" {
		shortlink = "/" + prefix + "/" + token
	} else {
		shortlink = "/" + token
	}

	links := getLink(shortlink)

	if len(links) != 1 {
		http.Error(w, "Could not delete shortened URL", http.StatusInternalServerError)
		return
	}

	if user.IsAdmin() || links[0].UserEmail == user.Email || contains(user.Projects, links[0].Prefix) || links[0].Prefix == user.UserName {
		link := new(models.Link)
		_, err := database.DBCon.Model(link).Where("short_link = ?", shortlink).Delete()
		if err != nil {
			http.Error(w, "Could not delete shortened URL", http.StatusInternalServerError)
		} else {
			http.Redirect(w, r, from, http.StatusFound)
		}
	}

}