1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
package controllers
import (
"net/http"
"regexp"
"github.com/gin-gonic/gin"
"github.com/pektezol/leastportals/backend/database"
"github.com/pektezol/leastportals/backend/models"
)
func Profile(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
}
c.JSON(http.StatusOK, models.Response{
Success: true,
Message: "",
Data: models.ProfileResponse{
Profile: true,
SteamID: user.(models.User).SteamID,
Username: user.(models.User).Username,
AvatarLink: user.(models.User).AvatarLink,
CountryCode: user.(models.User).CountryCode,
},
})
return
}
func FetchUser(c *gin.Context) {
id := c.Param("id")
// Check if id is all numbers and 17 length
match, _ := regexp.MatchString("^[0-9]{17}$", id)
if !match {
c.JSON(http.StatusNotFound, models.ErrorResponse("User not found."))
return
}
// Check if user exists
var user models.User
err := database.DB.QueryRow(`SELECT * FROM users WHERE steam_id = $1;`, id).Scan(
&user.SteamID, &user.Username, &user.AvatarLink, &user.CountryCode,
&user.CreatedAt, &user.UpdatedAt)
if user.SteamID == "" {
// User does not exist
c.JSON(http.StatusNotFound, models.ErrorResponse("User not found."))
return
}
if err != nil {
c.JSON(http.StatusInternalServerError, models.ErrorResponse(err.Error()))
return
}
// Target user exists
_, exists := c.Get("user")
c.JSON(http.StatusOK, models.Response{
Success: true,
Message: "",
Data: models.ProfileResponse{
Profile: exists,
SteamID: user.SteamID,
Username: user.Username,
AvatarLink: user.AvatarLink,
CountryCode: user.CountryCode,
},
})
return
}
|