diff options
Diffstat (limited to '')
| -rw-r--r-- | backend/api/auth.go (renamed from backend/middleware/auth.go) | 17 | ||||
| -rw-r--r-- | backend/api/routes.go | 41 |
2 files changed, 52 insertions, 6 deletions
diff --git a/backend/middleware/auth.go b/backend/api/auth.go index 0744b3d..91ef80c 100644 --- a/backend/middleware/auth.go +++ b/backend/api/auth.go | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | package middleware | 1 | package api |
| 2 | 2 | ||
| 3 | import ( | 3 | import ( |
| 4 | "fmt" | 4 | "fmt" |
| @@ -16,7 +16,7 @@ func CheckAuth(c *gin.Context) { | |||
| 16 | // Validate token | 16 | // Validate token |
| 17 | token, err := jwt.Parse(tokenString, func(token *jwt.Token) (interface{}, error) { | 17 | token, err := jwt.Parse(tokenString, func(token *jwt.Token) (interface{}, error) { |
| 18 | if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok { | 18 | if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok { |
| 19 | return nil, fmt.Errorf("Unexpected signing method: %v", token.Header["alg"]) | 19 | return nil, fmt.Errorf("unexpected signing method: %v", token.Header["alg"]) |
| 20 | } | 20 | } |
| 21 | return []byte(os.Getenv("SECRET_KEY")), nil | 21 | return []byte(os.Getenv("SECRET_KEY")), nil |
| 22 | }) | 22 | }) |
| @@ -44,14 +44,19 @@ func CheckAuth(c *gin.Context) { | |||
| 44 | return | 44 | return |
| 45 | } | 45 | } |
| 46 | // Get user titles from DB | 46 | // Get user titles from DB |
| 47 | user.Titles = []string{} | 47 | var moderator bool |
| 48 | rows, _ := database.DB.Query(`SELECT t.title_name FROM titles t WHERE t.user_id = $1`, user.SteamID) | 48 | user.Titles = []models.Title{} |
| 49 | rows, _ := database.DB.Query(`SELECT t.title_name, t.title_color FROM titles t INNER JOIN user_titles ut ON t.id=ut.title_id WHERE ut.user_id = $1`, user.SteamID) | ||
| 49 | for rows.Next() { | 50 | for rows.Next() { |
| 50 | var title string | 51 | var title models.Title |
| 51 | rows.Scan(&title) | 52 | rows.Scan(&title.Name, &title.Color) |
| 53 | if title.Name == "Moderator" { | ||
| 54 | moderator = true | ||
| 55 | } | ||
| 52 | user.Titles = append(user.Titles, title) | 56 | user.Titles = append(user.Titles, title) |
| 53 | } | 57 | } |
| 54 | c.Set("user", user) | 58 | c.Set("user", user) |
| 59 | c.Set("mod", moderator) | ||
| 55 | c.Next() | 60 | c.Next() |
| 56 | } else { | 61 | } else { |
| 57 | c.Next() | 62 | c.Next() |
diff --git a/backend/api/routes.go b/backend/api/routes.go new file mode 100644 index 0000000..fd3b8cc --- /dev/null +++ b/backend/api/routes.go | |||
| @@ -0,0 +1,41 @@ | |||
| 1 | package api | ||
| 2 | |||
| 3 | import ( | ||
| 4 | "github.com/gin-gonic/gin" | ||
| 5 | "github.com/pektezol/leastportalshub/backend/handlers" | ||
| 6 | swaggerfiles "github.com/swaggo/files" | ||
| 7 | ginSwagger "github.com/swaggo/gin-swagger" | ||
| 8 | ) | ||
| 9 | |||
| 10 | func InitRoutes(router *gin.Engine) { | ||
| 11 | api := router.Group("/api") | ||
| 12 | { | ||
| 13 | v1 := api.Group("/v1") | ||
| 14 | v1.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerfiles.Handler)) | ||
| 15 | v1.GET("/", func(c *gin.Context) { | ||
| 16 | c.File("docs/index.html") | ||
| 17 | }) | ||
| 18 | v1.GET("/token", handlers.GetCookie) | ||
| 19 | v1.DELETE("/token", handlers.DeleteCookie) | ||
| 20 | v1.GET("/login", handlers.Login) | ||
| 21 | v1.GET("/profile", CheckAuth, handlers.Profile) | ||
| 22 | v1.PUT("/profile", CheckAuth, handlers.UpdateCountryCode) | ||
| 23 | v1.POST("/profile", CheckAuth, handlers.UpdateUser) | ||
| 24 | v1.GET("/users/:id", CheckAuth, handlers.FetchUser) | ||
| 25 | v1.GET("/demos", handlers.DownloadDemoWithID) | ||
| 26 | v1.GET("/maps/:id/summary", handlers.FetchMapSummary) | ||
| 27 | v1.POST("/maps/:id/summary", CheckAuth, handlers.CreateMapSummary) | ||
| 28 | v1.PUT("/maps/:id/summary", CheckAuth, handlers.EditMapSummary) | ||
| 29 | v1.DELETE("/maps/:id/summary", CheckAuth, handlers.DeleteMapSummary) | ||
| 30 | v1.PUT("/maps/:id/image", CheckAuth, handlers.EditMapImage) | ||
| 31 | v1.GET("/maps/:id/leaderboards", handlers.FetchMapLeaderboards) | ||
| 32 | v1.POST("/maps/:id/record", CheckAuth, handlers.CreateRecordWithDemo) | ||
| 33 | v1.GET("/rankings", handlers.Rankings) | ||
| 34 | v1.GET("/search", handlers.SearchWithQuery) | ||
| 35 | v1.GET("/games", handlers.FetchGames) | ||
| 36 | v1.GET("/games/:id", handlers.FetchChapters) | ||
| 37 | v1.GET("/chapters/:id", handlers.FetchChapterMaps) | ||
| 38 | v1.GET("/logs/score", handlers.ScoreLogs) | ||
| 39 | v1.GET("/logs/mod", CheckAuth, handlers.ModLogs) | ||
| 40 | } | ||
| 41 | } | ||