pub mod controller;
use rustlavel::prelude::*;
use rustlavel::{Plugin, Setup};
use crate::modules::Module;
use crate::support::settings::{Kind, Setting, env};
pub use controller::DiscoveryController;
static SETTINGS: [Setting; 1] =
[env("discovery.url", Kind::Text, "http://127.0.0.1:8761", "DISCOVERY_URL")];
static PERMISSIONS: [(&str, &str); 1] =
[("discovery.view", "See the service registry and which instances are up")];
pub struct Discovery;
impl Plugin for Discovery {
fn name(&self) -> &'static str {
"discovery"
}
fn register(self: Box<Self>, setup: &mut Setup<'_>) {
setup.router.group("/admin/discovery", |discovery| {
discovery.middleware(Authenticate::default().login_path("/login"));
discovery.middleware(crate::support::epoch::SessionEpoch);
discovery.middleware(crate::support::idle::IdleTimeout);
discovery
.get("", DiscoveryController::index)
.name("admin.discovery")
.middleware(Can::permission("discovery.view").login_path("/login"));
});
}
}
impl Module for Discovery {
fn permissions(&self) -> &'static [(&'static str, &'static str)] {
&PERMISSIONS
}
fn settings(&self) -> &'static [Setting] {
&SETTINGS
}
}