From 0dc2679005e70c50024bc49e750f3998a0c4c24b Mon Sep 17 00:00:00 2001 From: Lizzy Hunt Date: Wed, 27 Mar 2024 15:02:31 -0600 Subject: authentication! oauth2! --- args/args.go | 47 +++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 43 insertions(+), 4 deletions(-) (limited to 'args/args.go') diff --git a/args/args.go b/args/args.go index 9176d27..a360d57 100644 --- a/args/args.go +++ b/args/args.go @@ -4,6 +4,9 @@ import ( "errors" "flag" "os" + "strings" + + "golang.org/x/oauth2" ) type Arguments struct { @@ -15,6 +18,9 @@ type Arguments struct { Port int Server bool Migrate bool + + OauthConfig *oauth2.Config + OauthUserInfoURI string } func GetArgs() (*Arguments, error) { @@ -31,11 +37,41 @@ func GetArgs() (*Arguments, error) { cloudflareToken := os.Getenv("CLOUDFLARE_TOKEN") cloudflareZone := os.Getenv("CLOUDFLARE_ZONE") - if cloudflareToken == "" { - return nil, errors.New("please set the CLOUDFLARE_TOKEN environment variable") + oauthClientID := os.Getenv("OAUTH_CLIENT_ID") + oauthClientSecret := os.Getenv("OAUTH_CLIENT_SECRET") + oauthScopes := os.Getenv("OAUTH_SCOPES") + oauthAuthURL := os.Getenv("OAUTH_AUTH_URL") + oauthTokenURL := os.Getenv("OAUTH_TOKEN_URL") + oauthRedirectURI := os.Getenv("OAUTH_REDIRECT_URI") + oauthUserInfoURI := os.Getenv("OAUTH_USER_INFO_URI") + + envVars := [][]string{ + {cloudflareToken, "CLOUDFLARE_TOKEN"}, + {cloudflareZone, "CLOUDFLARE_ZONE"}, + {oauthClientID, "OAUTH_CLIENT_ID"}, + {oauthClientSecret, "OAUTH_CLIENT_SECRET"}, + {oauthScopes, "OAUTH_SCOPES"}, + {oauthAuthURL, "OAUTH_AUTH_URL"}, + {oauthTokenURL, "OAUTH_TOKEN_URL"}, + {oauthRedirectURI, "OAUTH_REDIRECT_URI"}, + {oauthUserInfoURI, "OAUTH_USER_INFO_URI"}, } - if cloudflareZone == "" { - return nil, errors.New("please set the CLOUDFLARE_ZONE environment variable") + + for _, envVar := range envVars { + if envVar[0] == "" { + return nil, errors.New("please set the " + envVar[1] + " environment variable") + } + } + + oauthConfig := &oauth2.Config{ + ClientID: oauthClientID, + ClientSecret: oauthClientSecret, + Scopes: strings.Split(oauthScopes, ","), + Endpoint: oauth2.Endpoint{ + AuthURL: oauthAuthURL, + TokenURL: oauthTokenURL, + }, + RedirectURL: oauthRedirectURI, } arguments := &Arguments{ @@ -47,6 +83,9 @@ func GetArgs() (*Arguments, error) { Port: *port, Server: *server, Migrate: *migrate, + + OauthConfig: oauthConfig, + OauthUserInfoURI: oauthUserInfoURI, } return arguments, nil -- cgit v1.2.3-70-g09d2