From 61b32fe07e3eb76a7dfbceb66a7758eac5f308ee 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] Rename server session classes

---
 src/main/java/com/gitblit/transport/ssh/commands/DispatchCommand.java |   20 ++++++++++++++------
 1 files changed, 14 insertions(+), 6 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..9ffb123 100644
--- a/src/main/java/com/gitblit/transport/ssh/commands/DispatchCommand.java
+++ b/src/main/java/com/gitblit/transport/ssh/commands/DispatchCommand.java
@@ -30,9 +30,8 @@
 import com.gitblit.git.GitblitReceivePackFactory;
 import com.gitblit.git.GitblitUploadPackFactory;
 import com.gitblit.git.RepositoryResolver;
-import com.gitblit.transport.ssh.AbstractGitCommand;
 import com.gitblit.transport.ssh.CommandMetaData;
-import com.gitblit.transport.ssh.SshKeyAuthenticator;
+import com.gitblit.transport.ssh.PublicKeyAuthenticator;
 import com.gitblit.transport.ssh.SshDaemonClient;
 import com.gitblit.utils.cli.SubcommandHandler;
 import com.google.common.base.Charsets;
@@ -93,6 +92,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 +167,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;
         }
@@ -190,8 +198,8 @@
   }
 
   private void provideGitState(Command cmd) {
-	  if (cmd instanceof AbstractGitCommand) {
-		AbstractGitCommand a = (AbstractGitCommand) cmd;
+	  if (cmd instanceof BaseGitCommand) {
+		BaseGitCommand a = (BaseGitCommand) cmd;
 		a.setRepositoryResolver(repositoryResolver);
 		a.setUploadPackFactory(gitblitUploadPackFactory);
 		a.setReceivePackFactory(gitblitReceivePackFactory);
@@ -222,8 +230,8 @@
 	  this.gitblitReceivePackFactory = gitblitReceivePackFactory;
   }
 
-  private SshKeyAuthenticator authenticator;
-  public void setAuthenticator(SshKeyAuthenticator authenticator) {
+  private PublicKeyAuthenticator authenticator;
+  public void setAuthenticator(PublicKeyAuthenticator authenticator) {
 	this.authenticator = authenticator;
   }
 }

--
Gitblit v1.9.1