constanze/actions.go

79 lines
1.8 KiB
Go

package main
import (
"github.com/pkg/browser"
log "github.com/sirupsen/logrus"
"github.com/urfave/cli/v2"
)
func setDebugLogging(cCtx *cli.Context) {
if cCtx.Bool("debug") {
log.SetLevel(log.DebugLevel)
log.Debug("Debug logging enabled")
} else {
log.SetLevel(log.InfoLevel)
}
}
func Configure(cCtx *cli.Context) error {
setDebugLogging(cCtx)
instanceUrl := ReadLine("Instance URL:")
config := Config{InstanceUrl: instanceUrl}
return SaveConfigFromContext(cCtx, config)
}
func Login(cCtx *cli.Context) error {
setDebugLogging(cCtx)
config, err := LoadConfigFromContext(cCtx)
if err != nil {
return err
}
scopes := cCtx.String("scopes")
clientApp := cCtx.Bool("client-app")
clientName := cCtx.String("client-name")
log.Info("Creating OAuth app")
oauthApp, err := CreateOAuthApp(config.InstanceUrl, clientName, scopes)
if err != nil {
return err
}
config.OAuthApp = oauthApp
if !clientApp {
err = SaveConfigFromContext(cCtx, config)
if err != nil {
return err
}
}
log.Info("OAuth app created")
log.Info("Opening browser")
authUrl, err := AuthorizeUrl(config.InstanceUrl, config.OAuthApp, cCtx.String("scopes"))
if err != nil {
return err
}
log.Info("Auth URL: ", authUrl)
err = browser.OpenURL(authUrl)
if err != nil {
log.Infof("Could not open browser, please open the following URL in your browser: %s", authUrl)
}
authCode := ReadLine("Auth code:")
oauthToken, err := RequestToken(config.InstanceUrl, config.OAuthApp, scopes, authCode)
if err != nil {
return err
}
config.OAuthToken = oauthToken
if !clientApp {
err = SaveConfigFromContext(cCtx, config)
if err != nil {
return err
}
}
if clientApp {
log.Info("Client app token:")
log.Infof("%s %s", oauthToken.TokenType, oauthToken.AccessToken)
}
return nil
}