diff options
| author | Lizzy Hunt <lizzy.hunt@usu.edu> | 2024-03-27 15:02:31 -0600 |
|---|---|---|
| committer | Lizzy Hunt <lizzy.hunt@usu.edu> | 2024-03-27 15:02:31 -0600 |
| commit | 0dc2679005e70c50024bc49e750f3998a0c4c24b (patch) | |
| tree | 73153522195608ee2ed3bbb4c2ed3cbc621b6b07 /args/args.go | |
| parent | 8d65f4e23026dce5d04e9a4afaf216f0732482a6 (diff) | |
| download | hatecomputers.club-0dc2679005e70c50024bc49e750f3998a0c4c24b.tar.gz hatecomputers.club-0dc2679005e70c50024bc49e750f3998a0c4c24b.zip | |
authentication! oauth2!
Diffstat (limited to 'args/args.go')
| -rw-r--r-- | args/args.go | 47 |
1 files changed, 43 insertions, 4 deletions
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 |
