aboutsummaryrefslogtreecommitdiff
path: root/pkg/auth/github/github.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/auth/github/github.go')
-rw-r--r--pkg/auth/github/github.go45
1 files changed, 45 insertions, 0 deletions
diff --git a/pkg/auth/github/github.go b/pkg/auth/github/github.go
new file mode 100644
index 00000000..2a8d8b48
--- /dev/null
+++ b/pkg/auth/github/github.go
@@ -0,0 +1,45 @@
+package github
+
+import (
+ "context"
+ "crypto/tls"
+ "errors"
+ "fmt"
+ "net/http"
+ "strings"
+
+ "github.com/google/go-github/github"
+)
+
+func GITHUBAuth(apiEndpoint, userName, passwd string) (string, string, string, string, string, error) {
+ tr := &http.Transport{
+ TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
+ }
+ tp := github.BasicAuthTransport{
+ Username: strings.TrimSpace(userName),
+ Password: strings.TrimSpace(passwd),
+ Transport: tr,
+ }
+ client, err := github.NewEnterpriseClient(apiEndpoint, apiEndpoint, tp.Client())
+ if err != nil {
+ return "", "", "", "", "", errors.New("Authentication failure: GitHub Api Endpoint can not be reached")
+ }
+ ctx := context.Background()
+ user, _, err := client.Users.Get(ctx, "")
+ if err != nil || user == nil {
+ fmt.Println(err)
+ msg := fmt.Sprintf("Authentication failure! Github Api Endpoint authticated failed! User %s", userName)
+ return "", "", "", "", "", errors.New(msg)
+ }
+
+ var website = ""
+ if user.HTMLURL != nil {
+ website = strings.ToLower(*user.HTMLURL)
+ }
+ var location = ""
+ if user.Location != nil {
+ location = strings.ToUpper(*user.Location)
+ }
+
+ return *user.Login, *user.Name, *user.Email, website, location, nil
+}