61 Commits

Author SHA1 Message Date
ljacqu
af6bee59bd Merge branch 'master' of https://github.com/AuthMe/AuthMeReloaded into 1141-optional-additional-2fa-auth
# Conflicts:
#	src/main/java/fr/xephi/authme/datasource/MySQL.java
2018-03-19 22:32:16 +01:00
ljacqu
1a53cd11b2 #829 Move CommandSender / name to first argument to avoid confusion with varargs
- Overloaded method with (String, String...) as args was problematic as it could be confusing on its own and also confusing with the (CommandSender, String...) flavor
2018-03-10 16:58:30 +01:00
Maxetto
bc4cb5046d Fix yet another build 2018-03-07 19:29:24 +01:00
ljacqu
9954c82cb6 #1141 Add TOTP key field to database and PlayerAuth
- Add new field for storing TOTP key
- Implement data source methods for manipulation of its value
2018-03-05 19:50:58 +01:00
Maxetto
00de15016a Follow remarks
#1509
2018-03-05 19:38:24 +01:00
ljacqu
23c246748a #930 Register captcha: avoid circular dependency by handling limbo message in captcha command
- Set limbo message in captcha command (as is done for login captcha)
- Add clarifying comments to captcha command
- Remove classes handling circular dependencies
2018-01-06 19:04:03 +01:00
ljacqu
84b376d2a5 #930 Change captcha storage to change code internally upon failure
- Within CaptchaStorage#checkCode, a player's captcha code is overridden with a new one on failure or cleared on success
- Fixes inconsistencies in the retrieval / regeneration of codes
2018-01-06 02:31:26 +01:00
ljacqu
180bbbf0be #930 Refactor captcha managers to have a crude captcha storage class instead of inheritance
- Remove abstract captcha manager in favor of a primitive captcha code storage (composition over inheritance)
- Supply player when checking captcha code for further usage (fixes open point from previous commit)
2018-01-05 01:26:25 +01:00
ljacqu
7cf3f6d77b #930 Registration captcha: update message shown to player on failed captcha
- Show message with new captcha code when a captcha has failed
- Requires implementation of circular dependency handler (initial draft)
2018-01-05 00:17:22 +01:00
ljacqu
1a60036592 #930 Extract common captcha functionality into abstract superclass
- Create AbstractCaptchaManager
- Add tests
2017-12-01 23:40:20 +01:00
ljacqu
33904c09e9 #930 Create registration captcha manager
- Introduce registration captcha manager, rename login captcha manager accordingly
- Integrate reg. captcha manager into /register command

Open points:
- Refactor common captcha functionality into abstract superclass
- If captcha before /register necessary, show appropriate message to player immediately
- Unit tests
2017-12-01 21:12:35 +01:00
ljacqu
67a6a42dfe Minor Javadoc fix: one "yet" is enough :) 2017-12-01 20:33:33 +01:00
ljacqu
7932c1bf90 Update to injector 1.0
- Includes Factory and SingletonStore so our custom implementation is removed
2017-11-25 21:27:18 +01:00
HexelDev
ba65633182 Email verification code (#1382)
* Base verification code implementation, must define command, manager, events
* VerificationManager, verification command and messages, handled some sensible commands, configuration values
* Improved manager and sensible commands trigger
* Updated messages
* Updated verification code manager, fixed tests
* Switched to a permission based command
* Verification manager and command improved and added tests
* Edited messages
2017-10-28 12:23:14 +02:00
Gabriele C
39647013b2 Cleanup 2017-10-23 08:36:49 +02:00
ljacqu
1651a61063 #792 #814 Implement SQLite migration, allow last IP to be nullable in MySQL
- Old SQLite setups have the last IP column as NOT NULL but without a default value. With the new concept (where we don't set a last IP on player registration) it fails.
  - Create an /authme debug child that allows to migrate SQLite (tricky because SQLite does not support dropping or modifying columns)
  - Allow last IP column to be NOT NULL in MySQL as well (extend MySQL /authme debug child)
- Add TODO comments with follow-up issue to extend our commands with new registration IP field
2017-10-21 10:45:48 +02:00
ljacqu
1df5308e56 #792 #814 Create command to remove NOT NULL constraints
- Create command under /authme debug that allows to change the 'nullable' status of MySQL columns (currently last date and email only)
   - We need to offer a default value for forum integrations that have a NOT NULL email column. Offering a command avoids us from force-migrating existing databases while still offering migrations in both directions
- Change in default value handling: lack of values are not handled by setting default values to the PlayerAuth anymore, and reading a default value from the database into a PlayerAuth will be translated into null by the PlayerAuth builder
- When a new database is created, email and lastlogin are now nullable and lack a default a value

Open points:
- Finish MySqlDefaultChangerTest
- Revise purging logic (#792)
- Allow to have more columns nullable (#814)
2017-10-15 12:56:13 +02:00
ljacqu
52d6476058 #792 Add columns for registration IP and registration date
- Add columns for reg date and IP
- Rename "ip" to "last IP"
2017-10-14 17:37:34 +02:00
ljacqu
5b1d8c6429 Use String#replace over String#replaceAll (the latter uses regex) 2017-10-08 17:32:05 +02:00
Gabriele C
3ea250cb10 Implement #794 2017-09-30 19:57:27 +02:00
Gabriele C
e59df84a84 Fix session system (#1337)
* Old session system

* Actually check if sessions are enabled

* Cleanup

* Don't use cached isLogged value
2017-09-30 15:15:25 +02:00
sgdc3
f45092bdd2 Fix limbo player location on join 2017-09-30 15:13:35 +02:00
ljacqu
f88350b06d Fix Checkstyle violations
- Mostly missing Javadoc on large methods
- CommandInitializer: split command building method into multiple methods
2017-07-16 23:07:13 +02:00
ljacqu
e1826c75c8 #1280 Add NOTHING as possible flight restore type 2017-07-10 21:45:05 +02:00
ljacqu
276ce80edb #1276 Fix wrong multiplication of reset threshold 2017-07-09 14:31:17 +02:00
Gabriele C
d8e7203bb0 Revert "Always revoke limbo states synchronously #1222"
This reverts commit 7bb701b126ab039b598444d69abeaa3e5f5e2326.
2017-07-08 22:45:48 +02:00
DNx
7bb701b126 Always revoke limbo states synchronously #1222 2017-07-07 06:06:01 +07:00
ljacqu
ff99b63385 #1265 Limbo: fallback to old "group" during deserialization, favor old limbo's groups over new limbo's 2017-07-02 10:55:51 +02:00
Gabriele C
c758e15cd7 Store the entire player's list of groups instead of primary group 2017-07-01 19:18:42 +02:00
Gabriele C
00699ed7fb Use guava 21, add 1.12 support 2017-05-29 23:40:44 +02:00
ljacqu
1f8307c8f6 Fix minor checkstyle issues
- Add JavaDoc where checkstyle expects it
- Fix line too long issues
- ...
2017-05-07 11:59:01 +02:00
ljacqu
e0e4cd112d #761 Restore permission group in sync with limbo players
- Couple AuthGroupHandler closer to the LimboService: whenever a limbo player is restored, the auth group should be restored as well. This fixes some consistency issues.
- Move AuthGroupHandler into limbo package and make it package-private
- Change permission handler to skip any empty groups (prevents odd command output e.g. for BukkitPermissions)
2017-04-29 22:37:34 +02:00
ljacqu
b7c35cb3a7 Merge branch 'master' of https://github.com/AuthMe/AuthMeReloaded into explicit-getters-from-db 2017-04-29 08:19:30 +02:00
ljacqu
d0dbc14358 Minor - fix some small todo's 2017-04-23 11:02:43 +02:00
ljacqu
e56a3c0ab6 #815 Save yaw & pitch for last login in SQL data sources 2017-04-22 13:30:03 +02:00
ljacqu
2f7ebc0ecb Remove static PlayerCache#getInstance 2017-04-18 21:57:20 +02:00
ljacqu
2ecdc57277 #1147 Rename limbo segment configurations / remove inaccurate comments 2017-03-28 21:49:28 +02:00
ljacqu
adb007108d #1147 Drop SingleFilePersistenceHandler in favor of DistributedFilesPersistenceHandler
- Remove SingleFilePersistenceHandler: DistributedFilesPersistenceHandler with segment size 1 can be used instead
- Rename  SegmentFilesPersistenceHolder to DistributedFilesPersistenceHandler
- Rename SeparateFilePersistenceHandler to IndividualFilesPersistenceHandler to match LimboPersistenceType entry
- Add link to limbo page on Wiki in the settings
2017-03-28 21:42:01 +02:00
ljacqu
2f90a45f43 #1036 Remove 'allowSpeed' option
- Option is no longer needed as the plugin user can configure how/if the speeds should be restored now
2017-03-24 21:26:34 +01:00
ljacqu
84acc4557a #1125 Limbo persistence: convert old segments, add tests
- On startup / reload the playerdata folder is scanned for old segment files, whose data is migrated before they are deleted
- Add tests for segment files persistence holder
2017-03-14 20:46:28 +01:00
ljacqu
9c3baa7f14 #1125 Create persistence of LimboPlayers in segment files (work in progress)
- Instead of one huge file or a file for each player, allow the user to define how many files he wants to distribute the LimboPlayers over. This is based on a function that creates a String (segment ID) based on the player's UUID.
2017-03-13 20:29:08 +01:00
ljacqu
710198833c #1125 Create SingleFilePersistenceHandler + extract (de)serializer for LimboPlayer 2017-03-13 18:30:52 +01:00
ljacqu
8557621c02 #1125 Create infrastructure for Limbo persistence + restore 5.2 JSON storage
- Introduce configurable storage mechanism
  - LimboPersistence wraps a LimboPersistenceHandler, of which there are multiple implementations
  - Outside of the limbo.persistence package, classes only talk to LimboPersistence
  - Restore the way of persisting to JSON from 5.2 (SeparateFilePersistenceHandler)

- Add handling for stored limbo players
  - Merge any existing LimboPlayers together with the goal of only keeping one version of a LimboPlayer: there is no way for a player to be online without triggering the creation of a LimboPlayer first, so we can guarantee that the in-memory LimboPlayer is the most up-to-date, i.e. when restoring limbo data we don't have to check against the disk.
  - Create and delete LimboPlayers at the same time when LimboPlayers are added or removed from the in-memory map

- Catch all exceptions in LimboPersistence so a handler throwing an unexpected exception does not stop the limbo process (#1070)

- Extend debug command /authme debug limbo to show LimboPlayer information on disk, too
2017-03-12 18:43:37 +01:00
ljacqu
1678901e02 #1113 Attempt to merge new LimboPlayer with an existing one
- Extract some logic into LimboServiceHelper to keep LimboService slim
- Create LimboServiceHelper#merge to merge two LimboPlayers associated with a Player. E.g. if an admin unregisters an online player that has not logged in, the creation of a LimboPlayer is triggered while there already is one in LimboService
2017-03-12 15:56:08 +01:00
ljacqu
c766b5c259 #1036 Add restoration options for Limbo allowFlight / fly speed / walk speed
- Introduce options to define how allow flight, fly & walk speed should be restored from LimboPlayer
- Create consistency tests for line length in SectionComments methods and to ensure that all SettingsHolder classes are part of the returned ConfigurationData
2017-03-12 13:51:03 +01:00
ljacqu
c79ba49ca8 #1113 Don't restore OP to unregistered player; add tests for LimboService 2017-03-11 08:47:58 +01:00
ljacqu
4bb10c5d6d #1113 Handle LimboPlayer tasks via LimboService
- Add methods to LimboService for handling messages to make it the only relevant Limbo class for outside classes
  - Move LimboPlayerTaskManager to limbo package and make it package-private
- Create MessageTask and TimeoutTask immediately when LimboPlayer is created
- #1112 MessageTask: improve efficiency by keeping reference to Player
2017-03-07 20:35:48 +01:00
ljacqu
021497b9e6 #1113 Handle LimboPlayers within LimboService (remove LimboCache) (work in progress)
- Delete LimboCache and LimboPlayerStorage: LimboService now handles all LimboPlayer actions
- Revoke player rights when creating a LimboPlayer, within the LimboService
- Various fixes and improvements
2017-03-05 21:47:46 +01:00
ljacqu
22ccf582b8 #1113 Create LimboService (work in progress)
- Introduce new LimboService with a higher level abstraction for outside classes to trigger LimboPlayer actions
- Add methods to LimboPlayerTaskManager for muting the MessagesTask safely
2017-03-05 19:25:35 +01:00
Maxetto
41b6c34b6b Transform values into constants
(cherry picked from commit 20d83e5 et al.)
2017-02-27 19:55:16 +01:00