From dd39d8c86667c5446020458f8fe5171149d9ed5c Mon Sep 17 00:00:00 2001 From: Arda Serdar Pektezol <1669855+pektezol@users.noreply.github.com> Date: Wed, 18 Jan 2023 22:12:38 +0300 Subject: feat: refresh/update user via steam (#30) --- backend/controllers/userController.go | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) (limited to 'backend/controllers/userController.go') diff --git a/backend/controllers/userController.go b/backend/controllers/userController.go index 6bca5b9..95b2b52 100644 --- a/backend/controllers/userController.go +++ b/backend/controllers/userController.go @@ -2,7 +2,9 @@ package controllers import ( "net/http" + "os" "regexp" + "time" "github.com/gin-gonic/gin" "github.com/pektezol/leastportals/backend/database" @@ -176,6 +178,39 @@ func FetchUser(c *gin.Context) { return } +func UpdateUser(c *gin.Context) { + // Check if user exists + user, exists := c.Get("user") + if !exists { + c.JSON(http.StatusUnauthorized, models.ErrorResponse("User not logged in.")) + return + } + profile, err := GetPlayerSummaries(user.(models.User).SteamID, os.Getenv("API_KEY")) + if err != nil { + c.JSON(http.StatusBadRequest, models.ErrorResponse(err.Error())) + return + } + // Update profile + _, err = database.DB.Exec(`UPDATE users SET username = $1, avatar_link = $2, country_code = $3, updated_at = $4 + WHERE steam_id = $5;`, profile.PersonaName, profile.AvatarFull, profile.LocCountryCode, time.Now().UTC(), user.(models.User).SteamID) + if err != nil { + c.JSON(http.StatusBadRequest, models.ErrorResponse(err.Error())) + return + } + c.JSON(http.StatusOK, models.Response{ + Success: true, + Message: "Successfully updated user.", + Data: models.ProfileResponse{ + Profile: true, + SteamID: user.(models.User).SteamID, + Username: profile.PersonaName, + AvatarLink: profile.AvatarFull, + CountryCode: profile.LocCountryCode, + }, + }) + return +} + func UpdateCountryCode(c *gin.Context) { // Check if user exists user, exists := c.Get("user") -- cgit v1.2.3