* Add web authorization permission based on groups
* Access and parts of website are limited by permissions
* Add group management in /manage page
* Higher level permissions grant lower level permissions similar to Sponge
* Add command /plan setgroup, which uses plan.setgroup.other permission
* Add command /plan groups, which uses plan.setgroup.other permission
* Add more navigation based on permissions
* API modifications
* User#hasPermission now returns true if user has parent permission in the tree
* ResolverService#registerPermissions and ResolverService#registerPermission methods for adding new permissions
* Update locale with new lines
* Various unrelated fixes to CSS and code
Affects issues:
- Close#1623
* Component DataExtension API
* Finish up component extension data, add react-mcjsonchat library to the react dashboard in preparation for the rewrite
* Update Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/results/ExtensionComponentData.java
* Update Plan/common/src/test/java/com/djrapitops/plan/storage/database/queries/ExtensionsDatabaseTest.java
* Update Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/providers/gathering/DataValueGatherer.java
Co-authored-by: Aurora Lahtela <24460436+AuroraLS3@users.noreply.github.com>
- Refactored player online listeners to move common. often changed logic to common package
- Changed method fabric uses to get join address to use the client handshake packet which has the address
- Added command `/plan db removejoinaddresses {server}` to allow removing invalid join address data
- Changed build pipeline to always build jars even if tests fail
- Disabled one flaky test
Affects issues:
- Closed#817
- Fixed #2526
There was one error code for MySQL that used wrong message context to detect the missing user_id properly.
Wrote tests for all the extra functionality ensuring no exceptions occur.
Affects issues:
- Fixed#2361
- Fixed#2343
* Optimized network ping table query
* Removed icon id selection subqueries
- Take the icon ID into memory when the icons are stored
* Fix typos in the optimized ping table query
* Optimize server ping table query
* Attempt to optimize /v1/servers tps data query
* Optimize ping and geolocations tables uuid -> user_id foreign key
* Prevent Plan from crashing if patching takes too long
- HikariCP auto commit was true for some reason even though all transactions have commit mechanism built-in.
- The setting was reset during connection recreation and that could cause an index out of bounds error.
* Reduce try-nesting in ExecStatement
* Use user_id and server_id instead of uuid for plan_world_times table
* Use user_id and server_id instead of uuid for plan_sessions and plan_user_info table
* Fix more issues and test queries used by Query Filters
* Use deferRender for data tables to load data into the table faster
* Swap uuids to user ids for query page filters
Fixes an issue where SQL is too big to execute
Affects issues:
- #2196
- Table rows are now formatted with chat colors by default if § character is in them.
- Hex color codes §x§f§f§f§f§f§f are now supported by chat color to html translator.
Affects issues:
- Fix#2220
- Ping gathering now uses a map of timestamps
- Removes a task that waited for ping data to be reliable (one task / join)
- Cookie expiration now uses a map of timestamps
- Removes a task that waited for cookie to expire (one task / login cookie)
Affects issues:
- Possibly fixed#1984
- values_for differentiates between different table server and player tables
It is an INT field because Groups might get their tables at some point.
0 for player
1 for server
(2 for group)
Affects issues:
- Fixed#1722
Also:
- Transactions now execute as much as possible on the same connection instead
of getting a new connection
- More shutdown messages when waiting for things (Like SQLite queries, or db transactions).
Affects issues:
- Possibly fixed#1814
Applied some thought to how this stuff should work.
- nulls now possible in the column when value is not available
- Called "Join addresses" instead of hostnames
- Remove bogus data with a patch
- Proper hostname method for spigot
- Removed method calls from nukkit since there was nothing that sounded
proper
Affects:
- Close#1798 (Copied all code over)
- Split Session into ActiveSession and FinishedSession, replaced their usage
- Replaced UUID with ServerUUID when the data type
Affects issues:
- Close#1746
Replaced Abstract Plugin Framework with Platform Abstraction Layer
Large amount of changes due to removal of features from the library,
and change of the way the abstraction is achieved.
Removes features from Plan:
Removed debug logging (Considered useless when debugging issues)
Removed /debug page (Considered useless when debugging issues)
Removed enable timing (Benchmarking utility was removed from the library)
- Added a field is_proxy to plan_servers
- Patch to populate the new field
- Field is set to true when proxy enables to fix any broken data
- Allows any name for a proxy
- Updated server save queries
- Changed isProxy method in Server.java to match the change
- Changed query for fetching the proxy server
Affects issues:
- Close#1678
- Redundancies:
- MySQLDB: Removed null check
- DeathEventListener: Removed warning suppression
- several Test classes: Removed public class identifier
- Unused private fields
- Constructors of abstract classes should be protected x31
- Added missing Parameterized types x2
- "throws" declerations for runtime EnableException
- Prevented Boxed Boolean from causing NPE in the future x15
- Renamed lesser scope variables that were hiding variables x12
- Some smaller ones that I was too tired to write down
* Improved Extension errors
* Removed scary reflective operation exception
* Additional context to SQL Exceptions
* Added error context to Listeners
* Added error context to most error logging places
* Ignore cyclomatic complexity of DBOpException
Adds context to almost all error logging situations, except those where it is unknown, or to commands that are being refactored on another branch.
Close#1245