@@ -2,11 +2,13 @@ package cmd
22
33import (
44 "fmt"
5+ "os"
56
67 "github.com/localstack/lstk/internal/api"
78 "github.com/localstack/lstk/internal/auth"
89 "github.com/localstack/lstk/internal/env"
910 "github.com/localstack/lstk/internal/log"
11+ "github.com/localstack/lstk/internal/output"
1012 "github.com/localstack/lstk/internal/telemetry"
1113 "github.com/localstack/lstk/internal/ui"
1214 "github.com/localstack/lstk/internal/version"
@@ -23,14 +25,25 @@ func newLoginCmd(cfg *env.Env, tel *telemetry.Client, logger log.Logger) *cobra.
2325 if ! isInteractiveMode (cfg ) {
2426 return fmt .Errorf ("login requires an interactive terminal" )
2527 }
28+ tokenStorage , err := auth .NewTokenStorage (cfg .ForceFileKeyring , logger )
29+ if err != nil {
30+ return fmt .Errorf ("failed to initialize token storage: %w" , err )
31+ }
32+ sink := output .NewPlainSink (os .Stdout )
33+ if cfg .AuthToken != "" {
34+ output .EmitNote (sink , "You're already logged in" )
35+ return nil
36+ }
37+ if token , err := tokenStorage .GetAuthToken (); err == nil && token != "" {
38+ output .EmitNote (sink , "You're already logged in" )
39+ return nil
40+ }
2641 platformClient := api .NewPlatformClient (cfg .APIEndpoint , logger )
2742 if err := ui .RunLogin (cmd .Context (), version .Version (), platformClient , cfg .AuthToken , cfg .ForceFileKeyring , cfg .WebAppURL , logger ); err != nil {
2843 return err
2944 }
30- if tokenStorage , err := auth .NewTokenStorage (cfg .ForceFileKeyring , logger ); err == nil {
31- if token , err := tokenStorage .GetAuthToken (); err == nil && token != "" {
32- tel .SetAuthToken (token )
33- }
45+ if token , err := tokenStorage .GetAuthToken (); err == nil && token != "" {
46+ tel .SetAuthToken (token )
3447 }
3548 return nil
3649 }),
0 commit comments