use of com.cinchapi.concourse.server.ConcourseServer in project concourse by cinchapi.
the class AdminRoleVerificiationAdvice method invoke.
@Override
public Object invoke(MethodInvocation invocation) throws Throwable {
AccessToken token = null;
for (Object arg : invocation.getArguments()) {
if (arg instanceof AccessToken) {
token = (AccessToken) arg;
break;
} else {
continue;
}
}
if (token != null) {
ConcourseServer concourse = (ConcourseServer) invocation.getThis();
Inspector inspector = concourse.inspector();
if (inspector.getTokenUserRole(token) == Role.ADMIN) {
return invocation.proceed();
} else {
throw new SecurityException("Unauthorized");
}
} else {
throw new SecurityException("No token was provided to a method that requires a user with the ADMIN role");
}
}
use of com.cinchapi.concourse.server.ConcourseServer in project concourse by cinchapi.
the class AccessTokenVerificationAdvice method invoke.
@Override
public Object invoke(MethodInvocation invocation) throws Throwable {
AccessToken token = null;
TransactionToken transaction = null;
Object[] args = invocation.getArguments();
int index = 0;
while (token == null && (transaction == null || index < args.length)) {
Object arg = args[index];
if (arg instanceof AccessToken) {
token = (AccessToken) arg;
} else if (arg instanceof TransactionToken) {
transaction = (TransactionToken) arg;
}
++index;
}
if (token != null) {
ConcourseServer concourse = (ConcourseServer) invocation.getThis();
if (concourse.inspector().isValidToken(token)) {
if (transaction == null || (transaction != null && transaction.getAccessToken().equals(token) && concourse.inspector().isValidTransaction(transaction))) {
return invocation.proceed();
} else {
throw new IllegalArgumentException("Invalid transaction");
}
} else {
throw new SecurityException("Invalid access token");
}
} else {
throw new SecurityException("Unauthorized");
}
}
use of com.cinchapi.concourse.server.ConcourseServer in project concourse by cinchapi.
the class PermissionVerificationAdvice method invoke.
@Override
public Object invoke(MethodInvocation invocation) throws Throwable {
AccessToken token = null;
String environment = null;
Object[] args = invocation.getArguments();
int i = 0;
while ((token == null || environment == null) && i < args.length) {
Object arg = args[i];
if (token == null && arg instanceof AccessToken) {
token = (AccessToken) arg;
} else if (token != null && environment == null && arg instanceof String) {
// This relies on the convention that the environment parameter
// always comes after the AccessToken parameter
environment = (String) arg;
}
++i;
}
if (token != null && environment != null) {
ConcourseServer concourse = (ConcourseServer) invocation.getThis();
Inspector inspector = concourse.inspector();
if (inspector.tokenUserHasPermission(token, permission, environment)) {
return invocation.proceed();
} else {
throw new PermissionException("Insufficient Permission");
}
} else {
throw new IllegalStateException("Cannot verify permissions without an AccessToken and environment");
}
}
use of com.cinchapi.concourse.server.ConcourseServer in project concourse by cinchapi.
the class HttpTest method beforeEachTest.
@Override
public void beforeEachTest() {
int port = Networking.getOpenPort();
httpServer = HttpServer.create(Reflection.<ConcourseServer>get("server", this), port);
httpServer.start();
// Wait for the HTTP server to start
Request req = new Request.Builder().url(base).head().build();
long start = Time.now();
boolean escape = false;
while (!escape) {
try {
http.newCall(req).execute();
escape = true;
} catch (IOException e) {
escape = TimeUnit.SECONDS.convert(Time.now() - start, TimeUnit.MICROSECONDS) > 5;
}
}
base += port;
}
Aggregations