diff --git a/cmd/root.go b/cmd/root.go index 81b0d59..d36c637 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -1,7 +1,6 @@ package cmd import ( - "os" cmd "tinyauth/cmd/user" "tinyauth/internal/api" "tinyauth/internal/auth" @@ -38,7 +37,6 @@ var rootCmd = &cobra.Command{ if config.UsersFile == "" && config.Users == "" { log.Fatal().Msg("No users provided") - os.Exit(1) } usersString := config.Users @@ -108,14 +106,12 @@ func Execute() { err := rootCmd.Execute() if err != nil { log.Fatal().Err(err).Msg("Failed to execute command") - os.Exit(1) } } func HandleError(err error, msg string) { if err != nil { log.Fatal().Err(err).Msg(msg) - os.Exit(1) } } diff --git a/cmd/user/create/create.go b/cmd/user/create/create.go index 21dca46..3d55329 100644 --- a/cmd/user/create/create.go +++ b/cmd/user/create/create.go @@ -3,7 +3,6 @@ package create import ( "errors" "fmt" - "os" "strings" "github.com/charmbracelet/huh" @@ -18,9 +17,9 @@ var password string var docker bool var CreateCmd = &cobra.Command{ - Use: "create", + Use: "create", Short: "Create a user", - Long: `Create a user either interactively or by passing flags.`, + Long: `Create a user either interactively or by passing flags.`, Run: func(cmd *cobra.Command, args []string) { if interactive { form := huh.NewForm( @@ -47,13 +46,11 @@ var CreateCmd = &cobra.Command{ if formErr != nil { log.Fatal().Err(formErr).Msg("Form failed") - os.Exit(1) } } if username == "" || password == "" { log.Error().Msg("Username and password cannot be empty") - os.Exit(1) } log.Info().Str("username", username).Str("password", password).Bool("docker", docker).Msg("Creating user") @@ -62,7 +59,6 @@ var CreateCmd = &cobra.Command{ if passwordErr != nil { log.Fatal().Err(passwordErr).Msg("Failed to hash password") - os.Exit(1) } passwordString := string(passwordByte) @@ -80,4 +76,4 @@ func init() { CreateCmd.Flags().BoolVar(&docker, "docker", false, "Format output for docker") CreateCmd.Flags().StringVar(&username, "username", "", "Username") CreateCmd.Flags().StringVar(&password, "password", "", "Password") -} \ No newline at end of file +} diff --git a/cmd/user/verify/verify.go b/cmd/user/verify/verify.go index 9ae1d5d..a8f5337 100644 --- a/cmd/user/verify/verify.go +++ b/cmd/user/verify/verify.go @@ -2,7 +2,6 @@ package verify import ( "errors" - "os" "strings" "github.com/charmbracelet/huh" @@ -18,9 +17,9 @@ var docker bool var user string var VerifyCmd = &cobra.Command{ - Use: "verify", + Use: "verify", Short: "Verify a user is set up correctly", - Long: `Verify a user is set up correctly meaning that it has a correct password.`, + Long: `Verify a user is set up correctly meaning that it has a correct password.`, Run: func(cmd *cobra.Command, args []string) { if interactive { form := huh.NewForm( @@ -53,23 +52,19 @@ var VerifyCmd = &cobra.Command{ if formErr != nil { log.Fatal().Err(formErr).Msg("Form failed") - os.Exit(1) } } - if username == "" || password == "" || user == "" { - log.Error().Msg("Username, password and user cannot be empty") - os.Exit(1) + if username == "" || password == "" || user == "" { + log.Fatal().Msg("Username, password and user cannot be empty") } - log.Info().Str("user", user).Str("username", username).Str("password", password).Bool("docker", docker).Msg("Verifying user") userSplit := strings.Split(user, ":") if userSplit[1] == "" { - log.Error().Msg("User is not formatted correctly") - os.Exit(1) + log.Fatal().Msg("User is not formatted correctly") } if docker { @@ -79,8 +74,7 @@ var VerifyCmd = &cobra.Command{ verifyErr := bcrypt.CompareHashAndPassword([]byte(userSplit[1]), []byte(password)) if verifyErr != nil || username != userSplit[0] { - log.Error().Msg("Username or password incorrect") - os.Exit(1) + log.Fatal().Msg("Username or password incorrect") } else { log.Info().Msg("Verification successful") } @@ -93,4 +87,4 @@ func init() { VerifyCmd.Flags().StringVar(&username, "username", "", "Username") VerifyCmd.Flags().StringVar(&password, "password", "", "Password") VerifyCmd.Flags().StringVar(&user, "user", "", "Hash (user:hash combination)") -} \ No newline at end of file +} diff --git a/internal/api/api.go b/internal/api/api.go index c764d73..93b4d17 100644 --- a/internal/api/api.go +++ b/internal/api/api.go @@ -48,7 +48,6 @@ func (api *API) Init() { if distErr != nil { log.Fatal().Err(distErr).Msg("Failed to get UI assets") - os.Exit(1) } fileServer := http.FileServer(http.FS(dist)) @@ -101,6 +100,7 @@ func (api *API) SetupRoutes() { userContext, userContextErr := api.Hooks.UseUserContext(c) if userContextErr != nil { + log.Error().Err(userContextErr).Msg("Failed to get user context") c.JSON(500, gin.H{ "status": 500, "message": "Internal Server Error", @@ -124,6 +124,7 @@ func (api *API) SetupRoutes() { }) if queryErr != nil { + log.Error().Err(queryErr).Msg("Failed to build query") c.JSON(501, gin.H{ "status": 501, "message": "Internal Server Error", @@ -140,6 +141,7 @@ func (api *API) SetupRoutes() { err := c.BindJSON(&login) if err != nil { + log.Error().Err(err).Msg("Failed to bind JSON") c.JSON(400, gin.H{ "status": 400, "message": "Bad Request", @@ -192,6 +194,7 @@ func (api *API) SetupRoutes() { userContext, userContextErr := api.Hooks.UseUserContext(c) if userContextErr != nil { + log.Error().Err(userContextErr).Msg("Failed to get user context") c.JSON(500, gin.H{ "status": 500, "message": "Internal Server Error", @@ -238,6 +241,7 @@ func (api *API) SetupRoutes() { bindErr := c.BindUri(&request) if bindErr != nil { + log.Error().Err(bindErr).Msg("Failed to bind URI") c.JSON(400, gin.H{ "status": 400, "message": "Bad Request", @@ -276,6 +280,7 @@ func (api *API) SetupRoutes() { bindErr := c.BindUri(&providerName) if bindErr != nil { + log.Error().Err(bindErr).Msg("Failed to bind URI") c.JSON(400, gin.H{ "status": 400, "message": "Bad Request", @@ -306,6 +311,7 @@ func (api *API) SetupRoutes() { token, tokenErr := provider.ExchangeToken(code) if tokenErr != nil { + log.Error().Err(tokenErr).Msg("Failed to exchange token") c.JSON(500, gin.H{ "status": 500, "message": "Internal Server Error", @@ -333,6 +339,7 @@ func (api *API) SetupRoutes() { }) if queryErr != nil { + log.Error().Err(queryErr).Msg("Failed to build query") c.JSON(501, gin.H{ "status": 501, "message": "Internal Server Error", diff --git a/internal/oauth/oauth.go b/internal/oauth/oauth.go index 7d13d81..9ec2690 100644 --- a/internal/oauth/oauth.go +++ b/internal/oauth/oauth.go @@ -4,7 +4,6 @@ import ( "context" "net/http" - "github.com/rs/zerolog/log" "golang.org/x/oauth2" ) @@ -33,7 +32,6 @@ func (oauth *OAuth) GetAuthURL() string { func (oauth *OAuth) ExchangeToken(code string) (string, error) { token, err := oauth.Config.Exchange(oauth.Context, code, oauth2.VerifierOption(oauth.Verifier)) if err != nil { - log.Error().Err(err).Msg("Failed to exchange code") return "", err } oauth.Token = token diff --git a/main.go b/main.go index 1d0dc35..72b3d91 100644 --- a/main.go +++ b/main.go @@ -14,7 +14,7 @@ func main() { // Logger log.Logger = log.Output(zerolog.ConsoleWriter{Out: os.Stderr, TimeFormat: time.RFC3339}).With().Timestamp().Logger() log.Info().Str("version", assets.Version).Msg("Starting tinyauth") - + // Run cmd cmd.Execute() }