use of org.neo4j.kernel.api.exceptions.InvalidArgumentsException in project neo4j by neo4j.
the class InternalFlatFileRealmTest method shouldAssignAdminRoleAfterBadSetting.
@Test
public void shouldAssignAdminRoleAfterBadSetting() throws Throwable {
UserRepository userRepository = new InMemoryUserRepository();
UserRepository initialUserRepository = new InMemoryUserRepository();
UserRepository adminUserRepository = new InMemoryUserRepository();
RoleRepository roleRepository = new InMemoryRoleRepository();
userRepository.create(newUser("morpheus", "123", false));
userRepository.create(newUser("trinity", "123", false));
InternalFlatFileRealm realm = new InternalFlatFileRealm(userRepository, roleRepository, new BasicPasswordPolicy(), new RateLimitedAuthenticationStrategy(Clocks.systemClock(), 3), new InternalFlatFileRealmIT.TestJobScheduler(), initialUserRepository, adminUserRepository);
try {
realm.initialize();
realm.start();
fail("Multiple users, no default admin provided");
} catch (InvalidArgumentsException e) {
realm.stop();
realm.shutdown();
}
adminUserRepository.create(new User.Builder("trinity", Credential.INACCESSIBLE).build());
realm.initialize();
realm.start();
assertThat(realm.getUsernamesForRole(PredefinedRoles.ADMIN).size(), equalTo(1));
assertThat(realm.getUsernamesForRole(PredefinedRoles.ADMIN), contains("trinity"));
}
use of org.neo4j.kernel.api.exceptions.InvalidArgumentsException in project neo4j by neo4j.
the class UserService method setPassword.
@POST
@Path("/{username}/password")
public Response setPassword(@PathParam("username") String username, @Context HttpServletRequest req, String payload) {
Principal principal = req.getUserPrincipal();
if (principal == null || !principal.getName().equals(username)) {
return output.notFound();
}
final Map<String, Object> deserialized;
try {
deserialized = input.readMap(payload);
} catch (BadInputException e) {
return output.response(BAD_REQUEST, new ExceptionRepresentation(new Neo4jError(Status.Request.InvalidFormat, e.getMessage())));
}
Object o = deserialized.get(PASSWORD);
if (o == null) {
return output.response(UNPROCESSABLE, new ExceptionRepresentation(new Neo4jError(Status.Request.InvalidFormat, String.format("Required parameter '%s' is missing.", PASSWORD))));
}
if (!(o instanceof String)) {
return output.response(UNPROCESSABLE, new ExceptionRepresentation(new Neo4jError(Status.Request.InvalidFormat, String.format("Expected '%s' to be a string.", PASSWORD))));
}
String newPassword = (String) o;
try {
SecurityContext securityContext = getSecurityContextFromUserPrincipal(principal);
if (securityContext == null) {
return output.notFound();
} else {
UserManager userManager = userManagerSupplier.getUserManager(securityContext);
userManager.setUserPassword(username, newPassword, false);
}
} catch (IOException e) {
return output.serverErrorWithoutLegacyStacktrace(e);
} catch (InvalidArgumentsException e) {
return output.response(UNPROCESSABLE, new ExceptionRepresentation(new Neo4jError(e.status(), e.getMessage())));
}
return output.ok();
}
use of org.neo4j.kernel.api.exceptions.InvalidArgumentsException in project neo4j by neo4j.
the class AbstractUserRepository method create.
@Override
public void create(User user) throws InvalidArgumentsException, IOException {
assertValidUsername(user.name());
synchronized (this) {
// Check for existing user
for (User other : users) {
if (other.name().equals(user.name())) {
throw new InvalidArgumentsException("The specified user '" + user.name() + "' already exists.");
}
}
users.add(user);
usersByName.put(user.name(), user);
persistUsers();
}
}
Aggregations