aboutsummaryrefslogtreecommitdiff
path: root/charakterin.go
diff options
context:
space:
mode:
Diffstat (limited to 'charakterin.go')
-rw-r--r--charakterin.go35
1 files changed, 32 insertions, 3 deletions
diff --git a/charakterin.go b/charakterin.go
index 15f2a6c..bb7323d 100644
--- a/charakterin.go
+++ b/charakterin.go
@@ -1,8 +1,11 @@
1package charakterin 1package charakterin
2 2
3import ( 3import (
4 "database/sql"
4 "log" 5 "log"
5 "net/http" 6 "net/http"
7
8 _ "github.com/lib/pq"
6) 9)
7 10
8// Renderer wird verwendet, um die Routen (bspw. Login-Route) zu rendern. Damit bleibt Charakterin selbst ohne Template. 11// Renderer wird verwendet, um die Routen (bspw. Login-Route) zu rendern. Damit bleibt Charakterin selbst ohne Template.
@@ -15,13 +18,19 @@ type Renderer interface {
15type Charakterin struct { 18type Charakterin struct {
16 renderer Renderer 19 renderer Renderer
17 FallbackRoute string 20 FallbackRoute string
21 Database *sql.DB
18} 22}
19 23
20// New erstellt eine neue Instanz von Charakterin. 24// New erstellt eine neue Instanz von Charakterin.
21func New() *Charakterin { 25func New(db *sql.DB) *Charakterin {
26 if err := db.Ping(); err != nil {
27 log.Fatalln("no valid database connection supplied:", err)
28 return nil
29 }
22 return &Charakterin{ 30 return &Charakterin{
23 nil, 31 nil,
24 "/", 32 "/",
33 db,
25 } 34 }
26} 35}
27 36
@@ -42,15 +51,35 @@ func (c *Charakterin) DisplayLogin(w http.ResponseWriter, r *http.Request) {
42 return 51 return
43 } 52 }
44 53
54 http.SetCookie(w, &http.Cookie{
55 Name: "session",
56 Value: "benis",
57 })
58
45 c.renderer.RenderLoginPage(w, make(map[string]interface{})) 59 c.renderer.RenderLoginPage(w, make(map[string]interface{}))
46} 60}
47 61
48// Login versucht einen Charakter einzuloggen. 62// Login versucht einen User einzuloggen.
49func (c *Charakterin) Login(w http.ResponseWriter, r *http.Request) { 63func (c *Charakterin) Login(w http.ResponseWriter, r *http.Request) {
50 64
51} 65}
52 66
53// IsLoggedIn überprüft anhand eines Request, ob der Charakter eingeloggt ist. 67// IsLoggedIn überprüft anhand eines Request, ob der User eingeloggt ist.
54func (c *Charakterin) IsLoggedIn(r *http.Request) bool { 68func (c *Charakterin) IsLoggedIn(r *http.Request) bool {
69 cookie, err := r.Cookie("session")
70 if err != nil {
71 log.Println("no session")
72 return false
73 }
74
75 rows, err := c.Database.Query(`SELECT * FROM login.sessions WHERE id = $1`, cookie.Value)
76 if err != nil {
77 log.Println(err)
78 return false
79 }
80
81 if rows.Next() {
82 return true
83 }
55 return false 84 return false
56} 85}