Commit graph

55 commits

Author SHA1 Message Date
Slendy
c34b7f3e79
Revert website Forbid and Unauthorized method usage to StatusCode
This is because by default ASP.NET expects an authentication scheme to be registered when using these methods.
2023-03-30 19:23:11 -05:00
Josh
50d1d9c7e5
Fix doubly sanitized strings (#727)
* Add migration to de-sanitize database strings

* Remove SanitizationHelper functions related to XML sanitization

* Remove sanitization usage from website

* Implement suggested changes
2023-03-30 23:03:08 +00:00
Slendy
a603cdb002
Use Unauthorized instead of Forbid on Website & Api 2023-03-29 21:44:16 -05:00
Josh
329ab66043
Refactor serialization system (#702)
* Initial work for serialization refactor

* Experiment with new naming conventions

* Mostly implement user and slot serialization.
Still needs to be fine tuned to match original implementation
Many things are left in a broken state like website features/api endpoints/lbp3 categories

* Fix release building

* Migrate scores, reviews, and more to new serialization system.
Many things are still broken but progress is steadily being made

* Fix Api responses and migrate serialization for most types

* Make serialization better and fix bugs
Fix recursive PrepareSerialization when recursive item is set during root item's PrepareSerialization, items, should be properly indexed in order but it's only tested to 1 level of recursion

* Fix review serialization

* Fix user serialization producing malformed SQL query

* Remove DefaultIfEmpty query

* MariaDB doesn't like double nested queries

* Fix LBP1 tag counter

* Implement lbp3 categories and add better deserialization handling

* Implement expression tree caching to speed up reflection and write new serializer tests

* Remove Game column from UserEntity and rename DatabaseContextModelSnapshot.cs back to DatabaseModelSnapshot.cs

* Make UserEntity username not required

* Fix recursive serialization of lists and add relevant unit tests

* Actually commit the migration

* Fix LocationTests to use new deserialization class

* Fix comments not serializing the right author username

* Replace all occurrences of StatusCode with their respective ASP.NET named result
instead of StatusCode(403) everything is now in the form of Forbid()

* Fix SlotBase.ConvertToEntity and LocationTests

* Fix compilation error

* Give Location a default value in GameUserSlot and GameUser

* Reimplement stubbed website functions

* Convert grief reports to new serialization system

* Update DatabaseModelSnapshot and bump dotnet tool version

* Remove unused directives

* Fix broken type reference

* Fix rated comments on website

* Don't include banned users in website comments

* Optimize score submission

* Fix slot id calculating in in-game comment posting

* Move serialization interfaces to types folder and add more documentation

* Allow uploading of versus scores
2023-03-28 00:39:54 +00:00
Josh
b2a1d3958f
Allow head requests to status endpoints (#717) 2023-03-24 00:31:56 +00:00
Josh
35ea2682b9
Replace Location table with packed 64-bit int (#679)
* Replace Location table with packed 64 bit int

* Remove double Include and fix Slot documentation

* Fix compilation errors from merge

* Fix namespaces and add expected values to unit tests
2023-02-21 14:53:38 -06:00
Josh
64b95e807d
Refactor Database class (#616)
Refactor Database into DatabaseContext
Moved into separate folder so it actually has a namespace instead sitting in the root
2023-02-15 23:54:30 -06:00
Josh
f1c5ad4002
Major refactor and reorganization of types (#652)
* Start of reorganization and cleanup

* Remove duplicate title id

* Refactor types

* Fix Release building

* Move classes in /Types to a Types namespace

* Fix compilation error (RoomVisualizerPage strikes again)

* Fix bugs created from auto merge

* Fix auto-merge compilation error

* Changes from review/fix failed merge
2023-02-13 22:02:58 -06:00
Zaprit
3fcfaaf5cc
Profile Blocking (#662)
* Added blocked user DB object

* Added user blocking functions

* Fixed DB Migration

* Updated DB Functions

* Added blocked user support to website

* Fixed DB Migration

* I forgot to save 🫠

* More migration pain

* Fixed Unblock label

* Update ProjectLighthouse.Servers.Website/Pages/UserPage.cshtml

sounds cool

Co-authored-by: koko <68549366+sudokoko@users.noreply.github.com>

* Removed unnecessary imports in database

* Removed unnecessary  imports in UserPage.cshtml.cs

* Made comments in-game respect blocked users

* Update ProjectLighthouse/Database.cs

Co-authored-by: Josh <josh@slendy.pw>

* Update ProjectLighthouse/Database.cs

Co-authored-by: Josh <josh@slendy.pw>

* DB Code cleanup

* Cleaned up userPage block detection code

* Get only the creator id in lieu of the whole object

* Fixed null condition when not logged in

* Fixed null condition when not logged in

* Potential DB Optimisation

* Apply suggestions from code review

Co-authored-by: Josh <josh@slendy.pw>

* Fix errors and null warning

* Use explicit type in lieu of var

* changed block icons

* Optimize blocked user check and save changes when unblocking

---------

Co-authored-by: koko <68549366+sudokoko@users.noreply.github.com>
Co-authored-by: Josh <josh@slendy.pw>
2023-02-11 08:25:06 +00:00
Slendy
6cec706792
Fix logging for posting website comments 2023-02-05 21:26:50 -06:00
Josh
4559d26a54
Fix bug where users can't be deleted (#648)
* Add username to mod cases if user is deleted

* Add timezone package to docker container

* Remove extra space in migration sql statement

* Changes from self-review
2023-01-29 22:10:36 -06:00
Josh
ace3678da7
Add some resource tests and other small changes (#638)
* Cleanup custom icon resources and add resource tests

* Don't delete old custom icons
2023-01-20 00:18:57 -06:00
HomicidalChicken
326b9e5529
Move filter to separate config and add more scanning (#603)
* Create .gitattributes

Added a .gitattributes file that excludes the local customWordFilter.txt file from merged updates, allowing server operators to maintain their own word filter list and not have it overwritten.

* Update .gitignore

Added chatCensoredList to gitignore

* Update .gitignore

* Dynamic censor list file changes

Removed .gitattributes file, attempted to make chatCensoredList.txt into a dynamic file loaded at runtime instead.

* Added additional censorship coverage

Censorship now covers:
Level titles
Level descriptions
Reviews
Comments

* Delete chatCensoredList.txt

* Update .gitignore

Co-authored-by: Josh <josh@slendy.pw>

* Update filter verbiage

* Update ProjectLighthouse.Servers.GameServer/Controllers/CommentController.cs

Co-authored-by: Josh <josh@slendy.pw>

* Update ProjectLighthouse/Helpers/CensorHelper.cs

Co-authored-by: Josh <josh@slendy.pw>

* Add CensorConfiguration and add more filters

Co-authored-by: Josh <josh@slendy.pw>
2023-01-19 21:24:45 -06:00
Josh
19ea44e0e2
Rework login and registration systems (#600)
* Initial work for verifying login ticket signatures

* Add candidate psn public key

* Add candidate psn public key and fix nuget packages

* Finalize npticket changes

* Add support for ticket version 3.0

* Rework login system to link platform accounts instead of using ip addresses

* Make linked accounts green instead of blue

* Fix api building

* Fix unit tests

* Actually fix unit tests

* Set unit test user's linked platform

* Why was this the wrong default value?

* Fix username change code

* Make TicketHash hash the entire ticket instead of just the serial

* Send password setup email when user sets their email for the first time

* Changes from self review
2022-12-26 01:03:14 -08:00
Slendy
1b69f6a0e0
Fixup website content deletion permissions 2022-12-19 17:32:37 -06:00
Josh
f4cad21061
Website UI redesign and QOL changes (#601)
* Initial support for leaderboards and some refactoring

* Start of UI redesign

* Finish slot and user redesign, added deletion of comments, reviews, scores, and photos

* Remove leftover debug print

* Fix bug in permission check

* Simplify sidebar code and add hearted and queued levels

* Fix navbar scrolling on mobile and refactor SlotCardPartial
2022-12-19 15:20:49 -08:00
Slendy
c6ddeaf154
Allow moderators to dismiss reports 2022-11-17 16:14:03 -06:00
Josh
b3a00da554
Refactor deserialization and authentication (#550)
* Refactor deserialization and more

* Refactor authentication flow

* Fix unit tests

* Make deserialization better
2022-11-10 21:14:16 -06:00
A My Sour
84e2914e40
Add webhook message when a new Team Pick is added (#528)
* Add webhook message when a new Team Pick is added

* Update ProjectLighthouse.Servers.Website/Controllers/Admin/ModerationSlotController.cs

Co-authored-by: Josh <josh@slendy.pw>

* Update ModerationSlotController.cs

* Include ServerConfiguration class

Co-authored-by: Alex_Sour <52638772+Alex-Sour@users.noreply.github.com>
Co-authored-by: Josh <josh@slendy.pw>
2022-11-05 15:35:10 -05:00
Slendy
2cf2e6622a
Prevent directory traversal attacks 2022-09-22 17:11:17 -05:00
Josh
f6a7fe6283
User settings, level settings, language and timezone selection and more. (#471)
* Initial work for user settings page

* Finish user setting and slot setting pages

* Don't show slot upload date on home page and fix team pick redirection

* Fix upload image button alignment on mobile

* Fix image upload on iPhone

* Remove unused css and add selected button color

* Fix login email check and bump ChromeDriver to 105

* Remove duplicated code and allow users to leave fields empty

* Add unpublish button on level settings and move settings button position

* Don't show edit button on mini card

* Self review bug fixes and users can no longer use an in-use email
2022-09-17 14:02:46 -05:00
Josh
d23a264b8a
Lots of bug fixes and performance improvements (#410)
* Many bug fixes and performance enhancements

* Fix warnings and speed up photos with me

* Finish refactoring user serialization

* Finish refactoring user serialization
Use GameTokens instead of User when possible
Prevent negative page sizes

* Fix debug compilation

* Add gzip compression to example nginx config

* Remove deflate changes

* Add UsernameFromWebToken

Co-authored-by: Jayden <jvyden@jvyden.xyz>
2022-08-13 00:56:17 +00:00
jvyden
ef6acbb210
Add ability to hide levels 2022-08-05 21:44:17 -04:00
jvyden
842e161d7e
Add ability to ban users with a case 2022-08-05 21:12:10 -04:00
jvyden
4718970f6b
Add ability for cases to perform actions 2022-08-05 20:32:35 -04:00
jvyden
96e8c7f71e
Add support for dismissing cases 2022-08-05 19:07:43 -04:00
jvyden
b3d91fd470
Reduce CaseTypes to those that can be temporary 2022-08-05 17:18:43 -04:00
jvyden
b6da930e20
Merge main into mod-panel 2022-08-05 17:02:19 -04:00
Josh
add83a32a8
Prevent grief report deletion from removing slot rootLevel (#395) 2022-08-02 09:10:53 -04:00
jvyden
99f7dadb21
Add endpoints for status monitoring 2022-08-01 01:20:05 -04:00
jvyden
523c86f98f
Fix SetUserPermissionLevel route 2022-07-27 18:56:48 -04:00
jvyden
8ecca5d358
Add case for planet deletion 2022-07-27 18:52:47 -04:00
jvyden
7ba50e26f5
Add mod notes to ban cases, improve case display 2022-07-27 17:54:32 -04:00
jvyden
cdcc03fdc1
Add case generator for bans, allow mods to ban 2022-07-27 17:34:59 -04:00
jvyden
1eede416d4
Add case generation 2022-07-27 17:19:49 -04:00
jvyden
ea25751e71
Merge branch 'main' into mod-panel 2022-07-26 19:31:02 -04:00
jvyden
be592bbacb
Eliminate duplicate rooms 2022-07-25 19:57:13 -04:00
Josh
3c8f195740
Added login redirection, level icon background and fixed bugs (#371) 2022-07-25 21:53:43 +00:00
jvyden
f40c6ce894
Merge branch 'main' into mod-panel 2022-06-17 19:55:15 -04:00
jvyden
a6f077725a
Rename /modPanel to /moderation 2022-06-17 19:50:32 -04:00
jvyden
eb21c7042f
Only allow a single approved IP address 2022-06-11 18:43:30 -04:00
jvyden
6c6a7f01f9
Add moderation cases log page 2022-06-10 21:21:27 -04:00
jvyden
693f0a3855
Add basic mod panel 2022-06-10 18:38:11 -04:00
jvyden
1037a6eddb
Add ability to change user's permissions from admin panel user list 2022-06-10 17:02:02 -04:00
jvyden
b2e6f25265
Merge main into mod-panel 2022-06-10 04:01:06 -04:00
jvyden
615b57122e
Lock RoomHelper.Rooms properly 2022-06-10 02:42:38 -04:00
jvyden
8301418085
Use permission level model for permissions
This is better. Because having 20 fucking columns for permissions is STUPID.
2022-05-22 15:51:02 -04:00
jvyden
33f344f200
Add admin button to wipe a user's earth decorations 2022-05-20 22:01:54 -04:00
jvyden
630b38e7bb
Make logger a non-static class 2022-05-15 16:57:50 -04:00
jvyden
c345eeebb9
Massive organization of classes and namespaces 2022-05-15 16:45:00 -04:00