summaryrefslogtreecommitdiff
path: root/src/server.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/server.rs')
-rw-r--r--src/server.rs25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/server.rs b/src/server.rs
index d6a8bca..b52c56f 100644
--- a/src/server.rs
+++ b/src/server.rs
@@ -3,6 +3,29 @@ use tonic::{Request, Response, Status, transport::Server};
use hello_world::greeter_server::{Greeter, GreeterServer};
use hello_world::{HelloReply, HelloRequest};
+use authz_rpc::ability_server::{Ability, AbilityServer};
+use authz_rpc::{AllowReply, AllowRequest};
+
+pub mod authz_rpc {
+ tonic::include_proto!("authz.rpc");
+}
+
+#[derive(Debug, Default)]
+pub struct MyAbility {}
+
+#[tonic::async_trait]
+impl Ability for MyAbility {
+ async fn allowed(
+ &self,
+ request: Request<AllowRequest>,
+ ) -> Result<Response<AllowReply>, Status> {
+ println!("Got a request: {:?}", request);
+
+ let reply = AllowReply { result: true };
+ Ok(Response::new(reply))
+ }
+}
+
pub mod hello_world {
tonic::include_proto!("helloworld");
}
@@ -29,10 +52,12 @@ impl Greeter for MyGreeter {
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let addr = "[::1]:50051".parse()?;
+ let ability = MyAbility::default();
let greeter = MyGreeter::default();
Server::builder()
.add_service(GreeterServer::new(greeter))
+ .add_service(AbilityServer::new(ability))
.serve(addr)
.await?;