diff --git a/goauth20 b/goauth20 deleted file mode 100755 index af4be35..0000000 Binary files a/goauth20 and /dev/null differ diff --git a/routes.auth.go b/routes.auth.go index f1e2c22..7611e80 100644 --- a/routes.auth.go +++ b/routes.auth.go @@ -2,6 +2,7 @@ package main import ( "bytes" + "encoding/base64" "encoding/json" "fmt" "html/template" @@ -9,6 +10,7 @@ import ( "net/http" "net/url" "strconv" + "strings" "time" "github.com/dgrijalva/jwt-go" @@ -16,8 +18,7 @@ import ( //File structure du fichier type File struct { - Name string - Other string + jwtProduce string } type JsonToken struct { @@ -55,28 +56,20 @@ func (s *server) handleIndex() http.HandlerFunc { fmt.Errorf("erreur suivante %v", err) } - f := File{Name: "Drogou", Other: "Dans le fichier"} - - err = t.Execute(rw, f) + err = t.Execute(rw, nil) if err != nil { fmt.Errorf("erreur suivante %v", err) } } } -func (s *server) handleTest() http.HandlerFunc { +func (s *server) handleLocal() http.HandlerFunc { return func(rw http.ResponseWriter, r *http.Request) { - fmt.Println("sub") - sub := r.FormValue("sub") - fmt.Printf("sub %v", sub) idEntreprise := r.FormValue("id_entreprise") - fmt.Printf("idEntreprise %v", idEntreprise) rcaPartnerID := r.FormValue("rcaPartnerId") - fmt.Printf("rcaPartnerID %v", rcaPartnerID) var jwtKey = []byte(r.FormValue("secret")) - fmt.Printf("secret %v", jwtKey) // Declare the expiration time of the token // here, we have kept it as 5 minutes @@ -96,26 +89,60 @@ func (s *server) handleTest() http.HandlerFunc { ExpiresAt: expirationTime.Unix(), }, } - fmt.Printf("claims %v", claims) // Declare the token with the algorithm used for signing, and the claims tokenstr := jwt.NewWithClaims(jwt.SigningMethodHS256, claims) - fmt.Printf("token %v", tokenstr) + zer, _ := json.Marshal(tokenstr.Claims) + fmt.Printf("zer %v", string(zer)) // Create the JWT string tokenString, err := tokenstr.SignedString(jwtKey) - fmt.Printf("tokenString %v", tokenString) if err != nil { log.Printf("erreur %v", err) // If there is an error in creating the JWT return an internal server error rw.WriteHeader(http.StatusInternalServerError) return } + log.Printf("le token %v \n", tokenString) + tableau := strings.Split(tokenString, ".") + log.Println(tableau[0]) + headerrr, _ := base64.URLEncoding.DecodeString(tableau[0]) + log.Println(string(string(headerrr))) - s.response(rw, r, tokenString, http.StatusOK) + log.Println(tableau[1]) + claimssss, _ := base64.URLEncoding.DecodeString(tableau[1]) + log.Println(string(string(claimssss))) + + log.Println(tableau[2]) + test, _ := base64.URLEncoding.DecodeString(tableau[2]) + log.Println(string(string(test))) + + s.response(rw, r, string(zer), http.StatusOK) } } + +func (s *server) handleOAuth20() http.HandlerFunc { + return func(rw http.ResponseWriter, r *http.Request) { + + domain := r.FormValue("domain") + clientID := r.FormValue("clientId") + scopes := r.FormValue("scopes") + currentCompany := r.FormValue("currentCompany") + if len(currentCompany) == 0 { + currentCompany = "false" + } else { + currentCompany = "true" + } + + log.Println(currentCompany) + redirecthttp := "https://" + domain + "/entreprise-partenaire/authorize?client_id=" + clientID + "&scope=" + scopes + "¤t_company=" + currentCompany + "&redirect_uri=http://localhost:8080/oauth/redirect" + http.Redirect(rw, r, redirecthttp, http.StatusMovedPermanently) + + } + +} + func (s *server) handleRedirect() http.HandlerFunc { return func(rw http.ResponseWriter, r *http.Request) { @@ -154,15 +181,13 @@ func (s *server) handleRedirect() http.HandlerFunc { } defer resp.Body.Close() - tokenVal := t.(interface{}).(map[string]interface{}) - if err != nil { log.Printf("Cannot parse token body err=%v", err) s.response(rw, r, nil, http.StatusBadGateway) return } - s.response(rw, r, tokenVal["access_token"], http.StatusOK) + s.responseFile(rw, r, t, http.StatusOK) } } diff --git a/routes.go b/routes.go index 2431952..fe52cca 100644 --- a/routes.go +++ b/routes.go @@ -3,6 +3,7 @@ package main func (s *server) routes() { s.router.HandleFunc("/index", s.handleIndex()).Methods("GET") s.router.HandleFunc("/oauth/redirect", s.handleRedirect()).Methods("GET") - s.router.HandleFunc("/test", s.handleTest()).Methods("POST") + s.router.HandleFunc("/local", s.handleLocal()).Methods("POST") + s.router.HandleFunc("/oauth20", s.handleOAuth20()).Methods("POST") } diff --git a/server.go b/server.go index da2123f..446a158 100644 --- a/server.go +++ b/server.go @@ -2,6 +2,8 @@ package main import ( "encoding/json" + "fmt" + "html/template" "log" "net/http" @@ -40,6 +42,31 @@ func (s *server) response(rw http.ResponseWriter, _ *http.Request, data interfac } +func (s *server) responseFile(rw http.ResponseWriter, _ *http.Request, data interface{}, status int) { + rw.Header().Set("Content-Type", "text/html") + rw.WriteHeader(status) + + tokenVal := data.(interface{}).(map[string]interface{}) + + //t := template.New("mon template") + tem, err := template.ParseFiles("template/resultat.html") + if err != nil { + fmt.Errorf("erreur suivante %v", err) + } + + sssss := tokenVal["access_token"].(string) + //sssss := "erer" + log.Println(sssss) + + f := File{jwtProduce: sssss} + + err = tem.Execute(rw, f) + if err != nil { + fmt.Errorf("erreur suivante %v", err) + } + +} + func (s *server) decode(rw http.ResponseWriter, r *http.Request, v interface{}) error { return json.NewDecoder(r.Body).Decode(v) diff --git a/template/jwt.html b/template/jwt.html index 524d3a3..6b28961 100644 --- a/template/jwt.html +++ b/template/jwt.html @@ -28,8 +28,8 @@ return encodedSource; } - function generateToken() { - var form = document.getElementById("monform"); + function generateToken(form) { + var form = document.getElementById(form); form.submit(); @@ -44,12 +44,12 @@ var data = { "sub": document.getElementById('sub').value, "exp": Math.floor(Date.now() / 1000) + 6 * 30 * 24 * 3600, - "roles": [ - "RCA_CLOUD_EXPERT_COMPTABLE", - "E_COLLECTE_BO_CREA", - "E_CREATION_CREA", - "E_QUESTIONNAIRE_CREA" - ], + "roles": [ + "RCA_CLOUD_EXPERT_COMPTABLE", + "E_COLLECTE_BO_CREA", + "E_CREATION_CREA", + "E_QUESTIONNAIRE_CREA" + ], "id_entreprise": document.getElementById('id_entreprise').value, "rcaPartnerId": document.getElementById('rcaPartnerId').value }; @@ -75,9 +75,12 @@
+