Ver Fonte

fix token service null pointer error

Jason Rivard há 3 anos atrás
pai
commit
bc3afe1c01

+ 0 - 6
server/src/main/java/password/pwm/PwmApplication.java

@@ -59,7 +59,6 @@ import password.pwm.svc.sms.SmsQueueService;
 import password.pwm.svc.stats.Statistic;
 import password.pwm.svc.stats.StatisticsClient;
 import password.pwm.svc.stats.StatisticsService;
-import password.pwm.svc.token.TokenService;
 import password.pwm.svc.wordlist.SeedlistService;
 import password.pwm.svc.wordlist.SharedHistoryService;
 import password.pwm.svc.wordlist.WordlistService;
@@ -876,11 +875,6 @@ public class PwmApplication
         return lastLocalDBFailure;
     }
 
-    public TokenService getTokenService( )
-    {
-        return ( TokenService ) pwmServiceManager.getService( PwmServiceEnum.TokenService );
-    }
-
     public SessionTrackService getSessionTrackService( )
     {
         return ( SessionTrackService ) pwmServiceManager.getService( PwmServiceEnum.SessionTrackService );

+ 1 - 1
server/src/main/java/password/pwm/PwmDomain.java

@@ -209,7 +209,7 @@ public class PwmDomain
 
     public TokenService getTokenService()
     {
-        return pwmApplication.getTokenService();
+        return ( TokenService ) pwmServiceManager.getService( PwmServiceEnum.TokenService );
     }
 
     public SharedHistoryService getSharedHistoryManager()

+ 32 - 6
server/src/main/java/password/pwm/util/cli/commands/TokenInfoCommand.java

@@ -21,26 +21,31 @@
 package password.pwm.util.cli.commands;
 
 import password.pwm.PwmApplication;
+import password.pwm.PwmDomain;
 import password.pwm.bean.SessionLabel;
 import password.pwm.svc.token.TokenPayload;
 import password.pwm.svc.token.TokenService;
 import password.pwm.util.cli.CliParameters;
 import password.pwm.util.java.JavaHelper;
 
-import java.util.Collections;
+import java.util.List;
 
 public class TokenInfoCommand extends AbstractCliCommand
 {
-    protected static final String TOKEN_KEY_OPTIONNAME = "token";
+    protected static final String TOKEN_KEY_OPTION_TOKEN = "token";
+    protected static final String TOKEN_KEY_OPTION_DOMAIN = "domain";
+
 
     @Override
     public void doCommand( )
             throws Exception
     {
-        final String tokenKey = ( String ) cliEnvironment.getOptions().get( TOKEN_KEY_OPTIONNAME );
+        final String tokenKey = ( String ) cliEnvironment.getOptions().get( TOKEN_KEY_OPTION_TOKEN );
+        final String tokenId = ( String ) cliEnvironment.getOptions().get( TOKEN_KEY_OPTION_DOMAIN );
         final PwmApplication pwmApplication = cliEnvironment.getPwmApplication();
+        final PwmDomain pwmDomain = pwmApplication.domains().get( tokenId );
 
-        final TokenService tokenService = pwmApplication.getTokenService();
+        final TokenService tokenService = pwmDomain.getTokenService();
         TokenPayload tokenPayload = null;
         Exception lookupError = null;
         try
@@ -96,14 +101,35 @@ public class TokenInfoCommand extends AbstractCliCommand
             @Override
             public String getName( )
             {
-                return TOKEN_KEY_OPTIONNAME;
+                return TOKEN_KEY_OPTION_TOKEN;
+            }
+        };
+
+        final CliParameters.Option domainId = new CliParameters.Option()
+        {
+            @Override
+            public boolean isOptional()
+            {
+                return false;
+            }
+
+            @Override
+            public Type getType()
+            {
+                return Type.STRING;
+            }
+
+            @Override
+            public String getName()
+            {
+                return TOKEN_KEY_OPTION_DOMAIN;
             }
         };
 
         final CliParameters cliParameters = new CliParameters();
         cliParameters.commandName = "TokenInfo";
         cliParameters.description = "Get information about an issued token";
-        cliParameters.options = Collections.singletonList( tokenValue );
+        cliParameters.options = List.of( tokenValue, domainId );
         cliParameters.needsPwmApplication = true;
         cliParameters.readOnly = false;
         return cliParameters;