diff --git a/src/highlanderticketing/handler/match.go b/src/highlanderticketing/handler/match.go index 4bee86e12c38f388a3dcca30c15f28fd4bb02f47..5be0140e57eb0ba7617a39a1b0884148a67a6e60 100644 --- a/src/highlanderticketing/handler/match.go +++ b/src/highlanderticketing/handler/match.go @@ -120,7 +120,7 @@ func DeleteMatch(w http.ResponseWriter, r *http.Request) { sendJson(w, result{Success: "OK"}) }*/ func getMatch(r *http.Request) (*model.Match, error) { - var match model.Match + var match *model.Match err := json.NewDecoder(r.Body).Decode(&match) if err != nil { log.Errorf("Can't serialize request body to campaign struct: %v", err) @@ -129,7 +129,7 @@ func getMatch(r *http.Request) (*model.Match, error) { log.Infof("request body seralized to campaign struct") log.Tracef("body seralized in struct campaign: %v", match) } - return &match, nil + return match, nil } /*func getMatches(r *http.Request) (*[]model.Match, error){ diff --git a/src/highlanderticketing/handler/oauth.go b/src/highlanderticketing/handler/oauth.go index f8d740bb126b5d03b35fa0b340c9f311b84bc26f..fea2395ea6d7099702ce6581cf7b6d8d0513f400 100644 --- a/src/highlanderticketing/handler/oauth.go +++ b/src/highlanderticketing/handler/oauth.go @@ -8,6 +8,7 @@ import ( log "github.com/sirupsen/logrus" "gitlab.reutlingen-university.de/ege/highlander-ticketing-go-ss2023/src/highlanderticketing/config" + "gitlab.reutlingen-university.de/ege/highlander-ticketing-go-ss2023/src/highlanderticketing/service" "golang.org/x/oauth2" ) @@ -31,6 +32,14 @@ func HandleCallback(w http.ResponseWriter, r *http.Request) { // Verwende das Token, um auf die Google API zuzugreifen oder speichere es für spätere Verwendung // token.AccessToken enthält den Zugriffstoken // token.RefreshToken enthält den Aktualisierungstoken + h, err := service.ValidateGoogleAccessToken(token.AccessToken) + if err != nil { + fmt.Printf("Fehler bei der Überprüfung des Tokens: %s\n", err.Error()) + } else if h { + fmt.Println("Der Access Token ist gültig.") + } else { + fmt.Println("Der Access Token ist ungültig.") + } fmt.Fprintf(w, "Token %s", token.AccessToken) fmt.Fprintf(w, "Token %s", token.RefreshToken) @@ -46,7 +55,12 @@ func HandleCallback(w http.ResponseWriter, r *http.Request) { // Lese die Benutzerinfo als JSON-Daten var userinfo struct { - Email string `json:"email"` + Email string `json:"email"` + ID string `json:"id"` + Namen string `json:"name"` + GivenName string `json:"given_name"` + FamilyName string `json:"family_name"` + Locale string `json:"locale"` } err = json.NewDecoder(response.Body).Decode(&userinfo) if err != nil { @@ -57,4 +71,9 @@ func HandleCallback(w http.ResponseWriter, r *http.Request) { // Hier kannst du die E-Mail-Adresse des Benutzers verwenden fmt.Fprintf(w, "E-Mail-Adresse: %s", userinfo.Email) + fmt.Fprintf(w, "ID: %s", userinfo.ID) + fmt.Fprintf(w, "Name: %s", userinfo.Namen) + fmt.Fprintf(w, "FamilyName: %s", userinfo.FamilyName) + fmt.Fprintf(w, "GivenName: %s", userinfo.GivenName) + fmt.Fprintf(w, "Locale: %s", userinfo.Locale) } diff --git a/src/highlanderticketing/service/oauth.go b/src/highlanderticketing/service/oauth.go new file mode 100644 index 0000000000000000000000000000000000000000..7b4beefff3858987f7b38f4c9a0fcbcc0748fe2b --- /dev/null +++ b/src/highlanderticketing/service/oauth.go @@ -0,0 +1,47 @@ +package service + +import ( + "encoding/json" + "fmt" + "io/ioutil" + "net/http" +) + +func ValidateGoogleAccessToken(accessToken string) (bool, error) { + client := &http.Client{} + req, err := http.NewRequest("GET", "https://www.googleapis.com/oauth2/v1/tokeninfo?access_token="+accessToken, nil) + if err != nil { + return false, err + } + + resp, err := client.Do(req) + if err != nil { + return false, err + } + defer resp.Body.Close() + + body, err := ioutil.ReadAll(resp.Body) + if err != nil { + return false, err + } + + var tokenInfo struct { + ExpiresIn int `json:"expires_in"` + Error string `json:"error"` + } + + err = json.Unmarshal(body, &tokenInfo) + if err != nil { + return false, err + } + + if tokenInfo.Error != "" { + return false, fmt.Errorf("Fehler bei der Überprüfung des Tokens: %s", tokenInfo.Error) + } + + if tokenInfo.ExpiresIn > 0 { + return true, nil + } + + return false, nil +}