aboutsummaryrefslogtreecommitdiff
path: root/charakterin.go
diff options
context:
space:
mode:
authorjan <jan@ruken.pw>2015-12-18 14:13:45 (UTC)
committerjan <jan@ruken.pw>2015-12-18 14:13:45 (UTC)
commit2988595b143be4b6cac12967754cf131afc42643 (patch)
tree89d3e5914337943b417de9542e66bcd202eb2c81 /charakterin.go
basis für charakterin. Als nächstes müsste der Loginprozess folgen, dafür brauchen wir jedoch erst eine Datenbank.
Diffstat (limited to 'charakterin.go')
-rw-r--r--charakterin.go56
1 files changed, 56 insertions, 0 deletions
diff --git a/charakterin.go b/charakterin.go
new file mode 100644
index 0000000..15f2a6c
--- /dev/null
+++ b/charakterin.go
@@ -0,0 +1,56 @@
1package charakterin
2
3import (
4 "log"
5 "net/http"
6)
7
8// Renderer wird verwendet, um die Routen (bspw. Login-Route) zu rendern. Damit bleibt Charakterin selbst ohne Template.
9type Renderer interface {
10 // RenderLoginPage zeigt die Login-Seite an.
11 RenderLoginPage(w http.ResponseWriter, data map[string]interface{})
12}
13
14// Charakterin ist das tolle Login- und Accountmanagementsystem.
15type Charakterin struct {
16 renderer Renderer
17 FallbackRoute string
18}
19
20// New erstellt eine neue Instanz von Charakterin.
21func New() *Charakterin {
22 return &Charakterin{
23 nil,
24 "/",
25 }
26}
27
28// UseRenderer sagt charakterin, welchen Renderer es benutzen soll.
29func (c *Charakterin) UseRenderer(renderer Renderer) {
30 c.renderer = renderer
31}
32
33// DisplayLogin zeigt die Route für den Login an, wenn der User nicht bereits eingeloggt ist.
34func (c *Charakterin) DisplayLogin(w http.ResponseWriter, r *http.Request) {
35 if c.IsLoggedIn(r) {
36 http.Redirect(w, r, c.FallbackRoute, 302)
37 return
38 }
39
40 if c.renderer == nil {
41 log.Println("charakterin: no renderer set")
42 return
43 }
44
45 c.renderer.RenderLoginPage(w, make(map[string]interface{}))
46}
47
48// Login versucht einen Charakter einzuloggen.
49func (c *Charakterin) Login(w http.ResponseWriter, r *http.Request) {
50
51}
52
53// IsLoggedIn überprüft anhand eines Request, ob der Charakter eingeloggt ist.
54func (c *Charakterin) IsLoggedIn(r *http.Request) bool {
55 return false
56}