diff options
author | jan <jan@ruken.pw> | 2015-12-18 14:13:45 (UTC) |
---|---|---|
committer | jan <jan@ruken.pw> | 2015-12-18 14:13:45 (UTC) |
commit | 2988595b143be4b6cac12967754cf131afc42643 (patch) | |
tree | 89d3e5914337943b417de9542e66bcd202eb2c81 /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.go | 56 |
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 @@ | |||
1 | package charakterin | ||
2 | |||
3 | import ( | ||
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. | ||
9 | type 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. | ||
15 | type Charakterin struct { | ||
16 | renderer Renderer | ||
17 | FallbackRoute string | ||
18 | } | ||
19 | |||
20 | // New erstellt eine neue Instanz von Charakterin. | ||
21 | func New() *Charakterin { | ||
22 | return &Charakterin{ | ||
23 | nil, | ||
24 | "/", | ||
25 | } | ||
26 | } | ||
27 | |||
28 | // UseRenderer sagt charakterin, welchen Renderer es benutzen soll. | ||
29 | func (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. | ||
34 | func (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. | ||
49 | func (c *Charakterin) Login(w http.ResponseWriter, r *http.Request) { | ||
50 | |||
51 | } | ||
52 | |||
53 | // IsLoggedIn überprüft anhand eines Request, ob der Charakter eingeloggt ist. | ||
54 | func (c *Charakterin) IsLoggedIn(r *http.Request) bool { | ||
55 | return false | ||
56 | } | ||