@Override
public boolean login(String username, String password) {
LoginProvider loginProvider = Customization.of(req).loginProvider();
U.must(loginProvider != null, "A login provider wasn't set!");
RolesProvider rolesProvider = Customization.of(req).rolesProvider();
U.must(rolesProvider != null, "A roles provider wasn't set!");
req.tokenChanged.set(true);
boolean success;
try {
success = loginProvider.login(req, username, password);
if (success) {
Set<String> roles = rolesProvider.getRolesForUser(req, username);
long ttl = Conf.TOKEN.entry("ttl").or(0);
long expiresOn = ttl > 0 ? U.time() + ttl : Long.MAX_VALUE;
UserInfo user = new UserInfo(username, roles, null);
Ctxs.required().setUser(user);
request().token().put(Tokens._USER, username);
request().token().put(Tokens._EXPIRES, expiresOn);
}
} catch (Throwable e) {
throw U.rte("Login error!", e);
}
return success;
}