aboutsummaryrefslogtreecommitdiff
path: root/backend
diff options
context:
space:
mode:
Diffstat (limited to 'backend')
-rw-r--r--backend/docs/docs.go16
-rw-r--r--backend/docs/swagger.json16
-rw-r--r--backend/docs/swagger.yaml12
-rw-r--r--backend/handlers/record.go43
4 files changed, 32 insertions, 55 deletions
diff --git a/backend/docs/docs.go b/backend/docs/docs.go
index c4b2801..5327961 100644
--- a/backend/docs/docs.go
+++ b/backend/docs/docs.go
@@ -771,18 +771,6 @@ const docTemplate = `{
771 "description": "Partner Demo", 771 "description": "Partner Demo",
772 "name": "partner_demo", 772 "name": "partner_demo",
773 "in": "formData" 773 "in": "formData"
774 },
775 {
776 "type": "boolean",
777 "description": "Is Partner Orange",
778 "name": "is_partner_orange",
779 "in": "formData"
780 },
781 {
782 "type": "string",
783 "description": "Partner ID",
784 "name": "partner_id",
785 "in": "formData"
786 } 774 }
787 ], 775 ],
788 "responses": { 776 "responses": {
@@ -2233,8 +2221,8 @@ var SwaggerInfo = &swag.Spec{
2233 Host: "lp.ardapektezol.com", 2221 Host: "lp.ardapektezol.com",
2234 BasePath: "/api/v1", 2222 BasePath: "/api/v1",
2235 Schemes: []string{}, 2223 Schemes: []string{},
2236 Title: "Least Portals Database API", 2224 Title: "Least Portals Hub",
2237 Description: "Backend API endpoints for the Least Portals Database.", 2225 Description: "Backend API endpoints for Least Portals Hub.",
2238 InfoInstanceName: "swagger", 2226 InfoInstanceName: "swagger",
2239 SwaggerTemplate: docTemplate, 2227 SwaggerTemplate: docTemplate,
2240 LeftDelim: "{{", 2228 LeftDelim: "{{",
diff --git a/backend/docs/swagger.json b/backend/docs/swagger.json
index 7613d2c..94a0213 100644
--- a/backend/docs/swagger.json
+++ b/backend/docs/swagger.json
@@ -1,8 +1,8 @@
1{ 1{
2 "swagger": "2.0", 2 "swagger": "2.0",
3 "info": { 3 "info": {
4 "description": "Backend API endpoints for the Least Portals Database.", 4 "description": "Backend API endpoints for Least Portals Hub.",
5 "title": "Least Portals Database API", 5 "title": "Least Portals Hub",
6 "contact": {}, 6 "contact": {},
7 "license": { 7 "license": {
8 "name": "GNU Affero General Public License, Version 3", 8 "name": "GNU Affero General Public License, Version 3",
@@ -765,18 +765,6 @@
765 "description": "Partner Demo", 765 "description": "Partner Demo",
766 "name": "partner_demo", 766 "name": "partner_demo",
767 "in": "formData" 767 "in": "formData"
768 },
769 {
770 "type": "boolean",
771 "description": "Is Partner Orange",
772 "name": "is_partner_orange",
773 "in": "formData"
774 },
775 {
776 "type": "string",
777 "description": "Partner ID",
778 "name": "partner_id",
779 "in": "formData"
780 } 768 }
781 ], 769 ],
782 "responses": { 770 "responses": {
diff --git a/backend/docs/swagger.yaml b/backend/docs/swagger.yaml
index 22651e3..26d28b1 100644
--- a/backend/docs/swagger.yaml
+++ b/backend/docs/swagger.yaml
@@ -548,11 +548,11 @@ definitions:
548host: lp.ardapektezol.com 548host: lp.ardapektezol.com
549info: 549info:
550 contact: {} 550 contact: {}
551 description: Backend API endpoints for the Least Portals Database. 551 description: Backend API endpoints for Least Portals Hub.
552 license: 552 license:
553 name: GNU Affero General Public License, Version 3 553 name: GNU Affero General Public License, Version 3
554 url: https://www.gnu.org/licenses/agpl-3.0.html 554 url: https://www.gnu.org/licenses/agpl-3.0.html
555 title: Least Portals Database API 555 title: Least Portals Hub
556 version: "1.0" 556 version: "1.0"
557paths: 557paths:
558 /chapters/{chapterid}: 558 /chapters/{chapterid}:
@@ -1007,14 +1007,6 @@ paths:
1007 in: formData 1007 in: formData
1008 name: partner_demo 1008 name: partner_demo
1009 type: file 1009 type: file
1010 - description: Is Partner Orange
1011 in: formData
1012 name: is_partner_orange
1013 type: boolean
1014 - description: Partner ID
1015 in: formData
1016 name: partner_id
1017 type: string
1018 produces: 1010 produces:
1019 - application/json 1011 - application/json
1020 responses: 1012 responses:
diff --git a/backend/handlers/record.go b/backend/handlers/record.go
index 2c763f9..c720823 100644
--- a/backend/handlers/record.go
+++ b/backend/handlers/record.go
@@ -44,8 +44,6 @@ type RecordResponse struct {
44// @Param Authorization header string true "JWT Token" 44// @Param Authorization header string true "JWT Token"
45// @Param host_demo formData file true "Host Demo" 45// @Param host_demo formData file true "Host Demo"
46// @Param partner_demo formData file false "Partner Demo" 46// @Param partner_demo formData file false "Partner Demo"
47// @Param is_partner_orange formData boolean false "Is Partner Orange"
48// @Param partner_id formData string false "Partner ID"
49// @Success 200 {object} models.Response{data=RecordResponse} 47// @Success 200 {object} models.Response{data=RecordResponse}
50// @Router /maps/{mapid}/record [post] 48// @Router /maps/{mapid}/record [post]
51func CreateRecordWithDemo(c *gin.Context) { 49func CreateRecordWithDemo(c *gin.Context) {
@@ -82,9 +80,9 @@ func CreateRecordWithDemo(c *gin.Context) {
82 c.JSON(http.StatusOK, models.ErrorResponse(err.Error())) 80 c.JSON(http.StatusOK, models.ErrorResponse(err.Error()))
83 return 81 return
84 } 82 }
85 if isCoop && (record.PartnerDemo == nil || record.PartnerID == "") { 83 if isCoop && record.PartnerDemo == nil {
86 CreateLog(user.(models.User).SteamID, LogTypeRecord, LogDescriptionCreateRecordInvalidRequestFail) 84 CreateLog(user.(models.User).SteamID, LogTypeRecord, LogDescriptionCreateRecordInvalidRequestFail)
87 c.JSON(http.StatusOK, models.ErrorResponse("Invalid entry for coop record submission.")) 85 c.JSON(http.StatusOK, models.ErrorResponse("Missing partner demo for coop submission."))
88 return 86 return
89 } 87 }
90 // Demo files 88 // Demo files
@@ -193,30 +191,41 @@ func CreateRecordWithDemo(c *gin.Context) {
193 return 191 return
194 } 192 }
195 convertedHostSteamID := strconv.FormatInt(convertSteamID64(hostSteamID), 10) 193 convertedHostSteamID := strconv.FormatInt(convertSteamID64(hostSteamID), 10)
196 if convertedHostSteamID != user.(models.User).SteamID && convertedHostSteamID != record.PartnerID { 194 // if convertedHostSteamID != user.(models.User).SteamID && convertedHostSteamID != record.PartnerID {
197 deleteFile(srv, hostDemoFileID) 195 // deleteFile(srv, hostDemoFileID)
198 deleteFile(srv, partnerDemoFileID) 196 // deleteFile(srv, partnerDemoFileID)
199 c.JSON(http.StatusOK, models.ErrorResponse(fmt.Sprintf("Host SteamID from demo and request does not match! Check your submission and try again.\nDemo Host SteamID: %s\nRequest Host SteamID: %s", convertedHostSteamID, user.(models.User).SteamID))) 197 // c.JSON(http.StatusOK, models.ErrorResponse(fmt.Sprintf("Host SteamID from demo and request does not match! Check your submission and try again.\nDemo Host SteamID: %s\nRequest Host SteamID: %s", convertedHostSteamID, user.(models.User).SteamID)))
200 return 198 // return
201 } 199 // }
202 convertedPartnerSteamID := strconv.FormatInt(convertSteamID64(partnerSteamID), 10) 200 convertedPartnerSteamID := strconv.FormatInt(convertSteamID64(partnerSteamID), 10)
203 if convertedPartnerSteamID != record.PartnerID && convertedPartnerSteamID != user.(models.User).SteamID { 201 // if convertedPartnerSteamID != record.PartnerID && convertedPartnerSteamID != user.(models.User).SteamID {
202 // deleteFile(srv, hostDemoFileID)
203 // deleteFile(srv, partnerDemoFileID)
204 // c.JSON(http.StatusOK, models.ErrorResponse(fmt.Sprintf("Partner SteamID from demo and request does not match! Check your submission and try again.\nDemo Partner SteamID: %s\nRequest Partner SteamID: %s", convertedPartnerSteamID, record.PartnerID)))
205 // return
206 // }
207 if convertedHostSteamID != user.(models.User).SteamID || convertedPartnerSteamID != user.(models.User).SteamID {
204 deleteFile(srv, hostDemoFileID) 208 deleteFile(srv, hostDemoFileID)
205 deleteFile(srv, partnerDemoFileID) 209 deleteFile(srv, partnerDemoFileID)
206 c.JSON(http.StatusOK, models.ErrorResponse(fmt.Sprintf("Partner SteamID from demo and request does not match! Check your submission and try again.\nDemo Partner SteamID: %s\nRequest Partner SteamID: %s", convertedPartnerSteamID, record.PartnerID))) 210 c.JSON(http.StatusOK, models.ErrorResponse("You are permitted to only upload your own runs!"))
207 return 211 return
208 } 212 }
209 var verifyPartnerSteamID string 213 var checkPartnerSteamID, verifyPartnerSteamID string
210 database.DB.QueryRow("SELECT steam_id FROM users WHERE steam_id = $1", record.PartnerID).Scan(&verifyPartnerSteamID) 214 if convertedHostSteamID == user.(models.User).SteamID {
211 if verifyPartnerSteamID != record.PartnerID { 215 checkPartnerSteamID = convertedPartnerSteamID
216 } else {
217 checkPartnerSteamID = convertedHostSteamID
218 }
219 database.DB.QueryRow("SELECT steam_id FROM users WHERE steam_id = $1", checkPartnerSteamID).Scan(&verifyPartnerSteamID)
220 if verifyPartnerSteamID != checkPartnerSteamID {
212 deleteFile(srv, hostDemoFileID) 221 deleteFile(srv, hostDemoFileID)
213 deleteFile(srv, partnerDemoFileID) 222 deleteFile(srv, partnerDemoFileID)
214 c.JSON(http.StatusOK, models.ErrorResponse("Given partner SteamID does not match an account on LPHUB.")) 223 c.JSON(http.StatusOK, models.ErrorResponse("Partner SteamID does not match an account on LPHUB."))
215 return 224 return
216 } 225 }
217 sql := `INSERT INTO records_mp(map_id,score_count,score_time,host_id,partner_id,host_demo_id,partner_demo_id) 226 sql := `INSERT INTO records_mp(map_id,score_count,score_time,host_id,partner_id,host_demo_id,partner_demo_id)
218 VALUES($1, $2, $3, $4, $5, $6, $7)` 227 VALUES($1, $2, $3, $4, $5, $6, $7)`
219 _, err := tx.Exec(sql, mapID, hostDemoScoreCount, hostDemoScoreTime, strconv.FormatInt(convertSteamID64(hostSteamID), 10), strconv.FormatInt(convertSteamID64(partnerSteamID), 10), hostDemoUUID, partnerDemoUUID) 228 _, err := tx.Exec(sql, mapID, hostDemoScoreCount, hostDemoScoreTime, convertedHostSteamID, convertedPartnerSteamID, hostDemoUUID, partnerDemoUUID)
220 if err != nil { 229 if err != nil {
221 deleteFile(srv, hostDemoFileID) 230 deleteFile(srv, hostDemoFileID)
222 deleteFile(srv, partnerDemoFileID) 231 deleteFile(srv, partnerDemoFileID)