From 40773e67732187d5a4dad973cf517fffaaf98073 Mon Sep 17 00:00:00 2001 From: jan Date: Sat, 19 Dec 2015 15:43:29 +0100 Subject: =?UTF-8?q?datenbankverbindung,=20=C3=BCberpr=C3=BCfung=20des=20ke?= =?UTF-8?q?kses?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit diff --git a/charakterin.go b/charakterin.go index 15f2a6c..bb7323d 100644 --- a/charakterin.go +++ b/charakterin.go @@ -1,8 +1,11 @@ package charakterin import ( + "database/sql" "log" "net/http" + + _ "github.com/lib/pq" ) // Renderer wird verwendet, um die Routen (bspw. Login-Route) zu rendern. Damit bleibt Charakterin selbst ohne Template. @@ -15,13 +18,19 @@ type Renderer interface { type Charakterin struct { renderer Renderer FallbackRoute string + Database *sql.DB } // New erstellt eine neue Instanz von Charakterin. -func New() *Charakterin { +func New(db *sql.DB) *Charakterin { + if err := db.Ping(); err != nil { + log.Fatalln("no valid database connection supplied:", err) + return nil + } return &Charakterin{ nil, "/", + db, } } @@ -42,15 +51,35 @@ func (c *Charakterin) DisplayLogin(w http.ResponseWriter, r *http.Request) { return } + http.SetCookie(w, &http.Cookie{ + Name: "session", + Value: "benis", + }) + c.renderer.RenderLoginPage(w, make(map[string]interface{})) } -// Login versucht einen Charakter einzuloggen. +// Login versucht einen User einzuloggen. func (c *Charakterin) Login(w http.ResponseWriter, r *http.Request) { } -// IsLoggedIn überprüft anhand eines Request, ob der Charakter eingeloggt ist. +// IsLoggedIn überprüft anhand eines Request, ob der User eingeloggt ist. func (c *Charakterin) IsLoggedIn(r *http.Request) bool { + cookie, err := r.Cookie("session") + if err != nil { + log.Println("no session") + return false + } + + rows, err := c.Database.Query(`SELECT * FROM login.sessions WHERE id = $1`, cookie.Value) + if err != nil { + log.Println(err) + return false + } + + if rows.Next() { + return true + } return false } -- cgit v0.10.1