Macro diana::if_authed [−][src]
macro_rules! if_authed { ($auth_state:expr, { $($key:expr => $value:expr),+ }, $code:block) => { ... }; }
Expand description
Checks to see if the given authentication state matches the series of given claims. This must be provided with the authentication state,
a series of claims to check against, and code to execute if the user is authenticated. This will call bail!
with an ErrorKind::Unauthorised
error if the user is unauthenticated, so that must be handled in your function’s return type!
Example
This is a simplified version of the internal logic that publishes data to the subscriptions server.
use diana::{ errors::{Result, GQLResult}, graphql_utils::get_auth_data_from_ctx, GQLObject, if_authed, }; #[derive(Default, Clone)] pub struct PublishMutation; #[GQLObject] impl PublishMutation { async fn publish( &self, raw_ctx: &async_graphql::Context<'_>, channel: String, data: String, ) -> Result<bool> { let auth_state = get_auth_data_from_ctx(raw_ctx)?; if_authed!( auth_state, { "role" => "graphql_server" }, { // Your code here Ok(true) } ) } }