package routes import ( "encoding/json" "fmt" "github.com/google/uuid" "github.com/gorilla/mux" "linhdevtran99/rest-api/models" "linhdevtran99/rest-api/rest-api/controler" "linhdevtran99/rest-api/rest-api/services" "linhdevtran99/rest-api/utils" "net/http" ) func VerifyWithOTP(w http.ResponseWriter, r *http.Request) error { if r.Method == http.MethodPost { // declare variable var otpInfo models.OTPVerify //get data from body _ = json.NewDecoder(r.Body).Decode(&otpInfo) //check otp and create user services.CheckOTPIsValid(&otpInfo, w) } return nil } func VerifyWithJWT(w http.ResponseWriter, r *http.Request) error { fmt.Println("hello") if r.Method == http.MethodPost { var jwtInfo models.LinkVerify _ = json.NewDecoder(r.Body).Decode(&jwtInfo) _, err := uuid.Parse(jwtInfo.UUID) //checking uuid if err != nil { fmt.Println("Internal log: UUID not valid") _ = utils.WriteJSON(w, http.StatusBadRequest, models.ErrorAPI{ Errors: []string{"UUID not valid"}, Message: "UUID not valid", Type: "UUIDNotValid", }) return err } //call function check jwt isValid, email := utils.DecryptAESMailLink(&jwtInfo, w) if isValid == true { services.VerifyWithJWT(email, w) } } return nil } func AuthRouterSetup(router *mux.Router) { authRouter := router.PathPrefix("/account").Subrouter() authRouter.Handle("/register", utils.MakeHTTPHandlerFn(controler.RegisterNewAccount)).Methods("POST") authRouter.Handle("/register/verifyAccountOTP", utils.MakeHTTPHandlerFn(VerifyWithOTP)).Methods("POST") authRouter.Handle("/register/verifyAccountJWT", utils.MakeHTTPHandlerFn(VerifyWithJWT)).Methods("POST") }