diff options
| author | Arda Serdar Pektezol <1669855+pektezol@users.noreply.github.com> | 2024-10-22 00:46:41 +0300 |
|---|---|---|
| committer | Arda Serdar Pektezol <1669855+pektezol@users.noreply.github.com> | 2024-10-22 00:46:41 +0300 |
| commit | c2ece18ce537f709cc38b33abaf07b27aaaf90dd (patch) | |
| tree | 044bcb67f0dfe2ddf5b5476ecbcb98fa5865e985 | |
| parent | backend: record get is_coop from db instead of hardcoded idiot (diff) | |
| download | lphub-c2ece18ce537f709cc38b33abaf07b27aaaf90dd.tar.gz lphub-c2ece18ce537f709cc38b33abaf07b27aaaf90dd.tar.bz2 lphub-c2ece18ce537f709cc38b33abaf07b27aaaf90dd.zip | |
backend: no need for partner_id for record submission
| -rw-r--r-- | backend/docs/docs.go | 16 | ||||
| -rw-r--r-- | backend/docs/swagger.json | 16 | ||||
| -rw-r--r-- | backend/docs/swagger.yaml | 12 | ||||
| -rw-r--r-- | backend/handlers/record.go | 43 |
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: | |||
| 548 | host: lp.ardapektezol.com | 548 | host: lp.ardapektezol.com |
| 549 | info: | 549 | info: |
| 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" |
| 557 | paths: | 557 | paths: |
| 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] |
| 51 | func CreateRecordWithDemo(c *gin.Context) { | 49 | func 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) |