From d963c3f40f075c05d70af32f44ed2bec8e00bc37 Mon Sep 17 00:00:00 2001 From: Arda Serdar Pektezol <1669855+pektezol@users.noreply.github.com> Date: Sat, 22 Oct 2022 19:07:14 +0300 Subject: init --- backend/controllers/controllers.go | 63 ++++++++++++++++++++++++++++++++++++++ backend/controllers/funcs.go | 16 ++++++++++ 2 files changed, 79 insertions(+) create mode 100644 backend/controllers/controllers.go create mode 100644 backend/controllers/funcs.go (limited to 'backend/controllers') 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 @@ +package controllers + +import ( + "log" + "net/http" + + "github.com/gin-contrib/sessions" + "github.com/gin-gonic/gin" + "github.com/solovev/steam_go" +) + +func Home(c *gin.Context) { + session := sessions.Default(c) + if session.Get("id") == nil { + c.JSON(200, "no id, not auth") + } else { + var user *steam_go.PlayerSummaries + user, err := steam_go.GetPlayerSummaries(session.Get("id").(string), GetEnvKey("API_KEY")) + if err != nil { + c.JSON(200, "authenticated, but err") + log.Panic(err) + } else { + c.JSON(200, gin.H{ + "output": user, + }) + } + } +} + +func Login(c *gin.Context) { + opId := steam_go.NewOpenId(c.Request) + switch opId.Mode() { + case "": + http.Redirect(c.Writer, c.Request, opId.AuthUrl(), 301) + case "cancel": + c.Writer.Write([]byte("Authorization cancelled")) + default: + steamId, err := opId.ValidateAndGetId() + if err != nil { + http.Error(c.Writer, err.Error(), http.StatusInternalServerError) + } + session := sessions.Default(c) + session.Set("id", steamId) + session.Save() + // Do whatever you want with steam id + c.Redirect(http.StatusMovedPermanently, "/") + c.Writer.Write([]byte(steamId)) + } +} + +func Logout(c *gin.Context) { + session := sessions.Default(c) + if session.Get("id") == nil { + c.JSON(http.StatusBadRequest, "no id, not auth") + } else { + session.Set("id", "") + session.Clear() + session.Options(sessions.Options{Path: "/", MaxAge: -1}) + session.Save() + log.Print("id", session.Get("id")) + c.Redirect(http.StatusPermanentRedirect, "/") + } +} diff --git a/backend/controllers/funcs.go b/backend/controllers/funcs.go new file mode 100644 index 0000000..6d0f854 --- /dev/null +++ b/backend/controllers/funcs.go @@ -0,0 +1,16 @@ +package controllers + +import ( + "log" + "os" + + "github.com/joho/godotenv" +) + +func GetEnvKey(key string) string { + err := godotenv.Load() + if err != nil { + log.Fatal("Error loading .env file") + } + return os.Getenv(key) +} -- cgit v1.2.3