From 2331e7936c27e32b7d6d251b3637efc0e1184a81 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Thu, 10 Apr 2014 18:58:08 -0400 Subject: [PATCH] Support admin commands that respect user permissions --- src/main/java/com/gitblit/transport/ssh/commands/DispatchCommand.java | 9 +++++++++ 1 files changed, 9 insertions(+), 0 deletions(-) diff --git a/src/main/java/com/gitblit/transport/ssh/commands/DispatchCommand.java b/src/main/java/com/gitblit/transport/ssh/commands/DispatchCommand.java index 83707f7..5c02273 100644 --- a/src/main/java/com/gitblit/transport/ssh/commands/DispatchCommand.java +++ b/src/main/java/com/gitblit/transport/ssh/commands/DispatchCommand.java @@ -93,6 +93,12 @@ } Command cmd = getCommand(); + if (cmd.getClass().isAnnotationPresent(CommandMetaData.class)) { + CommandMetaData meta = cmd.getClass().getAnnotation(CommandMetaData.class); + if (meta.admin() && !ctx.getClient().getUser().canAdmin()) { + throw new UnloggedFailure(1, MessageFormat.format("{0} requires admin permissions", commandName)); + } + } if (cmd instanceof BaseCommand) { BaseCommand bc = (BaseCommand) cmd; if (getName().isEmpty()) { @@ -162,6 +168,9 @@ final Class<? extends Command> c = m.get(name); CommandMetaData meta = c.getAnnotation(CommandMetaData.class); if (meta != null) { + if (meta.admin() && !ctx.getClient().getUser().canAdmin()) { + continue; + } if (meta.hidden()) { continue; } -- Gitblit v1.9.1