Convert title and description to plain text
This commit is contained in:
		@@ -20,3 +20,16 @@ func ConvertToHTML(md string) (string, error) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	return html, nil
 | 
						return html, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func ConvertToPlain(md string) (string, error) {
 | 
				
			||||||
 | 
						var buf bytes.Buffer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if err := goldmark.Convert([]byte(md), &buf); err != nil {
 | 
				
			||||||
 | 
							return "", fmt.Errorf("error converting markdown to html: %v", err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						p := bluemonday.StrictPolicy()
 | 
				
			||||||
 | 
						plain := p.Sanitize(buf.String())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return plain, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,56 +5,45 @@ import (
 | 
				
			|||||||
	"html/template"
 | 
						"html/template"
 | 
				
			||||||
	"log"
 | 
						"log"
 | 
				
			||||||
	"net/http"
 | 
						"net/http"
 | 
				
			||||||
	"time"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/gorilla/feeds"
 | 
					 | 
				
			||||||
	"streifling.com/jason/cpolis/cmd/data"
 | 
						"streifling.com/jason/cpolis/cmd/data"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func Login(db *data.DB) http.HandlerFunc {
 | 
					type AddUserData struct {
 | 
				
			||||||
	return func(w http.ResponseWriter, r *http.Request) {
 | 
						User  string
 | 
				
			||||||
		user := r.PostFormValue("username")
 | 
						First string
 | 
				
			||||||
		pass := r.PostFormValue("password")
 | 
						Last  string
 | 
				
			||||||
 | 
						Role  string
 | 
				
			||||||
 | 
						Msg   string
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		id, err := db.GetID(user)
 | 
					func inputsEmpty(user, pass, pass2, first, last, role string) bool {
 | 
				
			||||||
		if err != nil {
 | 
						return len(user) == 0 ||
 | 
				
			||||||
			log.Println(err)
 | 
							len(pass) == 0 ||
 | 
				
			||||||
			http.Error(w, err.Error(), http.StatusInternalServerError)
 | 
							len(pass2) == 0 ||
 | 
				
			||||||
			return
 | 
							len(first) == 0 ||
 | 
				
			||||||
		}
 | 
							len(last) == 0 ||
 | 
				
			||||||
 | 
							len(role) == 0
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if err := db.CheckPassword(id, pass); err != nil {
 | 
					func checkUserStrings(user, first, last string) (string, int, bool) {
 | 
				
			||||||
			log.Println(err)
 | 
						userLen := 15
 | 
				
			||||||
			http.Error(w, err.Error(), http.StatusInternalServerError)
 | 
						nameLen := 50
 | 
				
			||||||
			return
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
		template.Must(template.ParseFiles("web/templates/hub.html")).ExecuteTemplate(w, "page-content", nil)
 | 
						if len(user) > userLen {
 | 
				
			||||||
 | 
							return "Benutzername", userLen, false
 | 
				
			||||||
 | 
						} else if len(first) > nameLen {
 | 
				
			||||||
 | 
							return "Vorname", nameLen, false
 | 
				
			||||||
 | 
						} else if len(last) > nameLen {
 | 
				
			||||||
 | 
							return "Nachname", nameLen, false
 | 
				
			||||||
 | 
						} else {
 | 
				
			||||||
 | 
							return "", 0, true
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func FinishEdit(feed *data.Feed) http.HandlerFunc {
 | 
					func CreateUser() http.HandlerFunc {
 | 
				
			||||||
	return func(w http.ResponseWriter, r *http.Request) {
 | 
						return func(w http.ResponseWriter, r *http.Request) {
 | 
				
			||||||
		title := r.PostFormValue("editor-title")
 | 
							template.Must(template.ParseFiles("web/templates/add-user.html")).ExecuteTemplate(w, "page-content", nil)
 | 
				
			||||||
		desc := r.PostFormValue("editor-desc")
 | 
					 | 
				
			||||||
		mdContent := r.PostFormValue("editor-text")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		content, err := data.ConvertToHTML(mdContent)
 | 
					 | 
				
			||||||
		if err != nil {
 | 
					 | 
				
			||||||
			log.Println(err)
 | 
					 | 
				
			||||||
			http.Error(w, err.Error(), http.StatusInternalServerError)
 | 
					 | 
				
			||||||
			return
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		feed.Add(&feeds.Item{
 | 
					 | 
				
			||||||
			Title:       title,
 | 
					 | 
				
			||||||
			Created:     time.Now(),
 | 
					 | 
				
			||||||
			Description: desc,
 | 
					 | 
				
			||||||
			Content:     content,
 | 
					 | 
				
			||||||
		})
 | 
					 | 
				
			||||||
		feed.Save("tmp/rss.gob")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		template.Must(template.ParseFiles("web/templates/hub.html")).ExecuteTemplate(w, "page-content", nil)
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -121,27 +110,3 @@ func AddUser(db *data.DB) http.HandlerFunc {
 | 
				
			|||||||
		template.Must(template.ParseFiles("web/templates/hub.html")).ExecuteTemplate(w, "page-content", nil)
 | 
							template.Must(template.ParseFiles("web/templates/hub.html")).ExecuteTemplate(w, "page-content", nil)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					 | 
				
			||||||
func WriteArticle() http.HandlerFunc {
 | 
					 | 
				
			||||||
	return func(w http.ResponseWriter, r *http.Request) {
 | 
					 | 
				
			||||||
		template.Must(template.ParseFiles("web/templates/editor.html")).ExecuteTemplate(w, "page-content", nil)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func ShowRSS(feed *data.Feed) http.HandlerFunc {
 | 
					 | 
				
			||||||
	return func(w http.ResponseWriter, r *http.Request) {
 | 
					 | 
				
			||||||
		rss, err := feed.ToRss()
 | 
					 | 
				
			||||||
		if err != nil {
 | 
					 | 
				
			||||||
			log.Println(err)
 | 
					 | 
				
			||||||
			http.Error(w, err.Error(), http.StatusInternalServerError)
 | 
					 | 
				
			||||||
			return
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		template.Must(template.ParseFiles("web/templates/index.html", "web/templates/feed.rss")).Execute(w, rss)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func CreateUser() http.HandlerFunc {
 | 
					 | 
				
			||||||
	return func(w http.ResponseWriter, r *http.Request) {
 | 
					 | 
				
			||||||
		template.Must(template.ParseFiles("web/templates/add-user.html")).ExecuteTemplate(w, "page-content", nil)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
							
								
								
									
										52
									
								
								cmd/ui/editor.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								cmd/ui/editor.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,52 @@
 | 
				
			|||||||
 | 
					package ui
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"html/template"
 | 
				
			||||||
 | 
						"log"
 | 
				
			||||||
 | 
						"net/http"
 | 
				
			||||||
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"github.com/gorilla/feeds"
 | 
				
			||||||
 | 
						"streifling.com/jason/cpolis/cmd/data"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func WriteArticle() http.HandlerFunc {
 | 
				
			||||||
 | 
						return func(w http.ResponseWriter, r *http.Request) {
 | 
				
			||||||
 | 
							template.Must(template.ParseFiles("web/templates/editor.html")).ExecuteTemplate(w, "page-content", nil)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func FinishEdit(feed *data.Feed) http.HandlerFunc {
 | 
				
			||||||
 | 
						return func(w http.ResponseWriter, r *http.Request) {
 | 
				
			||||||
 | 
							title, err := data.ConvertToPlain(r.PostFormValue("editor-title"))
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								log.Println(err)
 | 
				
			||||||
 | 
								http.Error(w, err.Error(), http.StatusInternalServerError)
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							desc, err := data.ConvertToPlain(r.PostFormValue("editor-desc"))
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								log.Println(err)
 | 
				
			||||||
 | 
								http.Error(w, err.Error(), http.StatusInternalServerError)
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							content, err := data.ConvertToHTML(r.PostFormValue("editor-text"))
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								log.Println(err)
 | 
				
			||||||
 | 
								http.Error(w, err.Error(), http.StatusInternalServerError)
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							feed.Add(&feeds.Item{
 | 
				
			||||||
 | 
								Title:       title,
 | 
				
			||||||
 | 
								Created:     time.Now(),
 | 
				
			||||||
 | 
								Description: desc,
 | 
				
			||||||
 | 
								Content:     content,
 | 
				
			||||||
 | 
							})
 | 
				
			||||||
 | 
							feed.Save("tmp/rss.gob")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							template.Must(template.ParseFiles("web/templates/hub.html")).ExecuteTemplate(w, "page-content", nil)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -1,25 +0,0 @@
 | 
				
			|||||||
package ui
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func inputsEmpty(user, pass, pass2, first, last, role string) bool {
 | 
					 | 
				
			||||||
	return len(user) == 0 ||
 | 
					 | 
				
			||||||
		len(pass) == 0 ||
 | 
					 | 
				
			||||||
		len(pass2) == 0 ||
 | 
					 | 
				
			||||||
		len(first) == 0 ||
 | 
					 | 
				
			||||||
		len(last) == 0 ||
 | 
					 | 
				
			||||||
		len(role) == 0
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func checkUserStrings(user, first, last string) (string, int, bool) {
 | 
					 | 
				
			||||||
	userLen := 15
 | 
					 | 
				
			||||||
	nameLen := 50
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if len(user) > userLen {
 | 
					 | 
				
			||||||
		return "Benutzername", userLen, false
 | 
					 | 
				
			||||||
	} else if len(first) > nameLen {
 | 
					 | 
				
			||||||
		return "Vorname", nameLen, false
 | 
					 | 
				
			||||||
	} else if len(last) > nameLen {
 | 
					 | 
				
			||||||
		return "Nachname", nameLen, false
 | 
					 | 
				
			||||||
	} else {
 | 
					 | 
				
			||||||
		return "", 0, true
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,9 +0,0 @@
 | 
				
			|||||||
package ui
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
type AddUserData struct {
 | 
					 | 
				
			||||||
	User  string
 | 
					 | 
				
			||||||
	First string
 | 
					 | 
				
			||||||
	Last  string
 | 
					 | 
				
			||||||
	Role  string
 | 
					 | 
				
			||||||
	Msg   string
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
							
								
								
									
										21
									
								
								cmd/ui/rss.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								cmd/ui/rss.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,21 @@
 | 
				
			|||||||
 | 
					package ui
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"html/template"
 | 
				
			||||||
 | 
						"log"
 | 
				
			||||||
 | 
						"net/http"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"streifling.com/jason/cpolis/cmd/data"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func ShowRSS(feed *data.Feed) http.HandlerFunc {
 | 
				
			||||||
 | 
						return func(w http.ResponseWriter, r *http.Request) {
 | 
				
			||||||
 | 
							rss, err := feed.ToRss()
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								log.Println(err)
 | 
				
			||||||
 | 
								http.Error(w, err.Error(), http.StatusInternalServerError)
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							template.Must(template.ParseFiles("web/templates/index.html", "web/templates/feed.rss")).Execute(w, rss)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										31
									
								
								cmd/ui/session.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								cmd/ui/session.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,31 @@
 | 
				
			|||||||
 | 
					package ui
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"html/template"
 | 
				
			||||||
 | 
						"log"
 | 
				
			||||||
 | 
						"net/http"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"streifling.com/jason/cpolis/cmd/data"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func Login(db *data.DB) http.HandlerFunc {
 | 
				
			||||||
 | 
						return func(w http.ResponseWriter, r *http.Request) {
 | 
				
			||||||
 | 
							user := r.PostFormValue("username")
 | 
				
			||||||
 | 
							pass := r.PostFormValue("password")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							id, err := db.GetID(user)
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								log.Println(err)
 | 
				
			||||||
 | 
								http.Error(w, err.Error(), http.StatusInternalServerError)
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if err := db.CheckPassword(id, pass); err != nil {
 | 
				
			||||||
 | 
								log.Println(err)
 | 
				
			||||||
 | 
								http.Error(w, err.Error(), http.StatusInternalServerError)
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							template.Must(template.ParseFiles("web/templates/hub.html")).ExecuteTemplate(w, "page-content", nil)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user