implementation(group: 'org.jooby', name: 'jooby-auth', version: 'x.x.x')
implementation(group: 'org.jooby', name: 'jooby-jdbc', version: 'x.x.x')
use(new Jdbc());
use(new Auth()
.basic(new JdbcAuthenticator()
.query("SELECT password FROM users WHERE username = ?")
)
);
use(new Auth().authenticator("basic"));
use("/admin/**").roles("admin");
@Path("/admin")
@Roles("admin")
public Result adminPage() {
}
import org.jooby.Jooby;
import org.jooby.Results;
import org.jooby.handlers.CorsHandler;
import org.jooby.handlers.LocalhostHandler;
import org.jooby.json.Jackson;
import org.jooby.rocker.Rockerby;
import org.jooby.rocker.RockerModule;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.List;
public class MyApp extends Jooby {
final Logger log = LoggerFactory.getLogger(getClass());
{
use(new Jackson());
use(new Rockerby(new RockerModule("home")));
/**
* Enable CORS. See: https://en.wikipedia.org/wiki/Cross-origin_resource_sharing
*/
use("*", new CorsHandler().allowedMethods("GET", "PUT", "POST", "DELETE"));
/**
* Avoid clickjacking. See: https://en.wikipedia.org/wiki/Clickjacking
*/
use(new LocalhostHandler());
/**
* Simple route calling a Rocker template.
*/
get("/", () -> Results.html("home"));
/**
* Protect all routes using OAuth2 (except /auth and /auth/callback).
*/
/*use(new AuthForJooby()
// OAuth2
.use(GithubCallback.class)
.loginPage("/auth/login")
.userAuthProvider(new UserAuthProvider())
// Logout
.logout("/auth/logout")
// Store users in the session
.store(User.class)
// Anonymous access
.authorizer(AnonAuthorizer.class)
);
/**
* OAuth2 login, login and callback ULR/path must match the provider configuration.
*/
/*use(new AuthProvider()
// login page
.loginPage("/auth/login")
// ERROR: callback must match the provider configuration
.callback("/")
// The Github builder require these props
.authorizePath("https://github.com/login/oauth/authorize")
.accessTokenPath("https://github.com/login/oauth/access_token")
// Github app credentials
.appId(System.getProperty("github.appid"))
.appSecret(System.getProperty("github.secret"))
// Build the auth provider
.build(GithubProfile.class));
/**
*/
use(new Auth()
.basic(new JdbcAuthenticator()
.query("SELECT password FROM users WHERE username = ?")
));
/*
use(new Auth().authenticator("basic"));
// Admin filter
use("/admin/**").roles("admin");
// Admin page
get("/admin", () -> {
return Results.html("admin");
});
}
public static void main(final String[] args) {
run(MyApp::new, args);
}
}
server:
port: 8080
db:
driver: "org.h2.Driver"
url: "jdbc:h2:mem:test;DB_CLOSE_DELAY=-1"
username: "sa"
password: ""
sex: "MALE"
name: "Mad Max"
email: "max@road.com"