* [skip ci] Update the localization files
* Make website work with languages without an associated CultureInfo
---------
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
Co-authored-by: Slendy <josh@slendy.pw>
* Implement read-only mode
* Use localized string under default language for announce text
* Redirect to user page rather than returning blank 400
* Protect call to `ParseBase64Image`
* Add protections to SlotSettingsPage and nitpick format
* Display the latest announcement (if any) on the landing page
* Fix a kokoism
Accidentally tried to use markdown within the landing page... I'm rather smart aren't I
* Prevent possible XSS
* Separate truncated announcement text and link with "..."
* Apply suggestion from code review
* Add read-only check to /postComment in slot page controller
* Fix inconsistent tabbing
* Initial SDK and dependency bumps
* Bump Pomelo.EntityFrameworkCore.MySql to 8.0.0-beta.2
Should fix the MissingMethodException error in unit tests
* Update CI workflow to use .NET 8
* Apply suggested change from compile time warnings
* Fix digest tests
* Bump dependencies once more
* Update xunit
* Remove obsolete ISystemClock from TokenAuthHandler
* Update dependencies
* Add digest debug preprocessors back
* Maybe don't break #966
* Bump EF Driver and update various NET7 references
* Fix warnings in digest middleware tests
---------
Co-authored-by: Slendy <josh@slendy.pw>
* Implement notifications logic, basic calls, and admin command
* Remove unnecessary code
* Add ability to stack notifications and return manually created XML
* Remove test that is no longer needed and is causing failures
* Apply suggestions from code review
* Merge notifications with existing announcements page
* Order notifications by descending ID instead of ascending ID
* Move notification send task to moderation options under user
Also restyles the buttons to line up next to each other like in the slot pages.
* Style/position fixes with granted slots/notification partials
* Fix incorrect form POST route
* Prevent notification text area from breaking out of container
* Actually use builder result for notification text
* Minor restructuring of the notifications page
* Add notifications for team picks, publish issues, and moderation
* Mark notifications as dismissed instead of deleting them
* Add XMLdoc to SendNotification method
* Fix incorrect URL in announcements webhook
* Remove unnecessary inline style from granted slots partial
* Apply suggestions from code review
* Apply first batch of suggestions from code review
* Apply second batch of suggestions from code review
* Change notification icon depending on if user has unread notifications
* Show unread notification icon if there is an announcement posted
* Remove "potential" wording from definitive fixes in error docs
* Remove "Error code:" from publish notifications
* Send notification if user tries to unlock a mod-locked level
* Change notification timestamp format to include date
* Add clarification to level mod-lock notification message
* Change team pick notifications to moderation notifications
Apparently the MMPick type doesn't show a visual notification.
* Apply suggestions from code review
* Add obsolete to notification types that display nothing in-game
* Remove unused imports and remove icon switch case in favor of bell icon
* Last minute fixes
* Send notification upon earth wipe and clarify moderation case notifications
* Add check for empty/too long notification text
* Simplify website rank badges to use semantic classes
* Fix ambiguity between partial display types
* Add profile vanity tags and needed migration
* Make form field read only to non-administrators
* Display lock icon if user is not admin to minimize confusion
* Also display lock icon for username field since it's readonly
* Fix up naming consistency issues and edit migration accordingly
* Apply suggestions from code review
* Add space between placeholder property and ternary operator
* Create interactions management page and basic GET logic
* Fix client side query and add blocked count as well as comments nitpick
* Implement basic backend logic for interactions management
* Remove errant null/whitespace checks and add border to blocked users partials
* Implement user page's respect to profile privacy settings
* Fix issue where user can't view their own profile if privacy settings are tightened
* Fix other issues with profile access
* Remove excess conditional expression from PSN privtype check
* Check if access is allowed within request handler and hide bio/RA if private
* Fix PSN privacy level check
* Display private users in search and add base UI class to level lock icon
* Rename everything from interactions to privacy for clarity
* Dagg requested an eyeball
Co-authored-by: vilijur <69403080+vilijur@users.noreply.github.com>
* Clarify profile settings page title
* Implement level privacy settings
* Formatting nitpicks within UserPrivacyPage
* Add discard changes buttons
* Apply suggestion from code review
* Consolidate privacy settings areas together
* Grammar nitpick for comments enable/disable dropdown
* Remove un-needed blue UI segment
* Allow mods to issue disable comments case regardless of privacy settings
Also addresses a few frontend and backend nitpicks left unaddressed by previous commits
* Remove limiting AND operator expression
* Grammar clarity on disable comments button
* Add missing hidden button divider under Wipe Earth Decorations
* No eyeball -m88youngling
Removes eyeball from actual privacy settings page to match styling
* Use long-text description for privacy type dropdowns
* Use long-text description for comments toggle dropdown
* Implement slot page privacy
* Grammar nitpicks with Daggintosh
* Daggintosh grammar review second edition
* Once again put request handler arguments on one line
* Rename LevelsPrivate variable to SlotsPrivate for internal consistency
* Fix issue with PSN slot privacy type
* Un-break comments
* Apply most of the suggestions from code review
* Correct form dropdown values for privacy types
* Potentially fix broken privacy type extension
* Slightly rework access calculation extension method
* Fix issues with if statements
* Apply suggestions from code review
* Make everything translatable
---------
Co-authored-by: vilijur <69403080+vilijur@users.noreply.github.com>
* Fix null case bug in BannedUserPage and properly add no expiration text
* Correct maximum expiration hour to 23 (uses 24-hour)
* Improve wording for do not expire string
* Handle empty case reason string
* Move list to it's own div per HTML spec
* Move maximum expiration DateTime to the model
* Correct linq statement chaining style
* Use lambda operator instead of explicit accessor for MaximumExpiration
* Improve game server announce by using StringBuilder
* Implement web announcements (condensed commit)
* Implement discord webhook support
* Display a separate message if there are no announcements
* Fix announcement string unit tests
* Fix header admin button unit test
* Clarify announcement id variable name
* Increase webhook truncation limit to 250 chars
* Convert announce text to string when returning 200
* Fix announcement unit tests ... again
* Make announcement text input a textarea rather than a simple input
* Fix styling discrepancy
* Clarify submission button
* Improve announcement webhook & set default textarea row amount
* Disallow moderators/administrators from issuing cases against each other
* Resolve suggestions from reviewers
* Only request user from db if id is valid
[skip ci] Update the localization files
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
If this breaks something, blame koko for convincing me to merge this
* Add proper ban page upon logging in
* Remove two extra line break tags that don't need to be there
* Fix timestamp formatting
* Properly display timestamps in correct timezone
* Fix formatting issues with ban page
* Remove extra parenthesis which would be rendered on-page
* Add to redirect middleware to prevent navigating to other pages
* Small nitpick, renaming UserBannedPage to BannedUserPage
* Resolve nitpicks from reviewers
* Remove un-necessary log message in LoginForm
* Fix ban reason translatable string argument
* Word choice nitpick ("Ban Created" -> "Ban Issued")
* Final adjustments and nitpicks, visual and grammatical
* Resolve requested changes from reviewers
* NET 7.0 support
* Bump Pomelo MySql to support EF7
* Its net7.0 time
* Trying to resolve dependencies by hand
* Fix .NET 7 warnings
* Bump InfluxDB version
* Fix bad null handling
* Initial work for TOTP 2FA
* Fix bug in 2FA code script
* Add translations for two factor and /disable2fa
* Fix compilation error
* Add TwoFactorLoginPage
* Add two factor login process
* Little bit of backup code work
* Finish two factor
* Fix unit tests
* ??? goofy ahh code
* Use SHA-256 instead of SHA-512
* I guess SHA-256 doesn't work either
* Fix comments in Base32 helper
* Move QRCoder package to website
* Add name to endregion comment in css
* Fix bug with redirects
* Implement login with email
* Add confirm age checkbox to register page
* Fix registration unit tests
* Fix registration unit tests for real this time
Co-authored-by: Dagg <32235163+daggintosh@users.noreply.github.com>
* 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
* Add LBP1 tags, more strict resource checking, and more.
* Fix unit tests
* Add more length checking to dependency parser
* Online editor problems
* Fix tests pt 2
* Self code review and fixed digest bugs
* Don't add content length if it was already set
* Fix status endpoint
* Fix review bug and simplify review serialization
* Fix a typo in review serialization
* Remove duplicated code and fix search
* Remove duplicate database call