aboutsummaryrefslogtreecommitdiff
path: root/backend/controllers/controllers.go
diff options
context:
space:
mode:
Diffstat (limited to 'backend/controllers/controllers.go')
-rw-r--r--backend/controllers/controllers.go63
1 files changed, 63 insertions, 0 deletions
diff --git a/backend/controllers/controllers.go b/backend/controllers/controllers.go
new file mode 100644
index 0000000..a24fc3c
--- /dev/null
+++ b/backend/controllers/controllers.go
@@ -0,0 +1,63 @@
1package controllers
2
3import (
4 "log"
5 "net/http"
6
7 "github.com/gin-contrib/sessions"
8 "github.com/gin-gonic/gin"
9 "github.com/solovev/steam_go"
10)
11
12func Home(c *gin.Context) {
13 session := sessions.Default(c)
14 if session.Get("id") == nil {
15 c.JSON(200, "no id, not auth")
16 } else {
17 var user *steam_go.PlayerSummaries
18 user, err := steam_go.GetPlayerSummaries(session.Get("id").(string), GetEnvKey("API_KEY"))
19 if err != nil {
20 c.JSON(200, "authenticated, but err")
21 log.Panic(err)
22 } else {
23 c.JSON(200, gin.H{
24 "output": user,
25 })
26 }
27 }
28}
29
30func Login(c *gin.Context) {
31 opId := steam_go.NewOpenId(c.Request)
32 switch opId.Mode() {
33 case "":
34 http.Redirect(c.Writer, c.Request, opId.AuthUrl(), 301)
35 case "cancel":
36 c.Writer.Write([]byte("Authorization cancelled"))
37 default:
38 steamId, err := opId.ValidateAndGetId()
39 if err != nil {
40 http.Error(c.Writer, err.Error(), http.StatusInternalServerError)
41 }
42 session := sessions.Default(c)
43 session.Set("id", steamId)
44 session.Save()
45 // Do whatever you want with steam id
46 c.Redirect(http.StatusMovedPermanently, "/")
47 c.Writer.Write([]byte(steamId))
48 }
49}
50
51func Logout(c *gin.Context) {
52 session := sessions.Default(c)
53 if session.Get("id") == nil {
54 c.JSON(http.StatusBadRequest, "no id, not auth")
55 } else {
56 session.Set("id", "")
57 session.Clear()
58 session.Options(sessions.Options{Path: "/", MaxAge: -1})
59 session.Save()
60 log.Print("id", session.Get("id"))
61 c.Redirect(http.StatusPermanentRedirect, "/")
62 }
63}