diff --git a/app/package-lock.json b/app/package-lock.json index 2afc0db..b0236f6 100644 --- a/app/package-lock.json +++ b/app/package-lock.json @@ -9,7 +9,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@authorizerdev/authorizer-react": "^1.3.1", + "@authorizerdev/authorizer-react": "^1.3.2", "@types/react": "^17.0.15", "@types/react-dom": "^17.0.9", "esbuild": "^0.12.17", @@ -27,9 +27,9 @@ } }, "node_modules/@authorizerdev/authorizer-js": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@authorizerdev/authorizer-js/-/authorizer-js-2.0.2.tgz", - "integrity": "sha512-YgCtpaBDGYGMUlINFsvGNJnBtbnFG2wo66xX2i6auop52oVmKimvLpzOx8306/YddCxWhg9FljyVMp88Mbnxyw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@authorizerdev/authorizer-js/-/authorizer-js-2.0.3.tgz", + "integrity": "sha512-uencwr3Ea8mwfxVKDFf2ITRCRSmzvua+O2voRuiWQORtRQTgZQjkN3M+IEkEj+WP9M1iFIl+NDgzECsp8ptC/A==", "dependencies": { "cross-fetch": "^3.1.5" }, @@ -41,11 +41,11 @@ } }, "node_modules/@authorizerdev/authorizer-react": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@authorizerdev/authorizer-react/-/authorizer-react-1.3.1.tgz", - "integrity": "sha512-X7vQMr5jtZ28z+YZOt5ISB3lOYXNszpLpWw4S6VNs7TLAd5/ZP2kPaSdDbUgIvQFyYy51DHQeGygOu3G1n0Mdw==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@authorizerdev/authorizer-react/-/authorizer-react-1.3.2.tgz", + "integrity": "sha512-3kMAygHBCa8Fc9Oo0lz1k88r+Pd6kx1PSn3NMYLwxQXy2jRt4xWn7iuGn+SDGFs3DzofaN71I61gRwQ+6dO1rw==", "dependencies": { - "@authorizerdev/authorizer-js": "^2.0.2", + "@authorizerdev/authorizer-js": "^2.0.3", "validator": "^13.11.0" }, "engines": { diff --git a/app/package.json b/app/package.json index 26a765c..a3167c3 100644 --- a/app/package.json +++ b/app/package.json @@ -12,7 +12,7 @@ "author": "Lakhan Samani", "license": "ISC", "dependencies": { - "@authorizerdev/authorizer-react": "^1.3.1", + "@authorizerdev/authorizer-react": "^1.3.2", "@types/react": "^17.0.15", "@types/react-dom": "^17.0.9", "esbuild": "^0.12.17", diff --git a/app/yarn.lock b/app/yarn.lock index 92529a8..f09e1cf 100644 --- a/app/yarn.lock +++ b/app/yarn.lock @@ -2,19 +2,19 @@ # yarn lockfile v1 -"@authorizerdev/authorizer-js@^2.0.2": - version "2.0.2" - resolved "https://registry.npmjs.org/@authorizerdev/authorizer-js/-/authorizer-js-2.0.2.tgz" - integrity sha512-YgCtpaBDGYGMUlINFsvGNJnBtbnFG2wo66xX2i6auop52oVmKimvLpzOx8306/YddCxWhg9FljyVMp88Mbnxyw== +"@authorizerdev/authorizer-js@^2.0.3": + version "2.0.3" + resolved "https://registry.npmjs.org/@authorizerdev/authorizer-js/-/authorizer-js-2.0.3.tgz" + integrity sha512-uencwr3Ea8mwfxVKDFf2ITRCRSmzvua+O2voRuiWQORtRQTgZQjkN3M+IEkEj+WP9M1iFIl+NDgzECsp8ptC/A== dependencies: cross-fetch "^3.1.5" -"@authorizerdev/authorizer-react@^1.3.1": - version "1.3.1" - resolved "https://registry.npmjs.org/@authorizerdev/authorizer-react/-/authorizer-react-1.3.1.tgz" - integrity sha512-X7vQMr5jtZ28z+YZOt5ISB3lOYXNszpLpWw4S6VNs7TLAd5/ZP2kPaSdDbUgIvQFyYy51DHQeGygOu3G1n0Mdw== +"@authorizerdev/authorizer-react@^1.3.2": + version "1.3.2" + resolved "https://registry.npmjs.org/@authorizerdev/authorizer-react/-/authorizer-react-1.3.2.tgz" + integrity sha512-3kMAygHBCa8Fc9Oo0lz1k88r+Pd6kx1PSn3NMYLwxQXy2jRt4xWn7iuGn+SDGFs3DzofaN71I61gRwQ+6dO1rw== dependencies: - "@authorizerdev/authorizer-js" "^2.0.2" + "@authorizerdev/authorizer-js" "^2.0.3" validator "^13.11.0" "@babel/code-frame@^7.22.13": diff --git a/dashboard/public/roblox.png b/dashboard/public/roblox.png new file mode 100644 index 0000000..cc34961 Binary files /dev/null and b/dashboard/public/roblox.png differ diff --git a/dashboard/src/components/EnvComponents/OAuthConfig.tsx b/dashboard/src/components/EnvComponents/OAuthConfig.tsx index 799638b..ce6d3c4 100644 --- a/dashboard/src/components/EnvComponents/OAuthConfig.tsx +++ b/dashboard/src/components/EnvComponents/OAuthConfig.tsx @@ -17,7 +17,8 @@ import { FaApple, FaTwitter, FaMicrosoft, - FaTwitch, FaDiscord, + FaTwitch, + FaDiscord, } from 'react-icons/fa'; import { TextInputType, @@ -474,6 +475,47 @@ const OAuthConfig = ({ /> + +
+ Roblox +
+
+ +
+
+ +
+
diff --git a/dashboard/src/constants.ts b/dashboard/src/constants.ts index a9ca609..33f72c8 100644 --- a/dashboard/src/constants.ts +++ b/dashboard/src/constants.ts @@ -14,6 +14,7 @@ export const TextInputType = { MICROSOFT_CLIENT_ID: 'MICROSOFT_CLIENT_ID', MICROSOFT_ACTIVE_DIRECTORY_TENANT_ID: 'MICROSOFT_ACTIVE_DIRECTORY_TENANT_ID', TWITCH_CLIENT_ID: 'TWITCH_CLIENT_ID', + ROBLOX_CLIENT_ID: 'ROBLOX_CLIENT_ID', JWT_ROLE_CLAIM: 'JWT_ROLE_CLAIM', REDIS_URL: 'REDIS_URL', SMTP_HOST: 'SMTP_HOST', @@ -46,6 +47,7 @@ export const HiddenInputType = { TWITTER_CLIENT_SECRET: 'TWITTER_CLIENT_SECRET', MICROSOFT_CLIENT_SECRET: 'MICROSOFT_CLIENT_SECRET', TWITCH_CLIENT_SECRET: 'TWITCH_CLIENT_SECRET', + ROBLOX_CLIENT_SECRET: 'ROBLOX_CLIENT_SECRET', JWT_SECRET: 'JWT_SECRET', SMTP_PASSWORD: 'SMTP_PASSWORD', ADMIN_SECRET: 'ADMIN_SECRET', @@ -141,6 +143,8 @@ export interface envVarTypes { MICROSOFT_ACTIVE_DIRECTORY_TENANT_ID: string; TWITCH_CLIENT_ID: string; TWITCH_CLIENT_SECRET: string; + ROBLOX_CLIENT_ID: string; + ROBLOX_CLIENT_SECRET: string; ROLES: [string] | []; DEFAULT_ROLES: [string] | []; PROTECTED_ROLES: [string] | []; diff --git a/dashboard/src/graphql/queries/index.ts b/dashboard/src/graphql/queries/index.ts index c215524..4953fd1 100644 --- a/dashboard/src/graphql/queries/index.ts +++ b/dashboard/src/graphql/queries/index.ts @@ -39,6 +39,8 @@ export const EnvVariablesQuery = ` MICROSOFT_ACTIVE_DIRECTORY_TENANT_ID TWITCH_CLIENT_ID TWITCH_CLIENT_SECRET + ROBLOX_CLIENT_ID + ROBLOX_CLIENT_SECRET DEFAULT_ROLES PROTECTED_ROLES ROLES diff --git a/dashboard/src/pages/Environment.tsx b/dashboard/src/pages/Environment.tsx index cc60337..f163c4f 100644 --- a/dashboard/src/pages/Environment.tsx +++ b/dashboard/src/pages/Environment.tsx @@ -59,6 +59,8 @@ const Environment = () => { MICROSOFT_ACTIVE_DIRECTORY_TENANT_ID: '', TWITCH_CLIENT_ID: '', TWITCH_CLIENT_SECRET: '', + ROBLOX_CLIENT_ID: '', + ROBLOX_CLIENT_SECRET: '', ROLES: [], DEFAULT_ROLES: [], PROTECTED_ROLES: [], diff --git a/server/constants/auth_methods.go b/server/constants/auth_methods.go index 6c800c4..ca2002f 100644 --- a/server/constants/auth_methods.go +++ b/server/constants/auth_methods.go @@ -27,4 +27,6 @@ const ( AuthRecipeMethodMicrosoft = "microsoft" // AuthRecipeMethodTwitch is the twitch auth method AuthRecipeMethodTwitch = "twitch" + // AuthRecipeMethodRoblox is the roblox auth method + AuthRecipeMethodRoblox = "roblox" ) diff --git a/server/constants/env.go b/server/constants/env.go index 48f3f08..983a87f 100644 --- a/server/constants/env.go +++ b/server/constants/env.go @@ -126,6 +126,10 @@ const ( EnvKeyTwitchClientID = "TWITCH_CLIENT_ID" // EnvKeyTwitchClientSecret key for env variable TWITCH_CLIENT_SECRET EnvKeyTwitchClientSecret = "TWITCH_CLIENT_SECRET" + // EnvKeyRobloxClientID key for env variable ROBLOX_CLIENT_ID + EnvKeyRobloxClientID = "ROBLOX_CLIENT_ID" + // EnvKeyRobloxClientSecret key for env variable ROBLOX_CLIENT_SECRET + EnvKeyRobloxClientSecret = "ROBLOX_CLIENT_SECRET" // EnvKeyOrganizationName key for env variable ORGANIZATION_NAME EnvKeyOrganizationName = "ORGANIZATION_NAME" // EnvKeyOrganizationLogo key for env variable ORGANIZATION_LOGO diff --git a/server/constants/oauth_info_urls.go b/server/constants/oauth_info_urls.go index 1079db3..1297a2e 100644 --- a/server/constants/oauth_info_urls.go +++ b/server/constants/oauth_info_urls.go @@ -17,6 +17,9 @@ const ( TwitterUserInfoURL = "https://api.twitter.com/2/users/me?user.fields=id,name,profile_image_url,username" + // RobloxUserInfoURL is the URL to get user info from Roblox + RobloxUserInfoURL = "https://apis.roblox.com/oauth/v1/userinfo" + DiscordUserInfoURL = "https://discord.com/api/oauth2/@me" // Get microsoft user info. // Ref: https://learn.microsoft.com/en-us/azure/active-directory/develop/userinfo diff --git a/server/env/env.go b/server/env/env.go index bd713c3..110e0c5 100644 --- a/server/env/env.go +++ b/server/env/env.go @@ -79,6 +79,10 @@ func InitAllEnv() error { osMicrosoftClientID := os.Getenv(constants.EnvKeyMicrosoftClientID) osMicrosoftClientSecret := os.Getenv(constants.EnvKeyMicrosoftClientSecret) osMicrosoftActiveDirectoryTenantID := os.Getenv(constants.EnvKeyMicrosoftActiveDirectoryTenantID) + osTwitchClientID := os.Getenv(constants.EnvKeyTwitchClientID) + osTwitchClientSecret := os.Getenv(constants.EnvKeyTwitchClientSecret) + osRobloxClientID := os.Getenv(constants.EnvKeyTwitchClientID) + osRobloxClientSecret := os.Getenv(constants.EnvKeyTwitchClientSecret) osResetPasswordURL := os.Getenv(constants.EnvKeyResetPasswordURL) osOrganizationName := os.Getenv(constants.EnvKeyOrganizationName) osOrganizationLogo := os.Getenv(constants.EnvKeyOrganizationLogo) @@ -501,6 +505,34 @@ func InitAllEnv() error { envData[constants.EnvKeyMicrosoftActiveDirectoryTenantID] = osMicrosoftActiveDirectoryTenantID } + if val, ok := envData[constants.EnvKeyTwitchClientID]; !ok || val == "" { + envData[constants.EnvKeyTwitchClientID] = osTwitchClientID + } + if osTwitchClientID != "" && envData[constants.EnvKeyTwitchClientID] != osTwitchClientID { + envData[constants.EnvKeyTwitchClientID] = osTwitchClientID + } + + if val, ok := envData[constants.EnvKeyTwitchClientSecret]; !ok || val == "" { + envData[constants.EnvKeyTwitchClientSecret] = osTwitchClientSecret + } + if osTwitchClientSecret != "" && envData[constants.EnvKeyTwitchClientSecret] != osTwitchClientSecret { + envData[constants.EnvKeyTwitchClientSecret] = osTwitchClientSecret + } + + if val, ok := envData[constants.EnvKeyRobloxClientID]; !ok || val == "" { + envData[constants.EnvKeyRobloxClientID] = osRobloxClientID + } + if osRobloxClientID != "" && envData[constants.EnvKeyRobloxClientID] != osRobloxClientID { + envData[constants.EnvKeyRobloxClientID] = osRobloxClientID + } + + if val, ok := envData[constants.EnvKeyRobloxClientSecret]; !ok || val == "" { + envData[constants.EnvKeyRobloxClientSecret] = osRobloxClientSecret + } + if osRobloxClientSecret != "" && envData[constants.EnvKeyRobloxClientSecret] != osRobloxClientSecret { + envData[constants.EnvKeyRobloxClientSecret] = osRobloxClientSecret + } + if val, ok := envData[constants.EnvKeyResetPasswordURL]; !ok || val == "" { envData[constants.EnvKeyResetPasswordURL] = strings.TrimPrefix(osResetPasswordURL, "/") } diff --git a/server/go.mod b/server/go.mod index 0f9343a..78252e5 100644 --- a/server/go.mod +++ b/server/go.mod @@ -5,7 +5,7 @@ go 1.21 toolchain go1.21.4 require ( - github.com/99designs/gqlgen v0.17.39 + github.com/99designs/gqlgen v0.17.45 github.com/arangodb/go-driver v1.6.0 github.com/aws/aws-sdk-go v1.47.4 github.com/coreos/go-oidc/v3 v3.6.0 @@ -16,7 +16,7 @@ require ( github.com/gocql/gocql v1.6.0 github.com/gokyle/twofactor v1.0.1 github.com/golang-jwt/jwt v3.2.2+incompatible - github.com/google/uuid v1.3.1 + github.com/google/uuid v1.6.0 github.com/guregu/dynamo v1.20.2 github.com/joho/godotenv v1.5.1 github.com/mailgun/mailgun-go/v4 v4.12.0 @@ -24,12 +24,12 @@ require ( github.com/redis/go-redis/v9 v9.2.1 github.com/robertkrimen/otto v0.2.1 github.com/sirupsen/logrus v1.9.3 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.9.0 github.com/tuotoo/qrcode v0.0.0-20220425170535-52ccc2bebf5d github.com/twilio/twilio-go v1.14.1 - github.com/vektah/gqlparser/v2 v2.5.10 + github.com/vektah/gqlparser/v2 v2.5.11 go.mongodb.org/mongo-driver v1.12.1 - golang.org/x/crypto v0.14.0 + golang.org/x/crypto v0.21.0 golang.org/x/oauth2 v0.13.0 google.golang.org/appengine v1.6.8 gopkg.in/mail.v2 v2.3.1 @@ -71,7 +71,7 @@ require ( github.com/golang/snappy v0.0.4 // indirect github.com/gorilla/websocket v1.5.0 // indirect github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed // indirect - github.com/hashicorp/golang-lru/v2 v2.0.3 // indirect + github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/jackc/pgpassfile v1.0.0 // indirect github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a // indirect github.com/jackc/pgx/v5 v5.4.3 // indirect @@ -85,7 +85,7 @@ require ( github.com/libsql/libsql-client-go v0.0.0-20231026052543-fce76c0f39a7 // indirect github.com/libsql/sqlite-antlr4-parser v0.0.0-20230802215326-5cb5bb604475 // indirect github.com/maruel/rs v1.1.0 // indirect - github.com/mattn/go-isatty v0.0.19 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect github.com/microsoft/go-mssqldb v1.6.0 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect @@ -97,10 +97,10 @@ require ( github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect github.com/rogpeppe/go-internal v1.11.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect - github.com/sosodev/duration v1.1.0 // indirect + github.com/sosodev/duration v1.2.0 // indirect github.com/twitchyliquid64/golang-asm v0.15.1 // indirect github.com/ugorji/go/codec v1.2.11 // indirect - github.com/urfave/cli/v2 v2.25.5 // indirect + github.com/urfave/cli/v2 v2.27.1 // indirect github.com/xdg-go/pbkdf2 v1.0.0 // indirect github.com/xdg-go/scram v1.1.2 // indirect github.com/xdg-go/stringprep v1.0.4 // indirect @@ -108,13 +108,13 @@ require ( github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d // indirect golang.org/x/arch v0.3.0 // indirect golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e // indirect - golang.org/x/mod v0.10.0 // indirect - golang.org/x/net v0.17.0 // indirect - golang.org/x/sync v0.3.0 // indirect - golang.org/x/sys v0.13.0 // indirect - golang.org/x/text v0.13.0 // indirect - golang.org/x/tools v0.9.3 // indirect - google.golang.org/protobuf v1.31.0 // indirect + golang.org/x/mod v0.16.0 // indirect + golang.org/x/net v0.22.0 // indirect + golang.org/x/sync v0.6.0 // indirect + golang.org/x/sys v0.18.0 // indirect + golang.org/x/text v0.14.0 // indirect + golang.org/x/tools v0.19.0 // indirect + google.golang.org/protobuf v1.33.0 // indirect gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/sourcemap.v1 v1.0.5 // indirect diff --git a/server/go.sum b/server/go.sum index 4364aa0..2e7a153 100644 --- a/server/go.sum +++ b/server/go.sum @@ -1,5 +1,5 @@ -github.com/99designs/gqlgen v0.17.39 h1:wPTAyc2fqVjAWT5DsJ21k/lLudgnXzURwbsjVNegFpU= -github.com/99designs/gqlgen v0.17.39/go.mod h1:b62q1USk82GYIVjC60h02YguAZLqYZtvWml8KkhJps4= +github.com/99designs/gqlgen v0.17.45 h1:bH0AH67vIJo8JKNKPJP+pOPpQhZeuVRQLf53dKIpDik= +github.com/99designs/gqlgen v0.17.45/go.mod h1:Bas0XQ+Jiu/Xm5E33jC8sES3G+iC2esHBMXcq0fUPs0= github.com/Azure/azure-sdk-for-go/sdk/azcore v1.4.0/go.mod h1:ON4tFdPTwRcgWEaVDrN3584Ef+b7GgSJaXxe5fW9t4M= github.com/Azure/azure-sdk-for-go/sdk/azcore v1.6.0/go.mod h1:bjGvMhVMb+EEm3VRNQawDMUyMMjo+S5ewNjflkep/0Q= github.com/Azure/azure-sdk-for-go/sdk/azcore v1.6.1/go.mod h1:bjGvMhVMb+EEm3VRNQawDMUyMMjo+S5ewNjflkep/0Q= @@ -18,10 +18,14 @@ github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v0.8.0/go.mod h github.com/AzureAD/microsoft-authentication-library-for-go v1.0.0/go.mod h1:kgDmCTgBzIEPFElEF+FK0SdjAor06dRq2Go927dnQ6o= github.com/AzureAD/microsoft-authentication-library-for-go v1.1.0 h1:HCc0+LpPfpCKs6LGGLAhwBARt9632unrVcI6i8s/8os= github.com/AzureAD/microsoft-authentication-library-for-go v1.1.0/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI= +github.com/PuerkitoBio/goquery v1.9.1 h1:mTL6XjbJTZdpfL+Gwl5U2h1l9yEkJjhmlTeV9VPW7UI= +github.com/PuerkitoBio/goquery v1.9.1/go.mod h1:cW1n6TmIMDoORQU5IU/P1T3tGFunOeXEpGP2WHRwkbY= github.com/agnivade/levenshtein v1.1.1 h1:QY8M92nrzkmr798gCo3kmMyqXFzdQVpxLlGPRBij0P8= github.com/agnivade/levenshtein v1.1.1/go.mod h1:veldBMzWxcCG2ZvUTKD2kJNRdCk5hVbJomOvKkmgYbo= github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883 h1:bvNMNQO63//z+xNgfBlViaCIJKLlCJ6/fmUseuG0wVQ= github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= +github.com/andybalholm/cascadia v1.3.2 h1:3Xi6Dw5lHF15JtdcmAHD3i1+T8plmv7BQ/nsViSLyss= +github.com/andybalholm/cascadia v1.3.2/go.mod h1:7gtRlve5FxPPgIgX36uWBX58OdBsSS6lUvCFb+h7KvU= github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230512164433-5d1fd1a340c9 h1:goHVqTbFX3AIo0tzGr14pgfAW2ZfPChKO21Z9MGf/gk= github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230512164433-5d1fd1a340c9/go.mod h1:pSwJ0fSY5KhvocuWSx4fz3BA8OrA1bQn+K1Eli3BRwM= github.com/arangodb/go-driver v1.6.0 h1:NFWj/idqXZxhFVueihMSI2R9NotNIsgvNfM/xmpekb4= @@ -160,8 +164,9 @@ github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/ github.com/google/pprof v0.0.0-20221118152302-e6195bd50e26 h1:Xim43kblpZXfIBQsbuBVKCudVG457BR2GZFIz3uw3hQ= github.com/google/pprof v0.0.0-20221118152302-e6195bd50e26/go.mod h1:dDKJzRmX4S37WGHujM7tX//fmj1uioxKzKxz3lo4HJo= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4= github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4= github.com/gorilla/sessions v1.2.1/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM= github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= @@ -173,8 +178,8 @@ github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed h1:5upAirOpQc github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed/go.mod h1:tMWxXQ9wFIaZeTI9F+hmhFiGpFmhOHzyShyFUhRm0H4= github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/golang-lru/v2 v2.0.3 h1:kmRrRLlInXvng0SmLxmQpQkpbYAvcXm7NPDrgxJa9mE= -github.com/hashicorp/golang-lru/v2 v2.0.3/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= +github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= +github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a h1:bbPeKD0xmW/Y25WS6cokEszi5g+S0QxI/d45PkRi7Nk= @@ -231,8 +236,8 @@ github.com/mailgun/mailgun-go/v4 v4.12.0/go.mod h1:L9s941Lgk7iB3TgywTPz074pK2Ekk github.com/maruel/rs v1.1.0 h1:dh4OceAF5yD06EASOrb+DS358LI4g0B90YApSdjCP6U= github.com/maruel/rs v1.1.0/go.mod h1:vzwMjzSJJxLIXmU62qHj6O5QRn5kvCKxFrfaFCxBcUY= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= -github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= -github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-sqlite3 v1.14.17 h1:mCRHCLDUBXgpKAqIKsaAaAsrAlbkeomtRFKXh2L6YIM= github.com/mattn/go-sqlite3 v1.14.17/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= github.com/microsoft/go-mssqldb v1.6.0 h1:mM3gYdVwEPFrlg/Dvr2DNVEgYFG7L42l+dGc67NNNpc= @@ -276,12 +281,13 @@ github.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8= github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= -github.com/sosodev/duration v1.1.0 h1:kQcaiGbJaIsRqgQy7VGlZrVw1giWO+lDoX3MCPnpVO4= -github.com/sosodev/duration v1.1.0/go.mod h1:RQIBBX0+fMLc/D9+Jb/fwvVmo0eZvDDEERAikUR6SDg= +github.com/sosodev/duration v1.2.0 h1:pqK/FLSjsAADWY74SyWDCjOcd5l7H8GSnnOGEB9A1Us= +github.com/sosodev/duration v1.2.0/go.mod h1:RQIBBX0+fMLc/D9+Jb/fwvVmo0eZvDDEERAikUR6SDg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= @@ -292,8 +298,9 @@ github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/tuotoo/qrcode v0.0.0-20220425170535-52ccc2bebf5d h1:4x1FeGJRB00cvxnKXnRJDT89fvG/Lzm2ecm0vlr/qDs= github.com/tuotoo/qrcode v0.0.0-20220425170535-52ccc2bebf5d/go.mod h1:uSELzeIcTceNCgzbKdJuJa0ouCqqtkyzL+6bnA3rM+M= github.com/twilio/twilio-go v1.14.1 h1:uyMwNe2naFKwxLpVflAHbKEPiW9iHNI8VF6NWLJJ1Kk= @@ -304,10 +311,10 @@ github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVM github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= github.com/ugorji/go/codec v1.2.11 h1:BMaWp1Bb6fHwEtbplGBGJ498wD+LKlNSl25MjdZY4dU= github.com/ugorji/go/codec v1.2.11/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= -github.com/urfave/cli/v2 v2.25.5 h1:d0NIAyhh5shGscroL7ek/Ya9QYQE0KNabJgiUinIQkc= -github.com/urfave/cli/v2 v2.25.5/go.mod h1:GHupkWPMM0M/sj1a2b4wUrWBPzazNrIjouW6fmdJLxc= -github.com/vektah/gqlparser/v2 v2.5.10 h1:6zSM4azXC9u4Nxy5YmdmGu4uKamfwsdKTwp5zsEealU= -github.com/vektah/gqlparser/v2 v2.5.10/go.mod h1:1rCcfwB2ekJofmluGWXMSEnPMZgbxzwj6FaZ/4OT8Cc= +github.com/urfave/cli/v2 v2.27.1 h1:8xSQ6szndafKVRmfyeUMxkNUJQMjL1F2zmsZ+qHpfho= +github.com/urfave/cli/v2 v2.27.1/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ= +github.com/vektah/gqlparser/v2 v2.5.11 h1:JJxLtXIoN7+3x6MBdtIP59TP1RANnY7pXOaDnADQSf8= +github.com/vektah/gqlparser/v2 v2.5.11/go.mod h1:1rCcfwB2ekJofmluGWXMSEnPMZgbxzwj6FaZ/4OT8Cc= github.com/xdg-go/pbkdf2 v1.0.0 h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c= github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= github.com/xdg-go/scram v1.1.2 h1:FHX5I5B4i4hKRVRBCFRxq1iQRej7WO3hhBuJf+UUySY= @@ -335,15 +342,15 @@ golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58 golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= -golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc= -golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= +golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA= +golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e h1:+WEEuIdZHnUeJJmEUjyYC2gfUMj69yZXw17EnHg/otA= golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e/go.mod h1:Kr81I6Kryrl9sr8s2FK3vxD90NdsKWRuOIl2O4CvYbA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.10.0 h1:lFO9qtOdlre5W1jxS3r/4szv2/6iXxScdzjoBMXNhYk= -golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.16.0 h1:QX4fJ0Rr5cPQCF7O9lh9Se4pmwfwskqZfq5moyldzic= +golang.org/x/mod v0.16.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -358,16 +365,17 @@ golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= -golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= -golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= +golang.org/x/net v0.22.0 h1:9sGLhx7iRIHEiX0oAJ3MRZMUCElJgy7Br1nO+AMN3Tc= +golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= golang.org/x/oauth2 v0.13.0 h1:jDDenyj+WgFtmV3zYVoi8aE2BwtXFLWOA67ZfNWftiY= golang.org/x/oauth2 v0.13.0/go.mod h1:/JMhi4ZRXAf4HG9LiNmxvk+45+96RUlVThiH8FzNBn0= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E= golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= +golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -387,8 +395,8 @@ golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= -golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= +golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -407,16 +415,16 @@ golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= -golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.9.3 h1:Gn1I8+64MsuTb/HpH+LmQtNas23LhUVr3rYZ0eKuaMM= -golang.org/x/tools v0.9.3/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc= +golang.org/x/tools v0.19.0 h1:tfGCXNR1OsFG+sVdLAitlpjAvD/I6dHDKnYrpEZUHkw= +golang.org/x/tools v0.19.0/go.mod h1:qoJWxmGSIBmAeriMx19ogtrEPrGtDbPK634QFIcLAhc= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -425,8 +433,8 @@ google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAs google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= -google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= +google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc h1:2gGKlE2+asNV9m7xrywl36YYNnBG5ZQ0r/BOOxqPpmk= gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc/go.mod h1:m7x9LTH6d71AHyAX77c9yqWCCa3UKHcVEj9y7hAtKDk= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/server/graph/generated/generated.go b/server/graph/generated/generated.go index 1f8c6a8..1aa21ab 100644 --- a/server/graph/generated/generated.go +++ b/server/graph/generated/generated.go @@ -134,6 +134,8 @@ type ComplexityRoot struct { ProtectedRoles func(childComplexity int) int RedisURL func(childComplexity int) int ResetPasswordURL func(childComplexity int) int + RobloxClientID func(childComplexity int) int + RobloxClientSecret func(childComplexity int) int Roles func(childComplexity int) int SMTPHost func(childComplexity int) int SMTPLocalName func(childComplexity int) int @@ -184,6 +186,7 @@ type ComplexityRoot struct { IsMobileBasicAuthenticationEnabled func(childComplexity int) int IsMultiFactorAuthEnabled func(childComplexity int) int IsPhoneVerificationEnabled func(childComplexity int) int + IsRobloxLoginEnabled func(childComplexity int) int IsSignUpEnabled func(childComplexity int) int IsStrongPasswordEnabled func(childComplexity int) int IsTwitchLoginEnabled func(childComplexity int) int @@ -973,6 +976,20 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return e.complexity.Env.ResetPasswordURL(childComplexity), true + case "Env.ROBLOX_CLIENT_ID": + if e.complexity.Env.RobloxClientID == nil { + break + } + + return e.complexity.Env.RobloxClientID(childComplexity), true + + case "Env.ROBLOX_CLIENT_SECRET": + if e.complexity.Env.RobloxClientSecret == nil { + break + } + + return e.complexity.Env.RobloxClientSecret(childComplexity), true + case "Env.ROLES": if e.complexity.Env.Roles == nil { break @@ -1218,6 +1235,13 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return e.complexity.Meta.IsPhoneVerificationEnabled(childComplexity), true + case "Meta.is_roblox_login_enabled": + if e.complexity.Meta.IsRobloxLoginEnabled == nil { + break + } + + return e.complexity.Meta.IsRobloxLoginEnabled(childComplexity), true + case "Meta.is_sign_up_enabled": if e.complexity.Meta.IsSignUpEnabled == nil { break @@ -2431,6 +2455,7 @@ type Meta { is_twitter_login_enabled: Boolean! is_microsoft_login_enabled: Boolean! is_twitch_login_enabled: Boolean! + is_roblox_login_enabled: Boolean! is_email_verification_enabled: Boolean! is_basic_authentication_enabled: Boolean! is_magic_link_login_enabled: Boolean! @@ -2596,6 +2621,8 @@ type Env { MICROSOFT_ACTIVE_DIRECTORY_TENANT_ID: String TWITCH_CLIENT_ID: String TWITCH_CLIENT_SECRET: String + ROBLOX_CLIENT_ID: String + ROBLOX_CLIENT_SECRET: String ORGANIZATION_NAME: String ORGANIZATION_LOGO: String APP_COOKIE_SECURE: Boolean! @@ -2728,6 +2755,8 @@ input UpdateEnvInput { MICROSOFT_ACTIVE_DIRECTORY_TENANT_ID: String TWITCH_CLIENT_ID: String TWITCH_CLIENT_SECRET: String + ROBLOX_CLIENT_ID: String + ROBLOX_CLIENT_SECRET: String ORGANIZATION_NAME: String ORGANIZATION_LOGO: String DEFAULT_AUTHORIZE_RESPONSE_TYPE: String @@ -7185,6 +7214,88 @@ func (ec *executionContext) fieldContext_Env_TWITCH_CLIENT_SECRET(ctx context.Co return fc, nil } +func (ec *executionContext) _Env_ROBLOX_CLIENT_ID(ctx context.Context, field graphql.CollectedField, obj *model.Env) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_Env_ROBLOX_CLIENT_ID(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.RobloxClientID, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*string) + fc.Result = res + return ec.marshalOString2ᚖstring(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_Env_ROBLOX_CLIENT_ID(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "Env", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type String does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _Env_ROBLOX_CLIENT_SECRET(ctx context.Context, field graphql.CollectedField, obj *model.Env) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_Env_ROBLOX_CLIENT_SECRET(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.RobloxClientSecret, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*string) + fc.Result = res + return ec.marshalOString2ᚖstring(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_Env_ROBLOX_CLIENT_SECRET(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "Env", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type String does not have child fields") + }, + } + return fc, nil +} + func (ec *executionContext) _Env_ORGANIZATION_NAME(ctx context.Context, field graphql.CollectedField, obj *model.Env) (ret graphql.Marshaler) { fc, err := ec.fieldContext_Env_ORGANIZATION_NAME(ctx, field) if err != nil { @@ -8479,6 +8590,50 @@ func (ec *executionContext) fieldContext_Meta_is_twitch_login_enabled(ctx contex return fc, nil } +func (ec *executionContext) _Meta_is_roblox_login_enabled(ctx context.Context, field graphql.CollectedField, obj *model.Meta) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_Meta_is_roblox_login_enabled(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.IsRobloxLoginEnabled, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(bool) + fc.Result = res + return ec.marshalNBoolean2bool(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_Meta_is_roblox_login_enabled(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "Meta", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type Boolean does not have child fields") + }, + } + return fc, nil +} + func (ec *executionContext) _Meta_is_email_verification_enabled(ctx context.Context, field graphql.CollectedField, obj *model.Meta) (ret graphql.Marshaler) { fc, err := ec.fieldContext_Meta_is_email_verification_enabled(ctx, field) if err != nil { @@ -11103,6 +11258,8 @@ func (ec *executionContext) fieldContext_Query_meta(ctx context.Context, field g return ec.fieldContext_Meta_is_microsoft_login_enabled(ctx, field) case "is_twitch_login_enabled": return ec.fieldContext_Meta_is_twitch_login_enabled(ctx, field) + case "is_roblox_login_enabled": + return ec.fieldContext_Meta_is_roblox_login_enabled(ctx, field) case "is_email_verification_enabled": return ec.fieldContext_Meta_is_email_verification_enabled(ctx, field) case "is_basic_authentication_enabled": @@ -11900,6 +12057,10 @@ func (ec *executionContext) fieldContext_Query__env(ctx context.Context, field g return ec.fieldContext_Env_TWITCH_CLIENT_ID(ctx, field) case "TWITCH_CLIENT_SECRET": return ec.fieldContext_Env_TWITCH_CLIENT_SECRET(ctx, field) + case "ROBLOX_CLIENT_ID": + return ec.fieldContext_Env_ROBLOX_CLIENT_ID(ctx, field) + case "ROBLOX_CLIENT_SECRET": + return ec.fieldContext_Env_ROBLOX_CLIENT_SECRET(ctx, field) case "ORGANIZATION_NAME": return ec.fieldContext_Env_ORGANIZATION_NAME(ctx, field) case "ORGANIZATION_LOGO": @@ -17013,8 +17174,6 @@ func (ec *executionContext) unmarshalInputAddEmailTemplateRequest(ctx context.Co } switch k { case "event_name": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("event_name")) data, err := ec.unmarshalNString2string(ctx, v) if err != nil { @@ -17022,8 +17181,6 @@ func (ec *executionContext) unmarshalInputAddEmailTemplateRequest(ctx context.Co } it.EventName = data case "subject": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("subject")) data, err := ec.unmarshalNString2string(ctx, v) if err != nil { @@ -17031,8 +17188,6 @@ func (ec *executionContext) unmarshalInputAddEmailTemplateRequest(ctx context.Co } it.Subject = data case "template": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("template")) data, err := ec.unmarshalNString2string(ctx, v) if err != nil { @@ -17040,8 +17195,6 @@ func (ec *executionContext) unmarshalInputAddEmailTemplateRequest(ctx context.Co } it.Template = data case "design": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("design")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -17069,8 +17222,6 @@ func (ec *executionContext) unmarshalInputAddWebhookRequest(ctx context.Context, } switch k { case "event_name": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("event_name")) data, err := ec.unmarshalNString2string(ctx, v) if err != nil { @@ -17078,8 +17229,6 @@ func (ec *executionContext) unmarshalInputAddWebhookRequest(ctx context.Context, } it.EventName = data case "event_description": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("event_description")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -17087,8 +17236,6 @@ func (ec *executionContext) unmarshalInputAddWebhookRequest(ctx context.Context, } it.EventDescription = data case "endpoint": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("endpoint")) data, err := ec.unmarshalNString2string(ctx, v) if err != nil { @@ -17096,8 +17243,6 @@ func (ec *executionContext) unmarshalInputAddWebhookRequest(ctx context.Context, } it.Endpoint = data case "enabled": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("enabled")) data, err := ec.unmarshalNBoolean2bool(ctx, v) if err != nil { @@ -17105,8 +17250,6 @@ func (ec *executionContext) unmarshalInputAddWebhookRequest(ctx context.Context, } it.Enabled = data case "headers": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("headers")) data, err := ec.unmarshalOMap2map(ctx, v) if err != nil { @@ -17134,8 +17277,6 @@ func (ec *executionContext) unmarshalInputAdminLoginInput(ctx context.Context, o } switch k { case "admin_secret": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("admin_secret")) data, err := ec.unmarshalNString2string(ctx, v) if err != nil { @@ -17163,8 +17304,6 @@ func (ec *executionContext) unmarshalInputAdminSignupInput(ctx context.Context, } switch k { case "admin_secret": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("admin_secret")) data, err := ec.unmarshalNString2string(ctx, v) if err != nil { @@ -17192,8 +17331,6 @@ func (ec *executionContext) unmarshalInputDeleteEmailTemplateRequest(ctx context } switch k { case "id": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("id")) data, err := ec.unmarshalNID2string(ctx, v) if err != nil { @@ -17221,8 +17358,6 @@ func (ec *executionContext) unmarshalInputDeleteUserInput(ctx context.Context, o } switch k { case "email": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("email")) data, err := ec.unmarshalNString2string(ctx, v) if err != nil { @@ -17250,8 +17385,6 @@ func (ec *executionContext) unmarshalInputForgotPasswordInput(ctx context.Contex } switch k { case "email": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("email")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -17259,8 +17392,6 @@ func (ec *executionContext) unmarshalInputForgotPasswordInput(ctx context.Contex } it.Email = data case "phone_number": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("phone_number")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -17268,8 +17399,6 @@ func (ec *executionContext) unmarshalInputForgotPasswordInput(ctx context.Contex } it.PhoneNumber = data case "state": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("state")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -17277,8 +17406,6 @@ func (ec *executionContext) unmarshalInputForgotPasswordInput(ctx context.Contex } it.State = data case "redirect_uri": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("redirect_uri")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -17306,8 +17433,6 @@ func (ec *executionContext) unmarshalInputGenerateJWTKeysInput(ctx context.Conte } switch k { case "type": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("type")) data, err := ec.unmarshalNString2string(ctx, v) if err != nil { @@ -17335,8 +17460,6 @@ func (ec *executionContext) unmarshalInputGetUserRequest(ctx context.Context, ob } switch k { case "id": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("id")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -17344,8 +17467,6 @@ func (ec *executionContext) unmarshalInputGetUserRequest(ctx context.Context, ob } it.ID = data case "email": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("email")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -17373,8 +17494,6 @@ func (ec *executionContext) unmarshalInputInviteMemberInput(ctx context.Context, } switch k { case "emails": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("emails")) data, err := ec.unmarshalNString2ᚕstringᚄ(ctx, v) if err != nil { @@ -17382,8 +17501,6 @@ func (ec *executionContext) unmarshalInputInviteMemberInput(ctx context.Context, } it.Emails = data case "redirect_uri": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("redirect_uri")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -17411,8 +17528,6 @@ func (ec *executionContext) unmarshalInputListWebhookLogRequest(ctx context.Cont } switch k { case "pagination": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("pagination")) data, err := ec.unmarshalOPaginationInput2ᚖgithubᚗcomᚋauthorizerdevᚋauthorizerᚋserverᚋgraphᚋmodelᚐPaginationInput(ctx, v) if err != nil { @@ -17420,8 +17535,6 @@ func (ec *executionContext) unmarshalInputListWebhookLogRequest(ctx context.Cont } it.Pagination = data case "webhook_id": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("webhook_id")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -17449,8 +17562,6 @@ func (ec *executionContext) unmarshalInputLoginInput(ctx context.Context, obj in } switch k { case "email": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("email")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -17458,8 +17569,6 @@ func (ec *executionContext) unmarshalInputLoginInput(ctx context.Context, obj in } it.Email = data case "phone_number": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("phone_number")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -17467,8 +17576,6 @@ func (ec *executionContext) unmarshalInputLoginInput(ctx context.Context, obj in } it.PhoneNumber = data case "password": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("password")) data, err := ec.unmarshalNString2string(ctx, v) if err != nil { @@ -17476,8 +17583,6 @@ func (ec *executionContext) unmarshalInputLoginInput(ctx context.Context, obj in } it.Password = data case "roles": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("roles")) data, err := ec.unmarshalOString2ᚕstringᚄ(ctx, v) if err != nil { @@ -17485,8 +17590,6 @@ func (ec *executionContext) unmarshalInputLoginInput(ctx context.Context, obj in } it.Roles = data case "scope": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("scope")) data, err := ec.unmarshalOString2ᚕstringᚄ(ctx, v) if err != nil { @@ -17494,8 +17597,6 @@ func (ec *executionContext) unmarshalInputLoginInput(ctx context.Context, obj in } it.Scope = data case "state": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("state")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -17523,8 +17624,6 @@ func (ec *executionContext) unmarshalInputMagicLinkLoginInput(ctx context.Contex } switch k { case "email": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("email")) data, err := ec.unmarshalNString2string(ctx, v) if err != nil { @@ -17532,8 +17631,6 @@ func (ec *executionContext) unmarshalInputMagicLinkLoginInput(ctx context.Contex } it.Email = data case "roles": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("roles")) data, err := ec.unmarshalOString2ᚕstringᚄ(ctx, v) if err != nil { @@ -17541,8 +17638,6 @@ func (ec *executionContext) unmarshalInputMagicLinkLoginInput(ctx context.Contex } it.Roles = data case "scope": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("scope")) data, err := ec.unmarshalOString2ᚕstringᚄ(ctx, v) if err != nil { @@ -17550,8 +17645,6 @@ func (ec *executionContext) unmarshalInputMagicLinkLoginInput(ctx context.Contex } it.Scope = data case "state": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("state")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -17559,8 +17652,6 @@ func (ec *executionContext) unmarshalInputMagicLinkLoginInput(ctx context.Contex } it.State = data case "redirect_uri": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("redirect_uri")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -17588,8 +17679,6 @@ func (ec *executionContext) unmarshalInputMobileLoginInput(ctx context.Context, } switch k { case "phone_number": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("phone_number")) data, err := ec.unmarshalNString2string(ctx, v) if err != nil { @@ -17597,8 +17686,6 @@ func (ec *executionContext) unmarshalInputMobileLoginInput(ctx context.Context, } it.PhoneNumber = data case "password": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("password")) data, err := ec.unmarshalNString2string(ctx, v) if err != nil { @@ -17606,8 +17693,6 @@ func (ec *executionContext) unmarshalInputMobileLoginInput(ctx context.Context, } it.Password = data case "roles": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("roles")) data, err := ec.unmarshalOString2ᚕstringᚄ(ctx, v) if err != nil { @@ -17615,8 +17700,6 @@ func (ec *executionContext) unmarshalInputMobileLoginInput(ctx context.Context, } it.Roles = data case "scope": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("scope")) data, err := ec.unmarshalOString2ᚕstringᚄ(ctx, v) if err != nil { @@ -17624,8 +17707,6 @@ func (ec *executionContext) unmarshalInputMobileLoginInput(ctx context.Context, } it.Scope = data case "state": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("state")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -17653,8 +17734,6 @@ func (ec *executionContext) unmarshalInputMobileSignUpInput(ctx context.Context, } switch k { case "email": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("email")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -17662,8 +17741,6 @@ func (ec *executionContext) unmarshalInputMobileSignUpInput(ctx context.Context, } it.Email = data case "given_name": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("given_name")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -17671,8 +17748,6 @@ func (ec *executionContext) unmarshalInputMobileSignUpInput(ctx context.Context, } it.GivenName = data case "family_name": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("family_name")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -17680,8 +17755,6 @@ func (ec *executionContext) unmarshalInputMobileSignUpInput(ctx context.Context, } it.FamilyName = data case "middle_name": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("middle_name")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -17689,8 +17762,6 @@ func (ec *executionContext) unmarshalInputMobileSignUpInput(ctx context.Context, } it.MiddleName = data case "nickname": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("nickname")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -17698,8 +17769,6 @@ func (ec *executionContext) unmarshalInputMobileSignUpInput(ctx context.Context, } it.Nickname = data case "gender": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("gender")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -17707,8 +17776,6 @@ func (ec *executionContext) unmarshalInputMobileSignUpInput(ctx context.Context, } it.Gender = data case "birthdate": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("birthdate")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -17716,8 +17783,6 @@ func (ec *executionContext) unmarshalInputMobileSignUpInput(ctx context.Context, } it.Birthdate = data case "phone_number": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("phone_number")) data, err := ec.unmarshalNString2string(ctx, v) if err != nil { @@ -17725,8 +17790,6 @@ func (ec *executionContext) unmarshalInputMobileSignUpInput(ctx context.Context, } it.PhoneNumber = data case "picture": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("picture")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -17734,8 +17797,6 @@ func (ec *executionContext) unmarshalInputMobileSignUpInput(ctx context.Context, } it.Picture = data case "password": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("password")) data, err := ec.unmarshalNString2string(ctx, v) if err != nil { @@ -17743,8 +17804,6 @@ func (ec *executionContext) unmarshalInputMobileSignUpInput(ctx context.Context, } it.Password = data case "confirm_password": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("confirm_password")) data, err := ec.unmarshalNString2string(ctx, v) if err != nil { @@ -17752,8 +17811,6 @@ func (ec *executionContext) unmarshalInputMobileSignUpInput(ctx context.Context, } it.ConfirmPassword = data case "roles": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("roles")) data, err := ec.unmarshalOString2ᚕstringᚄ(ctx, v) if err != nil { @@ -17761,8 +17818,6 @@ func (ec *executionContext) unmarshalInputMobileSignUpInput(ctx context.Context, } it.Roles = data case "scope": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("scope")) data, err := ec.unmarshalOString2ᚕstringᚄ(ctx, v) if err != nil { @@ -17770,8 +17825,6 @@ func (ec *executionContext) unmarshalInputMobileSignUpInput(ctx context.Context, } it.Scope = data case "redirect_uri": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("redirect_uri")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -17779,8 +17832,6 @@ func (ec *executionContext) unmarshalInputMobileSignUpInput(ctx context.Context, } it.RedirectURI = data case "is_multi_factor_auth_enabled": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("is_multi_factor_auth_enabled")) data, err := ec.unmarshalOBoolean2ᚖbool(ctx, v) if err != nil { @@ -17788,8 +17839,6 @@ func (ec *executionContext) unmarshalInputMobileSignUpInput(ctx context.Context, } it.IsMultiFactorAuthEnabled = data case "state": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("state")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -17797,8 +17846,6 @@ func (ec *executionContext) unmarshalInputMobileSignUpInput(ctx context.Context, } it.State = data case "app_data": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("app_data")) data, err := ec.unmarshalOMap2map(ctx, v) if err != nil { @@ -17826,8 +17873,6 @@ func (ec *executionContext) unmarshalInputOAuthRevokeInput(ctx context.Context, } switch k { case "refresh_token": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("refresh_token")) data, err := ec.unmarshalNString2string(ctx, v) if err != nil { @@ -17855,8 +17900,6 @@ func (ec *executionContext) unmarshalInputPaginatedInput(ctx context.Context, ob } switch k { case "pagination": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("pagination")) data, err := ec.unmarshalOPaginationInput2ᚖgithubᚗcomᚋauthorizerdevᚋauthorizerᚋserverᚋgraphᚋmodelᚐPaginationInput(ctx, v) if err != nil { @@ -17884,8 +17927,6 @@ func (ec *executionContext) unmarshalInputPaginationInput(ctx context.Context, o } switch k { case "limit": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("limit")) data, err := ec.unmarshalOInt642ᚖint64(ctx, v) if err != nil { @@ -17893,8 +17934,6 @@ func (ec *executionContext) unmarshalInputPaginationInput(ctx context.Context, o } it.Limit = data case "page": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("page")) data, err := ec.unmarshalOInt642ᚖint64(ctx, v) if err != nil { @@ -17922,8 +17961,6 @@ func (ec *executionContext) unmarshalInputResendOTPRequest(ctx context.Context, } switch k { case "email": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("email")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -17931,8 +17968,6 @@ func (ec *executionContext) unmarshalInputResendOTPRequest(ctx context.Context, } it.Email = data case "phone_number": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("phone_number")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -17940,8 +17975,6 @@ func (ec *executionContext) unmarshalInputResendOTPRequest(ctx context.Context, } it.PhoneNumber = data case "state": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("state")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -17969,8 +18002,6 @@ func (ec *executionContext) unmarshalInputResendVerifyEmailInput(ctx context.Con } switch k { case "email": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("email")) data, err := ec.unmarshalNString2string(ctx, v) if err != nil { @@ -17978,8 +18009,6 @@ func (ec *executionContext) unmarshalInputResendVerifyEmailInput(ctx context.Con } it.Email = data case "identifier": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("identifier")) data, err := ec.unmarshalNString2string(ctx, v) if err != nil { @@ -17987,8 +18016,6 @@ func (ec *executionContext) unmarshalInputResendVerifyEmailInput(ctx context.Con } it.Identifier = data case "state": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("state")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -18016,8 +18043,6 @@ func (ec *executionContext) unmarshalInputResetPasswordInput(ctx context.Context } switch k { case "token": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("token")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -18025,8 +18050,6 @@ func (ec *executionContext) unmarshalInputResetPasswordInput(ctx context.Context } it.Token = data case "otp": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("otp")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -18034,8 +18057,6 @@ func (ec *executionContext) unmarshalInputResetPasswordInput(ctx context.Context } it.Otp = data case "phone_number": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("phone_number")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -18043,8 +18064,6 @@ func (ec *executionContext) unmarshalInputResetPasswordInput(ctx context.Context } it.PhoneNumber = data case "password": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("password")) data, err := ec.unmarshalNString2string(ctx, v) if err != nil { @@ -18052,8 +18071,6 @@ func (ec *executionContext) unmarshalInputResetPasswordInput(ctx context.Context } it.Password = data case "confirm_password": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("confirm_password")) data, err := ec.unmarshalNString2string(ctx, v) if err != nil { @@ -18081,8 +18098,6 @@ func (ec *executionContext) unmarshalInputSessionQueryInput(ctx context.Context, } switch k { case "roles": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("roles")) data, err := ec.unmarshalOString2ᚕstringᚄ(ctx, v) if err != nil { @@ -18090,8 +18105,6 @@ func (ec *executionContext) unmarshalInputSessionQueryInput(ctx context.Context, } it.Roles = data case "scope": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("scope")) data, err := ec.unmarshalOString2ᚕstringᚄ(ctx, v) if err != nil { @@ -18119,8 +18132,6 @@ func (ec *executionContext) unmarshalInputSignUpInput(ctx context.Context, obj i } switch k { case "email": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("email")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -18128,8 +18139,6 @@ func (ec *executionContext) unmarshalInputSignUpInput(ctx context.Context, obj i } it.Email = data case "given_name": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("given_name")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -18137,8 +18146,6 @@ func (ec *executionContext) unmarshalInputSignUpInput(ctx context.Context, obj i } it.GivenName = data case "family_name": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("family_name")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -18146,8 +18153,6 @@ func (ec *executionContext) unmarshalInputSignUpInput(ctx context.Context, obj i } it.FamilyName = data case "middle_name": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("middle_name")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -18155,8 +18160,6 @@ func (ec *executionContext) unmarshalInputSignUpInput(ctx context.Context, obj i } it.MiddleName = data case "nickname": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("nickname")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -18164,8 +18167,6 @@ func (ec *executionContext) unmarshalInputSignUpInput(ctx context.Context, obj i } it.Nickname = data case "gender": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("gender")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -18173,8 +18174,6 @@ func (ec *executionContext) unmarshalInputSignUpInput(ctx context.Context, obj i } it.Gender = data case "birthdate": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("birthdate")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -18182,8 +18181,6 @@ func (ec *executionContext) unmarshalInputSignUpInput(ctx context.Context, obj i } it.Birthdate = data case "phone_number": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("phone_number")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -18191,8 +18188,6 @@ func (ec *executionContext) unmarshalInputSignUpInput(ctx context.Context, obj i } it.PhoneNumber = data case "picture": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("picture")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -18200,8 +18195,6 @@ func (ec *executionContext) unmarshalInputSignUpInput(ctx context.Context, obj i } it.Picture = data case "password": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("password")) data, err := ec.unmarshalNString2string(ctx, v) if err != nil { @@ -18209,8 +18202,6 @@ func (ec *executionContext) unmarshalInputSignUpInput(ctx context.Context, obj i } it.Password = data case "confirm_password": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("confirm_password")) data, err := ec.unmarshalNString2string(ctx, v) if err != nil { @@ -18218,8 +18209,6 @@ func (ec *executionContext) unmarshalInputSignUpInput(ctx context.Context, obj i } it.ConfirmPassword = data case "roles": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("roles")) data, err := ec.unmarshalOString2ᚕstringᚄ(ctx, v) if err != nil { @@ -18227,8 +18216,6 @@ func (ec *executionContext) unmarshalInputSignUpInput(ctx context.Context, obj i } it.Roles = data case "scope": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("scope")) data, err := ec.unmarshalOString2ᚕstringᚄ(ctx, v) if err != nil { @@ -18236,8 +18223,6 @@ func (ec *executionContext) unmarshalInputSignUpInput(ctx context.Context, obj i } it.Scope = data case "redirect_uri": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("redirect_uri")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -18245,8 +18230,6 @@ func (ec *executionContext) unmarshalInputSignUpInput(ctx context.Context, obj i } it.RedirectURI = data case "is_multi_factor_auth_enabled": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("is_multi_factor_auth_enabled")) data, err := ec.unmarshalOBoolean2ᚖbool(ctx, v) if err != nil { @@ -18254,8 +18237,6 @@ func (ec *executionContext) unmarshalInputSignUpInput(ctx context.Context, obj i } it.IsMultiFactorAuthEnabled = data case "state": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("state")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -18263,8 +18244,6 @@ func (ec *executionContext) unmarshalInputSignUpInput(ctx context.Context, obj i } it.State = data case "app_data": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("app_data")) data, err := ec.unmarshalOMap2map(ctx, v) if err != nil { @@ -18292,8 +18271,6 @@ func (ec *executionContext) unmarshalInputTestEndpointRequest(ctx context.Contex } switch k { case "endpoint": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("endpoint")) data, err := ec.unmarshalNString2string(ctx, v) if err != nil { @@ -18301,8 +18278,6 @@ func (ec *executionContext) unmarshalInputTestEndpointRequest(ctx context.Contex } it.Endpoint = data case "event_name": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("event_name")) data, err := ec.unmarshalNString2string(ctx, v) if err != nil { @@ -18310,8 +18285,6 @@ func (ec *executionContext) unmarshalInputTestEndpointRequest(ctx context.Contex } it.EventName = data case "event_description": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("event_description")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -18319,8 +18292,6 @@ func (ec *executionContext) unmarshalInputTestEndpointRequest(ctx context.Contex } it.EventDescription = data case "headers": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("headers")) data, err := ec.unmarshalOMap2map(ctx, v) if err != nil { @@ -18348,8 +18319,6 @@ func (ec *executionContext) unmarshalInputUpdateAccessInput(ctx context.Context, } switch k { case "user_id": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("user_id")) data, err := ec.unmarshalNString2string(ctx, v) if err != nil { @@ -18377,8 +18346,6 @@ func (ec *executionContext) unmarshalInputUpdateEmailTemplateRequest(ctx context } switch k { case "id": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("id")) data, err := ec.unmarshalNID2string(ctx, v) if err != nil { @@ -18386,8 +18353,6 @@ func (ec *executionContext) unmarshalInputUpdateEmailTemplateRequest(ctx context } it.ID = data case "event_name": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("event_name")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -18395,8 +18360,6 @@ func (ec *executionContext) unmarshalInputUpdateEmailTemplateRequest(ctx context } it.EventName = data case "template": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("template")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -18404,8 +18367,6 @@ func (ec *executionContext) unmarshalInputUpdateEmailTemplateRequest(ctx context } it.Template = data case "subject": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("subject")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -18413,8 +18374,6 @@ func (ec *executionContext) unmarshalInputUpdateEmailTemplateRequest(ctx context } it.Subject = data case "design": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("design")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -18434,7 +18393,7 @@ func (ec *executionContext) unmarshalInputUpdateEnvInput(ctx context.Context, ob asMap[k] = v } - fieldsInOrder := [...]string{"ACCESS_TOKEN_EXPIRY_TIME", "ADMIN_SECRET", "CUSTOM_ACCESS_TOKEN_SCRIPT", "OLD_ADMIN_SECRET", "SMTP_HOST", "SMTP_PORT", "SMTP_USERNAME", "SMTP_PASSWORD", "SMTP_LOCAL_NAME", "SENDER_EMAIL", "SENDER_NAME", "JWT_TYPE", "JWT_SECRET", "JWT_PRIVATE_KEY", "JWT_PUBLIC_KEY", "ALLOWED_ORIGINS", "APP_URL", "RESET_PASSWORD_URL", "APP_COOKIE_SECURE", "ADMIN_COOKIE_SECURE", "DISABLE_EMAIL_VERIFICATION", "DISABLE_BASIC_AUTHENTICATION", "DISABLE_MOBILE_BASIC_AUTHENTICATION", "DISABLE_MAGIC_LINK_LOGIN", "DISABLE_LOGIN_PAGE", "DISABLE_SIGN_UP", "DISABLE_REDIS_FOR_ENV", "DISABLE_STRONG_PASSWORD", "DISABLE_MULTI_FACTOR_AUTHENTICATION", "ENFORCE_MULTI_FACTOR_AUTHENTICATION", "ROLES", "PROTECTED_ROLES", "DEFAULT_ROLES", "JWT_ROLE_CLAIM", "GOOGLE_CLIENT_ID", "GOOGLE_CLIENT_SECRET", "GITHUB_CLIENT_ID", "GITHUB_CLIENT_SECRET", "FACEBOOK_CLIENT_ID", "FACEBOOK_CLIENT_SECRET", "LINKEDIN_CLIENT_ID", "LINKEDIN_CLIENT_SECRET", "APPLE_CLIENT_ID", "APPLE_CLIENT_SECRET", "DISCORD_CLIENT_ID", "DISCORD_CLIENT_SECRET", "TWITTER_CLIENT_ID", "TWITTER_CLIENT_SECRET", "MICROSOFT_CLIENT_ID", "MICROSOFT_CLIENT_SECRET", "MICROSOFT_ACTIVE_DIRECTORY_TENANT_ID", "TWITCH_CLIENT_ID", "TWITCH_CLIENT_SECRET", "ORGANIZATION_NAME", "ORGANIZATION_LOGO", "DEFAULT_AUTHORIZE_RESPONSE_TYPE", "DEFAULT_AUTHORIZE_RESPONSE_MODE", "DISABLE_PLAYGROUND", "DISABLE_MAIL_OTP_LOGIN", "DISABLE_TOTP_LOGIN"} + fieldsInOrder := [...]string{"ACCESS_TOKEN_EXPIRY_TIME", "ADMIN_SECRET", "CUSTOM_ACCESS_TOKEN_SCRIPT", "OLD_ADMIN_SECRET", "SMTP_HOST", "SMTP_PORT", "SMTP_USERNAME", "SMTP_PASSWORD", "SMTP_LOCAL_NAME", "SENDER_EMAIL", "SENDER_NAME", "JWT_TYPE", "JWT_SECRET", "JWT_PRIVATE_KEY", "JWT_PUBLIC_KEY", "ALLOWED_ORIGINS", "APP_URL", "RESET_PASSWORD_URL", "APP_COOKIE_SECURE", "ADMIN_COOKIE_SECURE", "DISABLE_EMAIL_VERIFICATION", "DISABLE_BASIC_AUTHENTICATION", "DISABLE_MOBILE_BASIC_AUTHENTICATION", "DISABLE_MAGIC_LINK_LOGIN", "DISABLE_LOGIN_PAGE", "DISABLE_SIGN_UP", "DISABLE_REDIS_FOR_ENV", "DISABLE_STRONG_PASSWORD", "DISABLE_MULTI_FACTOR_AUTHENTICATION", "ENFORCE_MULTI_FACTOR_AUTHENTICATION", "ROLES", "PROTECTED_ROLES", "DEFAULT_ROLES", "JWT_ROLE_CLAIM", "GOOGLE_CLIENT_ID", "GOOGLE_CLIENT_SECRET", "GITHUB_CLIENT_ID", "GITHUB_CLIENT_SECRET", "FACEBOOK_CLIENT_ID", "FACEBOOK_CLIENT_SECRET", "LINKEDIN_CLIENT_ID", "LINKEDIN_CLIENT_SECRET", "APPLE_CLIENT_ID", "APPLE_CLIENT_SECRET", "DISCORD_CLIENT_ID", "DISCORD_CLIENT_SECRET", "TWITTER_CLIENT_ID", "TWITTER_CLIENT_SECRET", "MICROSOFT_CLIENT_ID", "MICROSOFT_CLIENT_SECRET", "MICROSOFT_ACTIVE_DIRECTORY_TENANT_ID", "TWITCH_CLIENT_ID", "TWITCH_CLIENT_SECRET", "ROBLOX_CLIENT_ID", "ROBLOX_CLIENT_SECRET", "ORGANIZATION_NAME", "ORGANIZATION_LOGO", "DEFAULT_AUTHORIZE_RESPONSE_TYPE", "DEFAULT_AUTHORIZE_RESPONSE_MODE", "DISABLE_PLAYGROUND", "DISABLE_MAIL_OTP_LOGIN", "DISABLE_TOTP_LOGIN"} for _, k := range fieldsInOrder { v, ok := asMap[k] if !ok { @@ -18442,8 +18401,6 @@ func (ec *executionContext) unmarshalInputUpdateEnvInput(ctx context.Context, ob } switch k { case "ACCESS_TOKEN_EXPIRY_TIME": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("ACCESS_TOKEN_EXPIRY_TIME")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -18451,8 +18408,6 @@ func (ec *executionContext) unmarshalInputUpdateEnvInput(ctx context.Context, ob } it.AccessTokenExpiryTime = data case "ADMIN_SECRET": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("ADMIN_SECRET")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -18460,8 +18415,6 @@ func (ec *executionContext) unmarshalInputUpdateEnvInput(ctx context.Context, ob } it.AdminSecret = data case "CUSTOM_ACCESS_TOKEN_SCRIPT": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("CUSTOM_ACCESS_TOKEN_SCRIPT")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -18469,8 +18422,6 @@ func (ec *executionContext) unmarshalInputUpdateEnvInput(ctx context.Context, ob } it.CustomAccessTokenScript = data case "OLD_ADMIN_SECRET": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("OLD_ADMIN_SECRET")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -18478,8 +18429,6 @@ func (ec *executionContext) unmarshalInputUpdateEnvInput(ctx context.Context, ob } it.OldAdminSecret = data case "SMTP_HOST": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("SMTP_HOST")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -18487,8 +18436,6 @@ func (ec *executionContext) unmarshalInputUpdateEnvInput(ctx context.Context, ob } it.SMTPHost = data case "SMTP_PORT": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("SMTP_PORT")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -18496,8 +18443,6 @@ func (ec *executionContext) unmarshalInputUpdateEnvInput(ctx context.Context, ob } it.SMTPPort = data case "SMTP_USERNAME": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("SMTP_USERNAME")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -18505,8 +18450,6 @@ func (ec *executionContext) unmarshalInputUpdateEnvInput(ctx context.Context, ob } it.SMTPUsername = data case "SMTP_PASSWORD": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("SMTP_PASSWORD")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -18514,8 +18457,6 @@ func (ec *executionContext) unmarshalInputUpdateEnvInput(ctx context.Context, ob } it.SMTPPassword = data case "SMTP_LOCAL_NAME": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("SMTP_LOCAL_NAME")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -18523,8 +18464,6 @@ func (ec *executionContext) unmarshalInputUpdateEnvInput(ctx context.Context, ob } it.SMTPLocalName = data case "SENDER_EMAIL": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("SENDER_EMAIL")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -18532,8 +18471,6 @@ func (ec *executionContext) unmarshalInputUpdateEnvInput(ctx context.Context, ob } it.SenderEmail = data case "SENDER_NAME": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("SENDER_NAME")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -18541,8 +18478,6 @@ func (ec *executionContext) unmarshalInputUpdateEnvInput(ctx context.Context, ob } it.SenderName = data case "JWT_TYPE": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("JWT_TYPE")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -18550,8 +18485,6 @@ func (ec *executionContext) unmarshalInputUpdateEnvInput(ctx context.Context, ob } it.JwtType = data case "JWT_SECRET": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("JWT_SECRET")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -18559,8 +18492,6 @@ func (ec *executionContext) unmarshalInputUpdateEnvInput(ctx context.Context, ob } it.JwtSecret = data case "JWT_PRIVATE_KEY": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("JWT_PRIVATE_KEY")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -18568,8 +18499,6 @@ func (ec *executionContext) unmarshalInputUpdateEnvInput(ctx context.Context, ob } it.JwtPrivateKey = data case "JWT_PUBLIC_KEY": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("JWT_PUBLIC_KEY")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -18577,8 +18506,6 @@ func (ec *executionContext) unmarshalInputUpdateEnvInput(ctx context.Context, ob } it.JwtPublicKey = data case "ALLOWED_ORIGINS": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("ALLOWED_ORIGINS")) data, err := ec.unmarshalOString2ᚕstringᚄ(ctx, v) if err != nil { @@ -18586,8 +18513,6 @@ func (ec *executionContext) unmarshalInputUpdateEnvInput(ctx context.Context, ob } it.AllowedOrigins = data case "APP_URL": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("APP_URL")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -18595,8 +18520,6 @@ func (ec *executionContext) unmarshalInputUpdateEnvInput(ctx context.Context, ob } it.AppURL = data case "RESET_PASSWORD_URL": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("RESET_PASSWORD_URL")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -18604,8 +18527,6 @@ func (ec *executionContext) unmarshalInputUpdateEnvInput(ctx context.Context, ob } it.ResetPasswordURL = data case "APP_COOKIE_SECURE": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("APP_COOKIE_SECURE")) data, err := ec.unmarshalOBoolean2ᚖbool(ctx, v) if err != nil { @@ -18613,8 +18534,6 @@ func (ec *executionContext) unmarshalInputUpdateEnvInput(ctx context.Context, ob } it.AppCookieSecure = data case "ADMIN_COOKIE_SECURE": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("ADMIN_COOKIE_SECURE")) data, err := ec.unmarshalOBoolean2ᚖbool(ctx, v) if err != nil { @@ -18622,8 +18541,6 @@ func (ec *executionContext) unmarshalInputUpdateEnvInput(ctx context.Context, ob } it.AdminCookieSecure = data case "DISABLE_EMAIL_VERIFICATION": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("DISABLE_EMAIL_VERIFICATION")) data, err := ec.unmarshalOBoolean2ᚖbool(ctx, v) if err != nil { @@ -18631,8 +18548,6 @@ func (ec *executionContext) unmarshalInputUpdateEnvInput(ctx context.Context, ob } it.DisableEmailVerification = data case "DISABLE_BASIC_AUTHENTICATION": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("DISABLE_BASIC_AUTHENTICATION")) data, err := ec.unmarshalOBoolean2ᚖbool(ctx, v) if err != nil { @@ -18640,8 +18555,6 @@ func (ec *executionContext) unmarshalInputUpdateEnvInput(ctx context.Context, ob } it.DisableBasicAuthentication = data case "DISABLE_MOBILE_BASIC_AUTHENTICATION": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("DISABLE_MOBILE_BASIC_AUTHENTICATION")) data, err := ec.unmarshalOBoolean2ᚖbool(ctx, v) if err != nil { @@ -18649,8 +18562,6 @@ func (ec *executionContext) unmarshalInputUpdateEnvInput(ctx context.Context, ob } it.DisableMobileBasicAuthentication = data case "DISABLE_MAGIC_LINK_LOGIN": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("DISABLE_MAGIC_LINK_LOGIN")) data, err := ec.unmarshalOBoolean2ᚖbool(ctx, v) if err != nil { @@ -18658,8 +18569,6 @@ func (ec *executionContext) unmarshalInputUpdateEnvInput(ctx context.Context, ob } it.DisableMagicLinkLogin = data case "DISABLE_LOGIN_PAGE": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("DISABLE_LOGIN_PAGE")) data, err := ec.unmarshalOBoolean2ᚖbool(ctx, v) if err != nil { @@ -18667,8 +18576,6 @@ func (ec *executionContext) unmarshalInputUpdateEnvInput(ctx context.Context, ob } it.DisableLoginPage = data case "DISABLE_SIGN_UP": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("DISABLE_SIGN_UP")) data, err := ec.unmarshalOBoolean2ᚖbool(ctx, v) if err != nil { @@ -18676,8 +18583,6 @@ func (ec *executionContext) unmarshalInputUpdateEnvInput(ctx context.Context, ob } it.DisableSignUp = data case "DISABLE_REDIS_FOR_ENV": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("DISABLE_REDIS_FOR_ENV")) data, err := ec.unmarshalOBoolean2ᚖbool(ctx, v) if err != nil { @@ -18685,8 +18590,6 @@ func (ec *executionContext) unmarshalInputUpdateEnvInput(ctx context.Context, ob } it.DisableRedisForEnv = data case "DISABLE_STRONG_PASSWORD": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("DISABLE_STRONG_PASSWORD")) data, err := ec.unmarshalOBoolean2ᚖbool(ctx, v) if err != nil { @@ -18694,8 +18597,6 @@ func (ec *executionContext) unmarshalInputUpdateEnvInput(ctx context.Context, ob } it.DisableStrongPassword = data case "DISABLE_MULTI_FACTOR_AUTHENTICATION": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("DISABLE_MULTI_FACTOR_AUTHENTICATION")) data, err := ec.unmarshalOBoolean2ᚖbool(ctx, v) if err != nil { @@ -18703,8 +18604,6 @@ func (ec *executionContext) unmarshalInputUpdateEnvInput(ctx context.Context, ob } it.DisableMultiFactorAuthentication = data case "ENFORCE_MULTI_FACTOR_AUTHENTICATION": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("ENFORCE_MULTI_FACTOR_AUTHENTICATION")) data, err := ec.unmarshalOBoolean2ᚖbool(ctx, v) if err != nil { @@ -18712,8 +18611,6 @@ func (ec *executionContext) unmarshalInputUpdateEnvInput(ctx context.Context, ob } it.EnforceMultiFactorAuthentication = data case "ROLES": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("ROLES")) data, err := ec.unmarshalOString2ᚕstringᚄ(ctx, v) if err != nil { @@ -18721,8 +18618,6 @@ func (ec *executionContext) unmarshalInputUpdateEnvInput(ctx context.Context, ob } it.Roles = data case "PROTECTED_ROLES": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("PROTECTED_ROLES")) data, err := ec.unmarshalOString2ᚕstringᚄ(ctx, v) if err != nil { @@ -18730,8 +18625,6 @@ func (ec *executionContext) unmarshalInputUpdateEnvInput(ctx context.Context, ob } it.ProtectedRoles = data case "DEFAULT_ROLES": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("DEFAULT_ROLES")) data, err := ec.unmarshalOString2ᚕstringᚄ(ctx, v) if err != nil { @@ -18739,8 +18632,6 @@ func (ec *executionContext) unmarshalInputUpdateEnvInput(ctx context.Context, ob } it.DefaultRoles = data case "JWT_ROLE_CLAIM": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("JWT_ROLE_CLAIM")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -18748,8 +18639,6 @@ func (ec *executionContext) unmarshalInputUpdateEnvInput(ctx context.Context, ob } it.JwtRoleClaim = data case "GOOGLE_CLIENT_ID": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("GOOGLE_CLIENT_ID")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -18757,8 +18646,6 @@ func (ec *executionContext) unmarshalInputUpdateEnvInput(ctx context.Context, ob } it.GoogleClientID = data case "GOOGLE_CLIENT_SECRET": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("GOOGLE_CLIENT_SECRET")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -18766,8 +18653,6 @@ func (ec *executionContext) unmarshalInputUpdateEnvInput(ctx context.Context, ob } it.GoogleClientSecret = data case "GITHUB_CLIENT_ID": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("GITHUB_CLIENT_ID")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -18775,8 +18660,6 @@ func (ec *executionContext) unmarshalInputUpdateEnvInput(ctx context.Context, ob } it.GithubClientID = data case "GITHUB_CLIENT_SECRET": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("GITHUB_CLIENT_SECRET")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -18784,8 +18667,6 @@ func (ec *executionContext) unmarshalInputUpdateEnvInput(ctx context.Context, ob } it.GithubClientSecret = data case "FACEBOOK_CLIENT_ID": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("FACEBOOK_CLIENT_ID")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -18793,8 +18674,6 @@ func (ec *executionContext) unmarshalInputUpdateEnvInput(ctx context.Context, ob } it.FacebookClientID = data case "FACEBOOK_CLIENT_SECRET": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("FACEBOOK_CLIENT_SECRET")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -18802,8 +18681,6 @@ func (ec *executionContext) unmarshalInputUpdateEnvInput(ctx context.Context, ob } it.FacebookClientSecret = data case "LINKEDIN_CLIENT_ID": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("LINKEDIN_CLIENT_ID")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -18811,8 +18688,6 @@ func (ec *executionContext) unmarshalInputUpdateEnvInput(ctx context.Context, ob } it.LinkedinClientID = data case "LINKEDIN_CLIENT_SECRET": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("LINKEDIN_CLIENT_SECRET")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -18820,8 +18695,6 @@ func (ec *executionContext) unmarshalInputUpdateEnvInput(ctx context.Context, ob } it.LinkedinClientSecret = data case "APPLE_CLIENT_ID": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("APPLE_CLIENT_ID")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -18829,8 +18702,6 @@ func (ec *executionContext) unmarshalInputUpdateEnvInput(ctx context.Context, ob } it.AppleClientID = data case "APPLE_CLIENT_SECRET": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("APPLE_CLIENT_SECRET")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -18838,8 +18709,6 @@ func (ec *executionContext) unmarshalInputUpdateEnvInput(ctx context.Context, ob } it.AppleClientSecret = data case "DISCORD_CLIENT_ID": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("DISCORD_CLIENT_ID")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -18847,8 +18716,6 @@ func (ec *executionContext) unmarshalInputUpdateEnvInput(ctx context.Context, ob } it.DiscordClientID = data case "DISCORD_CLIENT_SECRET": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("DISCORD_CLIENT_SECRET")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -18856,8 +18723,6 @@ func (ec *executionContext) unmarshalInputUpdateEnvInput(ctx context.Context, ob } it.DiscordClientSecret = data case "TWITTER_CLIENT_ID": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("TWITTER_CLIENT_ID")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -18865,8 +18730,6 @@ func (ec *executionContext) unmarshalInputUpdateEnvInput(ctx context.Context, ob } it.TwitterClientID = data case "TWITTER_CLIENT_SECRET": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("TWITTER_CLIENT_SECRET")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -18874,8 +18737,6 @@ func (ec *executionContext) unmarshalInputUpdateEnvInput(ctx context.Context, ob } it.TwitterClientSecret = data case "MICROSOFT_CLIENT_ID": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("MICROSOFT_CLIENT_ID")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -18883,8 +18744,6 @@ func (ec *executionContext) unmarshalInputUpdateEnvInput(ctx context.Context, ob } it.MicrosoftClientID = data case "MICROSOFT_CLIENT_SECRET": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("MICROSOFT_CLIENT_SECRET")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -18892,8 +18751,6 @@ func (ec *executionContext) unmarshalInputUpdateEnvInput(ctx context.Context, ob } it.MicrosoftClientSecret = data case "MICROSOFT_ACTIVE_DIRECTORY_TENANT_ID": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("MICROSOFT_ACTIVE_DIRECTORY_TENANT_ID")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -18901,8 +18758,6 @@ func (ec *executionContext) unmarshalInputUpdateEnvInput(ctx context.Context, ob } it.MicrosoftActiveDirectoryTenantID = data case "TWITCH_CLIENT_ID": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("TWITCH_CLIENT_ID")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -18910,17 +18765,27 @@ func (ec *executionContext) unmarshalInputUpdateEnvInput(ctx context.Context, ob } it.TwitchClientID = data case "TWITCH_CLIENT_SECRET": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("TWITCH_CLIENT_SECRET")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { return it, err } it.TwitchClientSecret = data + case "ROBLOX_CLIENT_ID": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("ROBLOX_CLIENT_ID")) + data, err := ec.unmarshalOString2ᚖstring(ctx, v) + if err != nil { + return it, err + } + it.RobloxClientID = data + case "ROBLOX_CLIENT_SECRET": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("ROBLOX_CLIENT_SECRET")) + data, err := ec.unmarshalOString2ᚖstring(ctx, v) + if err != nil { + return it, err + } + it.RobloxClientSecret = data case "ORGANIZATION_NAME": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("ORGANIZATION_NAME")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -18928,8 +18793,6 @@ func (ec *executionContext) unmarshalInputUpdateEnvInput(ctx context.Context, ob } it.OrganizationName = data case "ORGANIZATION_LOGO": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("ORGANIZATION_LOGO")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -18937,8 +18800,6 @@ func (ec *executionContext) unmarshalInputUpdateEnvInput(ctx context.Context, ob } it.OrganizationLogo = data case "DEFAULT_AUTHORIZE_RESPONSE_TYPE": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("DEFAULT_AUTHORIZE_RESPONSE_TYPE")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -18946,8 +18807,6 @@ func (ec *executionContext) unmarshalInputUpdateEnvInput(ctx context.Context, ob } it.DefaultAuthorizeResponseType = data case "DEFAULT_AUTHORIZE_RESPONSE_MODE": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("DEFAULT_AUTHORIZE_RESPONSE_MODE")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -18955,8 +18814,6 @@ func (ec *executionContext) unmarshalInputUpdateEnvInput(ctx context.Context, ob } it.DefaultAuthorizeResponseMode = data case "DISABLE_PLAYGROUND": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("DISABLE_PLAYGROUND")) data, err := ec.unmarshalOBoolean2ᚖbool(ctx, v) if err != nil { @@ -18964,8 +18821,6 @@ func (ec *executionContext) unmarshalInputUpdateEnvInput(ctx context.Context, ob } it.DisablePlayground = data case "DISABLE_MAIL_OTP_LOGIN": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("DISABLE_MAIL_OTP_LOGIN")) data, err := ec.unmarshalOBoolean2ᚖbool(ctx, v) if err != nil { @@ -18973,8 +18828,6 @@ func (ec *executionContext) unmarshalInputUpdateEnvInput(ctx context.Context, ob } it.DisableMailOtpLogin = data case "DISABLE_TOTP_LOGIN": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("DISABLE_TOTP_LOGIN")) data, err := ec.unmarshalOBoolean2ᚖbool(ctx, v) if err != nil { @@ -19002,8 +18855,6 @@ func (ec *executionContext) unmarshalInputUpdateProfileInput(ctx context.Context } switch k { case "old_password": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("old_password")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -19011,8 +18862,6 @@ func (ec *executionContext) unmarshalInputUpdateProfileInput(ctx context.Context } it.OldPassword = data case "new_password": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("new_password")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -19020,8 +18869,6 @@ func (ec *executionContext) unmarshalInputUpdateProfileInput(ctx context.Context } it.NewPassword = data case "confirm_new_password": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("confirm_new_password")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -19029,8 +18876,6 @@ func (ec *executionContext) unmarshalInputUpdateProfileInput(ctx context.Context } it.ConfirmNewPassword = data case "email": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("email")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -19038,8 +18883,6 @@ func (ec *executionContext) unmarshalInputUpdateProfileInput(ctx context.Context } it.Email = data case "given_name": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("given_name")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -19047,8 +18890,6 @@ func (ec *executionContext) unmarshalInputUpdateProfileInput(ctx context.Context } it.GivenName = data case "family_name": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("family_name")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -19056,8 +18897,6 @@ func (ec *executionContext) unmarshalInputUpdateProfileInput(ctx context.Context } it.FamilyName = data case "middle_name": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("middle_name")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -19065,8 +18904,6 @@ func (ec *executionContext) unmarshalInputUpdateProfileInput(ctx context.Context } it.MiddleName = data case "nickname": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("nickname")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -19074,8 +18911,6 @@ func (ec *executionContext) unmarshalInputUpdateProfileInput(ctx context.Context } it.Nickname = data case "gender": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("gender")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -19083,8 +18918,6 @@ func (ec *executionContext) unmarshalInputUpdateProfileInput(ctx context.Context } it.Gender = data case "birthdate": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("birthdate")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -19092,8 +18925,6 @@ func (ec *executionContext) unmarshalInputUpdateProfileInput(ctx context.Context } it.Birthdate = data case "phone_number": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("phone_number")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -19101,8 +18932,6 @@ func (ec *executionContext) unmarshalInputUpdateProfileInput(ctx context.Context } it.PhoneNumber = data case "picture": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("picture")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -19110,8 +18939,6 @@ func (ec *executionContext) unmarshalInputUpdateProfileInput(ctx context.Context } it.Picture = data case "is_multi_factor_auth_enabled": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("is_multi_factor_auth_enabled")) data, err := ec.unmarshalOBoolean2ᚖbool(ctx, v) if err != nil { @@ -19119,8 +18946,6 @@ func (ec *executionContext) unmarshalInputUpdateProfileInput(ctx context.Context } it.IsMultiFactorAuthEnabled = data case "app_data": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("app_data")) data, err := ec.unmarshalOMap2map(ctx, v) if err != nil { @@ -19148,8 +18973,6 @@ func (ec *executionContext) unmarshalInputUpdateUserInput(ctx context.Context, o } switch k { case "id": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("id")) data, err := ec.unmarshalNID2string(ctx, v) if err != nil { @@ -19157,8 +18980,6 @@ func (ec *executionContext) unmarshalInputUpdateUserInput(ctx context.Context, o } it.ID = data case "email": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("email")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -19166,8 +18987,6 @@ func (ec *executionContext) unmarshalInputUpdateUserInput(ctx context.Context, o } it.Email = data case "email_verified": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("email_verified")) data, err := ec.unmarshalOBoolean2ᚖbool(ctx, v) if err != nil { @@ -19175,8 +18994,6 @@ func (ec *executionContext) unmarshalInputUpdateUserInput(ctx context.Context, o } it.EmailVerified = data case "given_name": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("given_name")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -19184,8 +19001,6 @@ func (ec *executionContext) unmarshalInputUpdateUserInput(ctx context.Context, o } it.GivenName = data case "family_name": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("family_name")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -19193,8 +19008,6 @@ func (ec *executionContext) unmarshalInputUpdateUserInput(ctx context.Context, o } it.FamilyName = data case "middle_name": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("middle_name")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -19202,8 +19015,6 @@ func (ec *executionContext) unmarshalInputUpdateUserInput(ctx context.Context, o } it.MiddleName = data case "nickname": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("nickname")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -19211,8 +19022,6 @@ func (ec *executionContext) unmarshalInputUpdateUserInput(ctx context.Context, o } it.Nickname = data case "gender": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("gender")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -19220,8 +19029,6 @@ func (ec *executionContext) unmarshalInputUpdateUserInput(ctx context.Context, o } it.Gender = data case "birthdate": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("birthdate")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -19229,8 +19036,6 @@ func (ec *executionContext) unmarshalInputUpdateUserInput(ctx context.Context, o } it.Birthdate = data case "phone_number": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("phone_number")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -19238,8 +19043,6 @@ func (ec *executionContext) unmarshalInputUpdateUserInput(ctx context.Context, o } it.PhoneNumber = data case "phone_number_verified": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("phone_number_verified")) data, err := ec.unmarshalOBoolean2ᚖbool(ctx, v) if err != nil { @@ -19247,8 +19050,6 @@ func (ec *executionContext) unmarshalInputUpdateUserInput(ctx context.Context, o } it.PhoneNumberVerified = data case "picture": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("picture")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -19256,8 +19057,6 @@ func (ec *executionContext) unmarshalInputUpdateUserInput(ctx context.Context, o } it.Picture = data case "roles": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("roles")) data, err := ec.unmarshalOString2ᚕᚖstring(ctx, v) if err != nil { @@ -19265,8 +19064,6 @@ func (ec *executionContext) unmarshalInputUpdateUserInput(ctx context.Context, o } it.Roles = data case "is_multi_factor_auth_enabled": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("is_multi_factor_auth_enabled")) data, err := ec.unmarshalOBoolean2ᚖbool(ctx, v) if err != nil { @@ -19274,8 +19071,6 @@ func (ec *executionContext) unmarshalInputUpdateUserInput(ctx context.Context, o } it.IsMultiFactorAuthEnabled = data case "app_data": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("app_data")) data, err := ec.unmarshalOMap2map(ctx, v) if err != nil { @@ -19303,8 +19098,6 @@ func (ec *executionContext) unmarshalInputUpdateWebhookRequest(ctx context.Conte } switch k { case "id": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("id")) data, err := ec.unmarshalNID2string(ctx, v) if err != nil { @@ -19312,8 +19105,6 @@ func (ec *executionContext) unmarshalInputUpdateWebhookRequest(ctx context.Conte } it.ID = data case "event_name": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("event_name")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -19321,8 +19112,6 @@ func (ec *executionContext) unmarshalInputUpdateWebhookRequest(ctx context.Conte } it.EventName = data case "event_description": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("event_description")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -19330,8 +19119,6 @@ func (ec *executionContext) unmarshalInputUpdateWebhookRequest(ctx context.Conte } it.EventDescription = data case "endpoint": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("endpoint")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -19339,8 +19126,6 @@ func (ec *executionContext) unmarshalInputUpdateWebhookRequest(ctx context.Conte } it.Endpoint = data case "enabled": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("enabled")) data, err := ec.unmarshalOBoolean2ᚖbool(ctx, v) if err != nil { @@ -19348,8 +19133,6 @@ func (ec *executionContext) unmarshalInputUpdateWebhookRequest(ctx context.Conte } it.Enabled = data case "headers": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("headers")) data, err := ec.unmarshalOMap2map(ctx, v) if err != nil { @@ -19377,8 +19160,6 @@ func (ec *executionContext) unmarshalInputValidateJWTTokenInput(ctx context.Cont } switch k { case "token_type": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("token_type")) data, err := ec.unmarshalNString2string(ctx, v) if err != nil { @@ -19386,8 +19167,6 @@ func (ec *executionContext) unmarshalInputValidateJWTTokenInput(ctx context.Cont } it.TokenType = data case "token": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("token")) data, err := ec.unmarshalNString2string(ctx, v) if err != nil { @@ -19395,8 +19174,6 @@ func (ec *executionContext) unmarshalInputValidateJWTTokenInput(ctx context.Cont } it.Token = data case "roles": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("roles")) data, err := ec.unmarshalOString2ᚕstringᚄ(ctx, v) if err != nil { @@ -19424,8 +19201,6 @@ func (ec *executionContext) unmarshalInputValidateSessionInput(ctx context.Conte } switch k { case "cookie": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("cookie")) data, err := ec.unmarshalNString2string(ctx, v) if err != nil { @@ -19433,8 +19208,6 @@ func (ec *executionContext) unmarshalInputValidateSessionInput(ctx context.Conte } it.Cookie = data case "roles": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("roles")) data, err := ec.unmarshalOString2ᚕstringᚄ(ctx, v) if err != nil { @@ -19462,8 +19235,6 @@ func (ec *executionContext) unmarshalInputVerifyEmailInput(ctx context.Context, } switch k { case "token": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("token")) data, err := ec.unmarshalNString2string(ctx, v) if err != nil { @@ -19471,8 +19242,6 @@ func (ec *executionContext) unmarshalInputVerifyEmailInput(ctx context.Context, } it.Token = data case "state": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("state")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -19500,8 +19269,6 @@ func (ec *executionContext) unmarshalInputVerifyOTPRequest(ctx context.Context, } switch k { case "email": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("email")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -19509,8 +19276,6 @@ func (ec *executionContext) unmarshalInputVerifyOTPRequest(ctx context.Context, } it.Email = data case "phone_number": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("phone_number")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -19518,8 +19283,6 @@ func (ec *executionContext) unmarshalInputVerifyOTPRequest(ctx context.Context, } it.PhoneNumber = data case "otp": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("otp")) data, err := ec.unmarshalNString2string(ctx, v) if err != nil { @@ -19527,8 +19290,6 @@ func (ec *executionContext) unmarshalInputVerifyOTPRequest(ctx context.Context, } it.Otp = data case "is_totp": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("is_totp")) data, err := ec.unmarshalOBoolean2ᚖbool(ctx, v) if err != nil { @@ -19536,8 +19297,6 @@ func (ec *executionContext) unmarshalInputVerifyOTPRequest(ctx context.Context, } it.IsTotp = data case "state": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("state")) data, err := ec.unmarshalOString2ᚖstring(ctx, v) if err != nil { @@ -19565,8 +19324,6 @@ func (ec *executionContext) unmarshalInputWebhookRequest(ctx context.Context, ob } switch k { case "id": - var err error - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("id")) data, err := ec.unmarshalNID2string(ctx, v) if err != nil { @@ -19922,6 +19679,10 @@ func (ec *executionContext) _Env(ctx context.Context, sel ast.SelectionSet, obj out.Values[i] = ec._Env_TWITCH_CLIENT_ID(ctx, field, obj) case "TWITCH_CLIENT_SECRET": out.Values[i] = ec._Env_TWITCH_CLIENT_SECRET(ctx, field, obj) + case "ROBLOX_CLIENT_ID": + out.Values[i] = ec._Env_ROBLOX_CLIENT_ID(ctx, field, obj) + case "ROBLOX_CLIENT_SECRET": + out.Values[i] = ec._Env_ROBLOX_CLIENT_SECRET(ctx, field, obj) case "ORGANIZATION_NAME": out.Values[i] = ec._Env_ORGANIZATION_NAME(ctx, field, obj) case "ORGANIZATION_LOGO": @@ -20213,6 +19974,11 @@ func (ec *executionContext) _Meta(ctx context.Context, sel ast.SelectionSet, obj if out.Values[i] == graphql.Null { out.Invalids++ } + case "is_roblox_login_enabled": + out.Values[i] = ec._Meta_is_roblox_login_enabled(ctx, field, obj) + if out.Values[i] == graphql.Null { + out.Invalids++ + } case "is_email_verification_enabled": out.Values[i] = ec._Meta_is_email_verification_enabled(ctx, field, obj) if out.Values[i] == graphql.Null { diff --git a/server/graph/model/models_gen.go b/server/graph/model/models_gen.go index 4f23faf..f14db19 100644 --- a/server/graph/model/models_gen.go +++ b/server/graph/model/models_gen.go @@ -124,6 +124,8 @@ type Env struct { MicrosoftActiveDirectoryTenantID *string `json:"MICROSOFT_ACTIVE_DIRECTORY_TENANT_ID,omitempty"` TwitchClientID *string `json:"TWITCH_CLIENT_ID,omitempty"` TwitchClientSecret *string `json:"TWITCH_CLIENT_SECRET,omitempty"` + RobloxClientID *string `json:"ROBLOX_CLIENT_ID,omitempty"` + RobloxClientSecret *string `json:"ROBLOX_CLIENT_SECRET,omitempty"` OrganizationName *string `json:"ORGANIZATION_NAME,omitempty"` OrganizationLogo *string `json:"ORGANIZATION_LOGO,omitempty"` AppCookieSecure bool `json:"APP_COOKIE_SECURE"` @@ -211,6 +213,7 @@ type Meta struct { IsTwitterLoginEnabled bool `json:"is_twitter_login_enabled"` IsMicrosoftLoginEnabled bool `json:"is_microsoft_login_enabled"` IsTwitchLoginEnabled bool `json:"is_twitch_login_enabled"` + IsRobloxLoginEnabled bool `json:"is_roblox_login_enabled"` IsEmailVerificationEnabled bool `json:"is_email_verification_enabled"` IsBasicAuthenticationEnabled bool `json:"is_basic_authentication_enabled"` IsMagicLinkLoginEnabled bool `json:"is_magic_link_login_enabled"` @@ -249,6 +252,9 @@ type MobileSignUpInput struct { AppData map[string]interface{} `json:"app_data,omitempty"` } +type Mutation struct { +} + type OAuthRevokeInput struct { RefreshToken string `json:"refresh_token"` } @@ -269,6 +275,9 @@ type PaginationInput struct { Page *int64 `json:"page,omitempty"` } +type Query struct { +} + type ResendOTPRequest struct { Email *string `json:"email,omitempty"` PhoneNumber *string `json:"phone_number,omitempty"` @@ -405,6 +414,8 @@ type UpdateEnvInput struct { MicrosoftActiveDirectoryTenantID *string `json:"MICROSOFT_ACTIVE_DIRECTORY_TENANT_ID,omitempty"` TwitchClientID *string `json:"TWITCH_CLIENT_ID,omitempty"` TwitchClientSecret *string `json:"TWITCH_CLIENT_SECRET,omitempty"` + RobloxClientID *string `json:"ROBLOX_CLIENT_ID,omitempty"` + RobloxClientSecret *string `json:"ROBLOX_CLIENT_SECRET,omitempty"` OrganizationName *string `json:"ORGANIZATION_NAME,omitempty"` OrganizationLogo *string `json:"ORGANIZATION_LOGO,omitempty"` DefaultAuthorizeResponseType *string `json:"DEFAULT_AUTHORIZE_RESPONSE_TYPE,omitempty"` diff --git a/server/graph/schema.graphqls b/server/graph/schema.graphqls index c93c8b5..1cf0a7a 100644 --- a/server/graph/schema.graphqls +++ b/server/graph/schema.graphqls @@ -24,6 +24,7 @@ type Meta { is_twitter_login_enabled: Boolean! is_microsoft_login_enabled: Boolean! is_twitch_login_enabled: Boolean! + is_roblox_login_enabled: Boolean! is_email_verification_enabled: Boolean! is_basic_authentication_enabled: Boolean! is_magic_link_login_enabled: Boolean! @@ -189,6 +190,8 @@ type Env { MICROSOFT_ACTIVE_DIRECTORY_TENANT_ID: String TWITCH_CLIENT_ID: String TWITCH_CLIENT_SECRET: String + ROBLOX_CLIENT_ID: String + ROBLOX_CLIENT_SECRET: String ORGANIZATION_NAME: String ORGANIZATION_LOGO: String APP_COOKIE_SECURE: Boolean! @@ -321,6 +324,8 @@ input UpdateEnvInput { MICROSOFT_ACTIVE_DIRECTORY_TENANT_ID: String TWITCH_CLIENT_ID: String TWITCH_CLIENT_SECRET: String + ROBLOX_CLIENT_ID: String + ROBLOX_CLIENT_SECRET: String ORGANIZATION_NAME: String ORGANIZATION_LOGO: String DEFAULT_AUTHORIZE_RESPONSE_TYPE: String diff --git a/server/graph/schema.resolvers.go b/server/graph/schema.resolvers.go index e23a074..12ca6bc 100644 --- a/server/graph/schema.resolvers.go +++ b/server/graph/schema.resolvers.go @@ -2,7 +2,7 @@ package graph // This file will be automatically regenerated based on the schema, any resolver implementations // will be copied through when generating and any unknown code will be moved to the end. -// Code generated by github.com/99designs/gqlgen version v0.17.39 +// Code generated by github.com/99designs/gqlgen version v0.17.45 import ( "context" diff --git a/server/handlers/oauth_callback.go b/server/handlers/oauth_callback.go index 2a947d6..ed8b03d 100644 --- a/server/handlers/oauth_callback.go +++ b/server/handlers/oauth_callback.go @@ -89,6 +89,8 @@ func OAuthCallbackHandler() gin.HandlerFunc { user, err = processMicrosoftUserInfo(ctx, oauthCode) case constants.AuthRecipeMethodTwitch: user, err = processTwitchUserInfo(ctx, oauthCode) + case constants.AuthRecipeMethodRoblox: + user, err = processRobloxUserInfo(ctx, oauthCode, sessionState) default: log.Info("Invalid oauth provider") err = fmt.Errorf(`invalid oauth provider`) @@ -818,3 +820,68 @@ func processTwitchUserInfo(ctx context.Context, code string) (*models.User, erro return user, nil } + +// process roblox user information +func processRobloxUserInfo(ctx context.Context, code, verifier string) (*models.User, error) { + oauth2Token, err := oauth.OAuthProviders.RobloxConfig.Exchange(ctx, code, oauth2.SetAuthURLParam("code_verifier", verifier)) + if err != nil { + log.Debug("Failed to exchange code for token: ", err) + return nil, fmt.Errorf("invalid roblox exchange code: %s", err.Error()) + } + + client := http.Client{} + req, err := http.NewRequest("GET", constants.RobloxUserInfoURL, nil) + if err != nil { + log.Debug("Failed to create roblox user info request: ", err) + return nil, fmt.Errorf("error creating roblox user info request: %s", err.Error()) + } + req.Header = http.Header{ + "Authorization": []string{fmt.Sprintf("Bearer %s", oauth2Token.AccessToken)}, + } + + response, err := client.Do(req) + if err != nil { + log.Debug("Failed to request roblox user info: ", err) + return nil, err + } + + defer response.Body.Close() + body, err := io.ReadAll(response.Body) + if err != nil { + log.Debug("Failed to read roblox user info response body: ", err) + return nil, fmt.Errorf("failed to read roblox response body: %s", err.Error()) + } + + if response.StatusCode >= 400 { + log.Debug("Failed to request roblox user info: ", string(body)) + return nil, fmt.Errorf("failed to request roblox user info: %s", string(body)) + } + + userRawData := make(map[string]interface{}) + json.Unmarshal(body, &userRawData) + + // log.Info(userRawData) + nameArr := strings.SplitAfterN(userRawData["name"].(string), " ", 2) + firstName := nameArr[0] + lastName := "" + if len(nameArr) == 2 { + lastName = nameArr[1] + } + nickname := userRawData["nickname"].(string) + profilePicture := userRawData["picture"].(string) + email := "" + if val, ok := userRawData["email"]; ok { + email = val.(string) + } else { + email = userRawData["sub"].(string) + } + user := &models.User{ + GivenName: &firstName, + FamilyName: &lastName, + Picture: &profilePicture, + Nickname: &nickname, + Email: &email, + } + + return user, nil +} diff --git a/server/handlers/oauth_login.go b/server/handlers/oauth_login.go index 75a219f..b41485f 100644 --- a/server/handlers/oauth_login.go +++ b/server/handlers/oauth_login.go @@ -7,7 +7,7 @@ import ( "golang.org/x/oauth2" "github.com/gin-gonic/gin" - + "github.com/google/uuid" log "github.com/sirupsen/logrus" "github.com/authorizerdev/authorizer/server/constants" @@ -40,11 +40,8 @@ func OAuthLoginHandler() gin.HandlerFunc { } if state == "" { - log.Debug("state is empty") - c.JSON(400, gin.H{ - "error": "invalid state", - }) - return + log.Debug("state is empty. creating a new state") + state = uuid.New().String() } var scope []string @@ -265,6 +262,24 @@ func OAuthLoginHandler() gin.HandlerFunc { oauth.OAuthProviders.TwitchConfig.RedirectURL = hostname + "/oauth_callback/" + constants.AuthRecipeMethodTwitch url := oauth.OAuthProviders.TwitchConfig.AuthCodeURL(oauthStateString) c.Redirect(http.StatusTemporaryRedirect, url) + case constants.AuthRecipeMethodRoblox: + if oauth.OAuthProviders.RobloxConfig == nil { + log.Debug("RobloxConfig OAuth provider is not configured") + isProviderConfigured = false + break + } + err := memorystore.Provider.SetState(oauthStateString, constants.AuthRecipeMethodRoblox) + if err != nil { + log.Debug("Error setting state: ", err) + c.JSON(500, gin.H{ + "error": "internal server error", + }) + return + } + // during the init of OAuthProvider authorizer url might be empty + oauth.OAuthProviders.RobloxConfig.RedirectURL = hostname + "/oauth_callback/" + constants.AuthRecipeMethodRoblox + url := oauth.OAuthProviders.RobloxConfig.AuthCodeURL(oauthStateString) + c.Redirect(http.StatusTemporaryRedirect, url) default: log.Debug("Invalid oauth provider: ", provider) c.JSON(422, gin.H{ diff --git a/server/oauth/oauth.go b/server/oauth/oauth.go index 2e6f724..8f64fee 100644 --- a/server/oauth/oauth.go +++ b/server/oauth/oauth.go @@ -34,6 +34,7 @@ type OAuthProvider struct { TwitterConfig *oauth2.Config MicrosoftConfig *oauth2.Config TwitchConfig *oauth2.Config + RobloxConfig *oauth2.Config } // OIDCProviders is a struct that contains reference all the OpenID providers @@ -251,5 +252,25 @@ func InitOAuth() error { } } + robloxClientID, err := memorystore.Provider.GetStringStoreEnvVariable(constants.EnvKeyRobloxClientID) + if err != nil { + robloxClientID = "" + } + robloxClientSecret, err := memorystore.Provider.GetStringStoreEnvVariable(constants.EnvKeyRobloxClientSecret) + if err != nil { + robloxClientSecret = "" + } + if robloxClientID != "" && robloxClientSecret != "" { + OAuthProviders.RobloxConfig = &oauth2.Config{ + ClientID: robloxClientID, + ClientSecret: robloxClientSecret, + RedirectURL: "/oauth_callback/roblox", + Endpoint: oauth2.Endpoint{ + AuthURL: "https://apis.roblox.com/oauth/v1/authorize", + TokenURL: "https://apis.roblox.com/oauth/v1/token", + }, + Scopes: []string{oidc.ScopeOpenID, "profile"}, + } + } return nil } diff --git a/server/resolvers/env.go b/server/resolvers/env.go index 541484b..f95e1f7 100644 --- a/server/resolvers/env.go +++ b/server/resolvers/env.go @@ -176,6 +176,12 @@ func EnvResolver(ctx context.Context) (*model.Env, error) { if val, ok := store[constants.EnvKeyTwitchClientSecret]; ok { res.TwitchClientSecret = refs.NewStringRef(val.(string)) } + if val, ok := store[constants.EnvKeyRobloxClientID]; ok { + res.RobloxClientID = refs.NewStringRef(val.(string)) + } + if val, ok := store[constants.EnvKeyRobloxClientSecret]; ok { + res.RobloxClientSecret = refs.NewStringRef(val.(string)) + } if val, ok := store[constants.EnvKeyOrganizationName]; ok { res.OrganizationName = refs.NewStringRef(val.(string)) } diff --git a/server/resolvers/meta.go b/server/resolvers/meta.go index cbab1e0..9fb14c8 100644 --- a/server/resolvers/meta.go +++ b/server/resolvers/meta.go @@ -101,6 +101,30 @@ func MetaResolver(ctx context.Context) (*model.Meta, error) { microsoftClientSecret = "" } + twitchClientID, err := memorystore.Provider.GetStringStoreEnvVariable(constants.EnvKeyTwitchClientID) + if err != nil { + log.Debug("Failed to get Twitch Client ID from environment variable", err) + microsoftClientID = "" + } + + twitchClientSecret, err := memorystore.Provider.GetStringStoreEnvVariable(constants.EnvKeyTwitchClientSecret) + if err != nil { + log.Debug("Failed to get Twitch Client Secret from environment variable", err) + microsoftClientSecret = "" + } + + robloxClientID, err := memorystore.Provider.GetStringStoreEnvVariable(constants.EnvKeyRobloxClientID) + if err != nil { + log.Debug("Failed to get Roblox Client ID from environment variable", err) + microsoftClientID = "" + } + + robloxClientSecret, err := memorystore.Provider.GetStringStoreEnvVariable(constants.EnvKeyRobloxClientSecret) + if err != nil { + log.Debug("Failed to get Roblox Client Secret from environment variable", err) + microsoftClientSecret = "" + } + isBasicAuthDisabled, err := memorystore.Provider.GetBoolStoreEnvVariable(constants.EnvKeyDisableBasicAuthentication) if err != nil { log.Debug("Failed to get Disable Basic Authentication from environment variable", err) @@ -165,6 +189,8 @@ func MetaResolver(ctx context.Context) (*model.Meta, error) { IsMultiFactorAuthEnabled: !isMultiFactorAuthenticationEnabled, IsMobileBasicAuthenticationEnabled: !isMobileBasicAuthDisabled, IsPhoneVerificationEnabled: !isMobileVerificationDisabled, + IsTwitchLoginEnabled: twitchClientID != "" && twitchClientSecret != "", + IsRobloxLoginEnabled: robloxClientID != "" && robloxClientSecret != "", } return &metaInfo, nil } diff --git a/server/resolvers/test_endpoint.go b/server/resolvers/test_endpoint.go index e3e3eb3..c0cdb23 100644 --- a/server/resolvers/test_endpoint.go +++ b/server/resolvers/test_endpoint.go @@ -5,7 +5,7 @@ import ( "context" "encoding/json" "fmt" - "io/ioutil" + "io" "net/http" "time" @@ -90,7 +90,7 @@ func TestEndpointResolver(ctx context.Context, params model.TestEndpointRequest) } defer resp.Body.Close() - body, err := ioutil.ReadAll(resp.Body) + body, err := io.ReadAll(resp.Body) if err != nil { log.Debug("error reading response: ", err) return nil, err diff --git a/server/utils/webhook.go b/server/utils/webhook.go index 5d280a7..a97f286 100644 --- a/server/utils/webhook.go +++ b/server/utils/webhook.go @@ -4,7 +4,7 @@ import ( "bytes" "context" "encoding/json" - "io/ioutil" + "io" "net/http" "time" @@ -95,7 +95,7 @@ func RegisterEvent(ctx context.Context, eventName string, authRecipe string, use } defer resp.Body.Close() - responseBytes, err := ioutil.ReadAll(resp.Body) + responseBytes, err := io.ReadAll(resp.Body) if err != nil { log.Debug("error reading response: ", err) continue