Skip to content
Snippets Groups Projects
Commit 7565d484 authored by Yege1893's avatar Yege1893
Browse files

oauht validateaccesstoken

parent 66eff354
No related branches found
No related tags found
1 merge request!4Master
...@@ -120,7 +120,7 @@ func DeleteMatch(w http.ResponseWriter, r *http.Request) { ...@@ -120,7 +120,7 @@ func DeleteMatch(w http.ResponseWriter, r *http.Request) {
sendJson(w, result{Success: "OK"}) sendJson(w, result{Success: "OK"})
}*/ }*/
func getMatch(r *http.Request) (*model.Match, error) { func getMatch(r *http.Request) (*model.Match, error) {
var match model.Match var match *model.Match
err := json.NewDecoder(r.Body).Decode(&match) err := json.NewDecoder(r.Body).Decode(&match)
if err != nil { if err != nil {
log.Errorf("Can't serialize request body to campaign struct: %v", err) log.Errorf("Can't serialize request body to campaign struct: %v", err)
...@@ -129,7 +129,7 @@ func getMatch(r *http.Request) (*model.Match, error) { ...@@ -129,7 +129,7 @@ func getMatch(r *http.Request) (*model.Match, error) {
log.Infof("request body seralized to campaign struct") log.Infof("request body seralized to campaign struct")
log.Tracef("body seralized in struct campaign: %v", match) log.Tracef("body seralized in struct campaign: %v", match)
} }
return &match, nil return match, nil
} }
/*func getMatches(r *http.Request) (*[]model.Match, error){ /*func getMatches(r *http.Request) (*[]model.Match, error){
......
...@@ -8,6 +8,7 @@ import ( ...@@ -8,6 +8,7 @@ import (
log "github.com/sirupsen/logrus" 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/config"
"gitlab.reutlingen-university.de/ege/highlander-ticketing-go-ss2023/src/highlanderticketing/service"
"golang.org/x/oauth2" "golang.org/x/oauth2"
) )
...@@ -31,6 +32,14 @@ func HandleCallback(w http.ResponseWriter, r *http.Request) { ...@@ -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 // Verwende das Token, um auf die Google API zuzugreifen oder speichere es für spätere Verwendung
// token.AccessToken enthält den Zugriffstoken // token.AccessToken enthält den Zugriffstoken
// token.RefreshToken enthält den Aktualisierungstoken // 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.AccessToken)
fmt.Fprintf(w, "Token %s", token.RefreshToken) fmt.Fprintf(w, "Token %s", token.RefreshToken)
...@@ -46,7 +55,12 @@ func HandleCallback(w http.ResponseWriter, r *http.Request) { ...@@ -46,7 +55,12 @@ func HandleCallback(w http.ResponseWriter, r *http.Request) {
// Lese die Benutzerinfo als JSON-Daten // Lese die Benutzerinfo als JSON-Daten
var userinfo struct { 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) err = json.NewDecoder(response.Body).Decode(&userinfo)
if err != nil { if err != nil {
...@@ -57,4 +71,9 @@ func HandleCallback(w http.ResponseWriter, r *http.Request) { ...@@ -57,4 +71,9 @@ func HandleCallback(w http.ResponseWriter, r *http.Request) {
// Hier kannst du die E-Mail-Adresse des Benutzers verwenden // Hier kannst du die E-Mail-Adresse des Benutzers verwenden
fmt.Fprintf(w, "E-Mail-Adresse: %s", userinfo.Email) 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)
} }
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
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment