11package utils
22
33import (
4+ "fmt"
45 "os"
56 "path/filepath"
67 "regexp"
@@ -32,12 +33,20 @@ func LoadAccessTokenFS(fsys afero.Fs) (string, error) {
3233}
3334
3435func loadAccessToken (fsys afero.Fs ) (string , error ) {
36+ logger := GetDebugLogger ()
3537 // Env takes precedence
3638 if accessToken := os .Getenv ("SUPABASE_ACCESS_TOKEN" ); accessToken != "" {
39+ fmt .Fprintln (logger , "Using access token from env var..." )
3740 return accessToken , nil
3841 }
39- // Load from native credentials store
42+ // Load from current profile
43+ if accessToken , err := credentials .StoreProvider .Get (CurrentProfile .Name ); err == nil {
44+ fmt .Fprintln (logger , "Using access token for profile:" , CurrentProfile .Name )
45+ return accessToken , nil
46+ }
47+ // Load from legacy key for backwards compatibility
4048 if accessToken , err := credentials .StoreProvider .Get (AccessTokenKey ); err == nil {
49+ fmt .Fprintln (logger , "Using access token from credentials store..." )
4150 return accessToken , nil
4251 }
4352 // Fallback to token file
@@ -55,6 +64,7 @@ func fallbackLoadToken(fsys afero.Fs) (string, error) {
5564 } else if err != nil {
5665 return "" , errors .Errorf ("failed to read access token file: %w" , err )
5766 }
67+ fmt .Fprintln (GetDebugLogger (), "Using access token from file:" , path )
5868 return string (accessToken ), nil
5969}
6070
@@ -63,8 +73,10 @@ func SaveAccessToken(accessToken string, fsys afero.Fs) error {
6373 if ! AccessTokenPattern .MatchString (accessToken ) {
6474 return errors .New (ErrInvalidToken )
6575 }
66- // Save to native credentials store
67- if err := credentials .StoreProvider .Set (AccessTokenKey , accessToken ); err == nil {
76+ // Save to current profile
77+ if err := credentials .StoreProvider .Set (CurrentProfile .Name , accessToken ); err != nil {
78+ fmt .Fprintln (GetDebugLogger (), err )
79+ } else {
6880 return nil
6981 }
7082 // Fallback to token file
@@ -87,19 +99,20 @@ func fallbackSaveToken(accessToken string, fsys afero.Fs) error {
8799
88100func DeleteAccessToken (fsys afero.Fs ) error {
89101 // Always delete the fallback token file to handle legacy CLI
90- if err := fallbackDeleteToken (fsys ); err == nil {
91- // Typically user system should only have either token file or keyring.
92- // But we delete from both just in case.
93- _ = credentials .StoreProvider .Delete (AccessTokenKey )
94- return nil
95- } else if ! errors .Is (err , os .ErrNotExist ) {
102+ if err := fallbackDeleteToken (fsys ); err != nil && ! errors .Is (err , os .ErrNotExist ) {
96103 return err
97104 }
98- // Fallback not found, delete from native credentials store
99- err := credentials .StoreProvider .Delete (AccessTokenKey )
100- if errors .Is (err , credentials .ErrNotSupported ) || errors .Is (err , keyring .ErrNotFound ) {
101- return errors .New (ErrNotLoggedIn )
102- } else if err != nil {
105+ // Always delete from legacy keyring
106+ if err := credentials .StoreProvider .Delete (AccessTokenKey ); err != nil && ! errors .Is (err , keyring .ErrNotFound ) {
107+ fmt .Fprintln (GetDebugLogger (), err )
108+ }
109+ // Delete profile from native credentials store
110+ if err := credentials .StoreProvider .Delete (CurrentProfile .Name ); err != nil {
111+ if errors .Is (err , credentials .ErrNotSupported ) ||
112+ errors .Is (err , keyring .ErrUnsupportedPlatform ) ||
113+ errors .Is (err , keyring .ErrNotFound ) {
114+ return errors .New (ErrNotLoggedIn )
115+ }
103116 return errors .Errorf ("failed to delete access token from keyring: %w" , err )
104117 }
105118 return nil
0 commit comments