redis-module 2.0.7

A toolkit for building Redis modules in Rust
Documentation
use redis_module::{
    redis_module, AclPermissions, Context, NextArg, RedisError, RedisResult, RedisString,
    RedisValue,
};

fn verify_key_access_for_user(ctx: &Context, args: Vec<RedisString>) -> RedisResult {
    let mut args = args.into_iter().skip(1);
    let user = args.next_arg()?;
    let key = args.next_arg()?;
    let res = ctx.acl_check_key_permission(&user, &key, &AclPermissions::all());
    if let Err(err) = res {
        return Err(RedisError::String(format!("Err {err}")));
    }
    Ok(RedisValue::SimpleStringStatic("OK"))
}

fn get_current_user(ctx: &Context, _args: Vec<RedisString>) -> RedisResult {
    Ok(RedisValue::BulkRedisString(ctx.get_current_user()))
}

//////////////////////////////////////////////////////

redis_module! {
    name: "acl",
    version: 1,
    allocator: (redis_module::alloc::RedisAlloc, redis_module::alloc::RedisAlloc),
    data_types: [],
    commands: [
        ["verify_key_access_for_user", verify_key_access_for_user, "", 0, 0, 0],
        ["get_current_user", get_current_user, "", 0, 0, 0],
    ],
}