Account for 'allow-invalid-usernames' setting in API calls

This commit is contained in:
Luck 2018-12-18 12:50:52 +00:00
parent 7e50c3c777
commit 879a88a398
No known key found for this signature in database
GPG Key ID: EFA9B3EC5FD90F8B
4 changed files with 23 additions and 24 deletions

View File

@ -27,19 +27,24 @@ package me.lucko.luckperms.common.api;
import com.google.common.base.Preconditions; import com.google.common.base.Preconditions;
import me.lucko.luckperms.common.config.ConfigKeys;
import me.lucko.luckperms.common.plugin.LuckPermsPlugin;
import me.lucko.luckperms.common.storage.misc.DataConstraints; import me.lucko.luckperms.common.storage.misc.DataConstraints;
import java.util.function.Predicate;
public final class ApiUtils { public final class ApiUtils {
public static String checkUsername(String s) { public static String checkUsername(String s, LuckPermsPlugin plugin) {
if (s == null) { if (s == null) {
return null; return null;
} }
Preconditions.checkArgument( Predicate<String> test = plugin.getConfiguration().get(ConfigKeys.ALLOW_INVALID_USERNAMES) ?
DataConstraints.PLAYER_USERNAME_TEST.test(s), DataConstraints.PLAYER_USERNAME_TEST_LENIENT :
"Invalid username entry '" + s + "'. Usernames must be less than 16 chars and only contain 'a-z A-Z 1-9 _'." DataConstraints.PLAYER_USERNAME_TEST;
);
Preconditions.checkArgument(test.test(s), "Invalid username entry: " + s);
return s; return s;
} }
@ -48,10 +53,7 @@ public final class ApiUtils {
return null; return null;
} }
Preconditions.checkArgument( Preconditions.checkArgument(DataConstraints.GROUP_NAME_TEST.test(s), "Invalid name entry: " + s);
DataConstraints.GROUP_NAME_TEST.test(s),
"Invalid name entry '" + s + "'. Names must be less than 37 chars and only contain 'a-z A-Z 1-9'."
);
return s.toLowerCase(); return s.toLowerCase();
} }

View File

@ -27,6 +27,7 @@ package me.lucko.luckperms.common.api.implementation;
import me.lucko.luckperms.api.LogEntry; import me.lucko.luckperms.api.LogEntry;
import me.lucko.luckperms.common.actionlog.Log; import me.lucko.luckperms.common.actionlog.Log;
import me.lucko.luckperms.common.api.ApiUtils;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
@ -34,8 +35,6 @@ import java.util.Objects;
import java.util.SortedSet; import java.util.SortedSet;
import java.util.UUID; import java.util.UUID;
import static me.lucko.luckperms.common.api.ApiUtils.checkName;
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public class ApiLog implements me.lucko.luckperms.api.Log { public class ApiLog implements me.lucko.luckperms.api.Log {
private final Log handle; private final Log handle;
@ -64,12 +63,12 @@ public class ApiLog implements me.lucko.luckperms.api.Log {
@Override @Override
public @NonNull SortedSet<LogEntry> getGroupHistory(@NonNull String name) { public @NonNull SortedSet<LogEntry> getGroupHistory(@NonNull String name) {
Objects.requireNonNull(name, "name"); Objects.requireNonNull(name, "name");
return (SortedSet) this.handle.getGroupHistory(checkName(name)); return (SortedSet) this.handle.getGroupHistory(ApiUtils.checkName(name));
} }
@Override @Override
public @NonNull SortedSet<LogEntry> getTrackHistory(@NonNull String name) { public @NonNull SortedSet<LogEntry> getTrackHistory(@NonNull String name) {
Objects.requireNonNull(name, "name"); Objects.requireNonNull(name, "name");
return (SortedSet) this.handle.getTrackHistory(checkName(name)); return (SortedSet) this.handle.getTrackHistory(ApiUtils.checkName(name));
} }
} }

View File

@ -33,6 +33,7 @@ import me.lucko.luckperms.api.Track;
import me.lucko.luckperms.api.User; import me.lucko.luckperms.api.User;
import me.lucko.luckperms.api.event.cause.CreationCause; import me.lucko.luckperms.api.event.cause.CreationCause;
import me.lucko.luckperms.api.event.cause.DeletionCause; import me.lucko.luckperms.api.event.cause.DeletionCause;
import me.lucko.luckperms.common.api.ApiUtils;
import me.lucko.luckperms.common.bulkupdate.comparison.Constraint; import me.lucko.luckperms.common.bulkupdate.comparison.Constraint;
import me.lucko.luckperms.common.bulkupdate.comparison.StandardComparison; import me.lucko.luckperms.common.bulkupdate.comparison.StandardComparison;
import me.lucko.luckperms.common.node.factory.NodeFactory; import me.lucko.luckperms.common.node.factory.NodeFactory;
@ -50,9 +51,6 @@ import java.util.concurrent.CompletableFuture;
import java.util.concurrent.Executor; import java.util.concurrent.Executor;
import java.util.function.Function; import java.util.function.Function;
import static me.lucko.luckperms.common.api.ApiUtils.checkName;
import static me.lucko.luckperms.common.api.ApiUtils.checkUsername;
public class ApiStorage implements me.lucko.luckperms.api.Storage { public class ApiStorage implements me.lucko.luckperms.api.Storage {
private static final Function<Throwable, Boolean> CONSUME_EXCEPTION = throwable -> { private static final Function<Throwable, Boolean> CONSUME_EXCEPTION = throwable -> {
throwable.printStackTrace(); throwable.printStackTrace();
@ -114,7 +112,7 @@ public class ApiStorage implements me.lucko.luckperms.api.Storage {
@Override @Override
public @NonNull CompletableFuture<Boolean> loadUser(@NonNull UUID uuid, String username) { public @NonNull CompletableFuture<Boolean> loadUser(@NonNull UUID uuid, String username) {
Objects.requireNonNull(uuid, "uuid"); Objects.requireNonNull(uuid, "uuid");
username = checkUsername(username); username = ApiUtils.checkUsername(username, this.plugin);
if (this.plugin.getUserManager().getIfLoaded(uuid) == null) { if (this.plugin.getUserManager().getIfLoaded(uuid) == null) {
this.plugin.getUserManager().getHouseKeeper().registerApiUsage(uuid); this.plugin.getUserManager().getHouseKeeper().registerApiUsage(uuid);
@ -147,7 +145,7 @@ public class ApiStorage implements me.lucko.luckperms.api.Storage {
@Override @Override
public @NonNull CompletableFuture<Boolean> createAndLoadGroup(@NonNull String name) { public @NonNull CompletableFuture<Boolean> createAndLoadGroup(@NonNull String name) {
Objects.requireNonNull(name, "name"); Objects.requireNonNull(name, "name");
return this.handle.createAndLoadGroup(checkName(name), CreationCause.API) return this.handle.createAndLoadGroup(ApiUtils.checkName(name), CreationCause.API)
.thenApply(r -> true) .thenApply(r -> true)
.exceptionally(consumeExceptionToFalse()); .exceptionally(consumeExceptionToFalse());
} }
@ -155,7 +153,7 @@ public class ApiStorage implements me.lucko.luckperms.api.Storage {
@Override @Override
public @NonNull CompletableFuture<Boolean> loadGroup(@NonNull String name) { public @NonNull CompletableFuture<Boolean> loadGroup(@NonNull String name) {
Objects.requireNonNull(name, "name"); Objects.requireNonNull(name, "name");
return this.handle.loadGroup(checkName(name)) return this.handle.loadGroup(ApiUtils.checkName(name))
.thenApply(Optional::isPresent) .thenApply(Optional::isPresent)
.exceptionally(consumeExceptionToFalse()); .exceptionally(consumeExceptionToFalse());
} }
@ -195,7 +193,7 @@ public class ApiStorage implements me.lucko.luckperms.api.Storage {
@Override @Override
public @NonNull CompletableFuture<Boolean> createAndLoadTrack(@NonNull String name) { public @NonNull CompletableFuture<Boolean> createAndLoadTrack(@NonNull String name) {
Objects.requireNonNull(name, "name"); Objects.requireNonNull(name, "name");
return this.handle.createAndLoadTrack(checkName(name), CreationCause.API) return this.handle.createAndLoadTrack(ApiUtils.checkName(name), CreationCause.API)
.thenApply(r -> true) .thenApply(r -> true)
.exceptionally(consumeExceptionToFalse()); .exceptionally(consumeExceptionToFalse());
} }
@ -203,7 +201,7 @@ public class ApiStorage implements me.lucko.luckperms.api.Storage {
@Override @Override
public @NonNull CompletableFuture<Boolean> loadTrack(@NonNull String name) { public @NonNull CompletableFuture<Boolean> loadTrack(@NonNull String name) {
Objects.requireNonNull(name, "name"); Objects.requireNonNull(name, "name");
return this.handle.loadTrack(checkName(name)) return this.handle.loadTrack(ApiUtils.checkName(name))
.thenApply(Optional::isPresent) .thenApply(Optional::isPresent)
.exceptionally(consumeExceptionToFalse()); .exceptionally(consumeExceptionToFalse());
} }
@ -235,7 +233,7 @@ public class ApiStorage implements me.lucko.luckperms.api.Storage {
public @NonNull CompletableFuture<Boolean> saveUUIDData(@NonNull String username, @NonNull UUID uuid) { public @NonNull CompletableFuture<Boolean> saveUUIDData(@NonNull String username, @NonNull UUID uuid) {
Objects.requireNonNull(username, "username"); Objects.requireNonNull(username, "username");
Objects.requireNonNull(uuid, "uuid"); Objects.requireNonNull(uuid, "uuid");
return this.handle.savePlayerData(uuid, checkUsername(username)) return this.handle.savePlayerData(uuid, ApiUtils.checkUsername(username, this.plugin))
.thenApply(r -> true) .thenApply(r -> true)
.exceptionally(consumeExceptionToFalse()); .exceptionally(consumeExceptionToFalse());
} }
@ -243,7 +241,7 @@ public class ApiStorage implements me.lucko.luckperms.api.Storage {
@Override @Override
public @NonNull CompletableFuture<UUID> getUUID(@NonNull String username) { public @NonNull CompletableFuture<UUID> getUUID(@NonNull String username) {
Objects.requireNonNull(username, "username"); Objects.requireNonNull(username, "username");
return this.handle.getPlayerUuid(checkUsername(username)); return this.handle.getPlayerUuid(ApiUtils.checkUsername(username, this.plugin));
} }
@Override @Override

View File

@ -61,7 +61,7 @@ public class ApiUserManager extends ApiAbstractManager<User, me.lucko.luckperms.
@Override @Override
public @NonNull CompletableFuture<me.lucko.luckperms.api.User> loadUser(@NonNull UUID uuid, @Nullable String username) { public @NonNull CompletableFuture<me.lucko.luckperms.api.User> loadUser(@NonNull UUID uuid, @Nullable String username) {
Objects.requireNonNull(uuid, "uuid"); Objects.requireNonNull(uuid, "uuid");
ApiUtils.checkUsername(username); ApiUtils.checkUsername(username, this.plugin);
if (this.plugin.getUserManager().getIfLoaded(uuid) == null) { if (this.plugin.getUserManager().getIfLoaded(uuid) == null) {
this.plugin.getUserManager().getHouseKeeper().registerApiUsage(uuid); this.plugin.getUserManager().getHouseKeeper().registerApiUsage(uuid);