Fix not clearing user's permissions, and issue with unsetting permissions
This commit is contained in:
parent
f5995c0afa
commit
d5bc1cdf5d
@ -423,7 +423,7 @@ public abstract class PermissionHolder {
|
|||||||
* @throws ObjectLacksException if the holder doesn't have this node already
|
* @throws ObjectLacksException if the holder doesn't have this node already
|
||||||
*/
|
*/
|
||||||
public void unsetPermission(Node node) throws ObjectLacksException {
|
public void unsetPermission(Node node) throws ObjectLacksException {
|
||||||
if (hasPermission(node, false) == Tristate.FALSE) {
|
if (hasPermission(node, false) != Tristate.TRUE) {
|
||||||
throw new ObjectLacksException();
|
throw new ObjectLacksException();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -228,6 +228,13 @@ public class FlatfileDatastore extends Datastore {
|
|||||||
@Override
|
@Override
|
||||||
public boolean saveUser(User user) {
|
public boolean saveUser(User user) {
|
||||||
File userFile = new File(usersDir, user.getUuid().toString() + ".json");
|
File userFile = new File(usersDir, user.getUuid().toString() + ".json");
|
||||||
|
if (!plugin.getUserManager().shouldSave(user)) {
|
||||||
|
if (userFile.exists()) {
|
||||||
|
userFile.delete();
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
if (!userFile.exists()) {
|
if (!userFile.exists()) {
|
||||||
try {
|
try {
|
||||||
userFile.createNewFile();
|
userFile.createNewFile();
|
||||||
|
@ -169,7 +169,11 @@ public class MongoDBDatastore extends Datastore {
|
|||||||
@Override
|
@Override
|
||||||
public boolean saveUser(User user) {
|
public boolean saveUser(User user) {
|
||||||
if (!plugin.getUserManager().shouldSave(user)) {
|
if (!plugin.getUserManager().shouldSave(user)) {
|
||||||
return true;
|
boolean success = call(() -> {
|
||||||
|
MongoCollection<Document> c = database.getCollection("users");
|
||||||
|
return c.deleteOne(new Document("_id", user.getUuid())).wasAcknowledged();
|
||||||
|
}, false);
|
||||||
|
return success;
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean success = call(() -> {
|
boolean success = call(() -> {
|
||||||
|
@ -55,7 +55,8 @@ abstract class SQLDatastore extends Datastore {
|
|||||||
private static final String USER_SELECT = "SELECT * FROM lp_users WHERE uuid=?";
|
private static final String USER_SELECT = "SELECT * FROM lp_users WHERE uuid=?";
|
||||||
private static final String USER_SELECT_ALL = "SELECT uuid FROM lp_users";
|
private static final String USER_SELECT_ALL = "SELECT uuid FROM lp_users";
|
||||||
private static final String USER_UPDATE = "UPDATE lp_users SET name=?, primary_group = ?, perms=? WHERE uuid=?";
|
private static final String USER_UPDATE = "UPDATE lp_users SET name=?, primary_group = ?, perms=? WHERE uuid=?";
|
||||||
private static final String USER_DELETE = "DELETE FROM lp_users WHERE perms=?";
|
private static final String USER_DELETE = "DELETE FROM lp_users WHERE uuid=?";
|
||||||
|
private static final String USER_DELETE_ALL = "DELETE FROM lp_users WHERE perms=?";
|
||||||
|
|
||||||
private static final String GROUP_INSERT = "INSERT INTO lp_groups VALUES(?, ?)";
|
private static final String GROUP_INSERT = "INSERT INTO lp_groups VALUES(?, ?)";
|
||||||
private static final String GROUP_SELECT = "SELECT perms FROM lp_groups WHERE name=?";
|
private static final String GROUP_SELECT = "SELECT perms FROM lp_groups WHERE name=?";
|
||||||
@ -189,7 +190,13 @@ abstract class SQLDatastore extends Datastore {
|
|||||||
@Override
|
@Override
|
||||||
public boolean saveUser(User user) {
|
public boolean saveUser(User user) {
|
||||||
if (!plugin.getUserManager().shouldSave(user)) {
|
if (!plugin.getUserManager().shouldSave(user)) {
|
||||||
return true;
|
boolean success = runQuery(new QueryPS(USER_DELETE) {
|
||||||
|
@Override
|
||||||
|
void onRun(PreparedStatement preparedStatement) throws SQLException {
|
||||||
|
preparedStatement.setString(1, user.getUuid().toString());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return success;
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean success = runQuery(new QueryRS(USER_SELECT) {
|
boolean success = runQuery(new QueryRS(USER_SELECT) {
|
||||||
@ -234,7 +241,7 @@ abstract class SQLDatastore extends Datastore {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean cleanupUsers() {
|
public boolean cleanupUsers() {
|
||||||
boolean success = runQuery(new QueryPS(USER_DELETE) {
|
boolean success = runQuery(new QueryPS(USER_DELETE_ALL) {
|
||||||
@Override
|
@Override
|
||||||
void onRun(PreparedStatement preparedStatement) throws SQLException {
|
void onRun(PreparedStatement preparedStatement) throws SQLException {
|
||||||
preparedStatement.setString(1, "{\"group.default\":true}");
|
preparedStatement.setString(1, "{\"group.default\":true}");
|
||||||
|
@ -61,11 +61,13 @@ public abstract class UserManager extends AbstractManager<UUID, User> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void copy(User from, User to) {
|
public void copy(User from, User to) {
|
||||||
|
if (from.getPrimaryGroup() != null) {
|
||||||
|
// This isn't just a black user. we shouldn't override in that case.
|
||||||
to.setNodes(from.getNodes());
|
to.setNodes(from.getNodes());
|
||||||
to.setPrimaryGroup(from.getPrimaryGroup());
|
to.setPrimaryGroup(from.getPrimaryGroup());
|
||||||
giveDefaultIfNeeded(to, true);
|
|
||||||
to.refreshPermissions();
|
to.refreshPermissions();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set a user to the default group
|
* Set a user to the default group
|
||||||
|
Loading…
Reference in New Issue
Block a user