diff --git a/Dockerfile b/Dockerfile index 0b695b6..8cf9c40 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,7 +7,7 @@ ARG VERSION="latest" ENV VERSION="$VERSION" RUN echo "$VERSION" -RUN apk add build-base &&\ +RUN apk add build-base nodejs &&\ make clean && make && \ chmod 777 build/server diff --git a/server/go.mod b/server/go.mod index 27897bf..da00d5c 100644 --- a/server/go.mod +++ b/server/go.mod @@ -16,6 +16,7 @@ require ( github.com/json-iterator/go v1.1.11 // indirect github.com/mattn/go-isatty v0.0.13 // indirect github.com/mattn/go-sqlite3 v1.14.7 // indirect + github.com/robertkrimen/otto v0.0.0-20211024170158-b87d35c0b86f // indirect github.com/ugorji/go v1.2.6 // indirect github.com/vektah/gqlparser/v2 v2.1.0 golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97 @@ -28,5 +29,4 @@ require ( gorm.io/driver/postgres v1.1.0 gorm.io/driver/sqlite v1.1.4 gorm.io/gorm v1.21.11 - rogchap.com/v8go v0.6.0 // indirect ) diff --git a/server/go.sum b/server/go.sum index 9506459..808720c 100644 --- a/server/go.sum +++ b/server/go.sum @@ -556,6 +556,8 @@ github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+Gx github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/robertkrimen/otto v0.0.0-20211019175142-5b0d97091c6f h1:wOVoULFf7IVSJ9hl8wnQew/kCpchffRb7a81H9/IcS4= github.com/robertkrimen/otto v0.0.0-20211019175142-5b0d97091c6f/go.mod h1:/mK7FZ3mFYEn9zvNPhpngTyatyehSwte5bJZ4ehL5Xw= +github.com/robertkrimen/otto v0.0.0-20211024170158-b87d35c0b86f h1:a7clxaGmmqtdNTXyvrp/lVO/Gnkzlhc/+dLs5v965GM= +github.com/robertkrimen/otto v0.0.0-20211024170158-b87d35c0b86f/go.mod h1:/mK7FZ3mFYEn9zvNPhpngTyatyehSwte5bJZ4ehL5Xw= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= diff --git a/server/utils/authToken.go b/server/utils/authToken.go index a79ec7e..8dcb87b 100644 --- a/server/utils/authToken.go +++ b/server/utils/authToken.go @@ -13,7 +13,7 @@ import ( "github.com/authorizerdev/authorizer/server/enum" "github.com/gin-gonic/gin" "github.com/golang-jwt/jwt" - v8 "rogchap.com/v8go" + "github.com/robertkrimen/otto" ) func CreateAuthToken(user db.User, tokenType enum.TokenType, roles []string) (string, int64, error) { @@ -50,25 +50,25 @@ func CreateAuthToken(user db.User, tokenType enum.TokenType, roles []string) (st "signUpMethods": strings.Split(user.SignupMethod, ","), } - ctx, _ := v8.NewContext() + vm := otto.New() userBytes, _ := json.Marshal(userInfo) claimBytes, _ := json.Marshal(customClaims) - ctx.RunScript(fmt.Sprintf(` - const user = %s; - const tokenPayload = %s; - const customFunction = %s; - const functionRes = JSON.stringify(customFunction(user, tokenPayload)); - `, string(userBytes), string(claimBytes), accessTokenScript), "functionCall.js") + vm.Run(fmt.Sprintf(` + var user = %s; + var tokenPayload = %s; + var customFunction = %s; + var functionRes = JSON.stringify(customFunction(user, tokenPayload)); + `, string(userBytes), string(claimBytes), accessTokenScript)) - val, err := ctx.RunScript("functionRes", "functionRes.js") + val, err := vm.Get("functionRes") if err != nil { log.Println("=> err custom access token script:", err) } else { extraPayload := make(map[string]interface{}) err = json.Unmarshal([]byte(fmt.Sprintf("%s", val)), &extraPayload) - + log.Println("extra:", extraPayload) if err != nil { log.Println("Error converting accessTokenScript response to map:", err) } else {