diff --git a/go.mod b/go.mod index 8f5b78f2ca6..f4cbeeded97 100644 --- a/go.mod +++ b/go.mod @@ -22,8 +22,6 @@ require ( github.com/fatih/color v1.14.1 github.com/gdamore/tcell v1.3.0 github.com/getsentry/sentry-go v0.20.0 - github.com/go-openapi/runtime v0.19.26 - github.com/go-openapi/strfmt v0.21.3 github.com/gofrs/uuid v4.0.0+incompatible github.com/gogo/protobuf v1.3.2 github.com/golang-migrate/migrate v3.5.4+incompatible @@ -50,8 +48,8 @@ require ( github.com/olekukonko/tablewriter v0.0.5 github.com/olivere/elastic/v7 v7.0.12 github.com/ory/dockertest/v3 v3.8.1 - github.com/ory/hydra-client-go v1.9.2 - github.com/ory/kratos-client-go v0.10.1 + github.com/ory/hydra-client-go/v2 v2.2.0 + github.com/ory/kratos-client-go v1.3.8 github.com/phayes/freeport v0.0.0-20171002181615-b8543db493a5 github.com/prometheus/client_golang v1.14.0 github.com/prometheus/client_model v0.3.0 @@ -68,7 +66,7 @@ require ( github.com/spf13/cobra v1.6.1 github.com/spf13/pflag v1.0.5 github.com/spf13/viper v1.8.1 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.10.0 github.com/txn2/txeh v1.2.1 github.com/vbauerster/mpb/v4 v4.11.0 github.com/zenazn/goji v0.9.1-0.20160507202103-64eb34159fe5 @@ -80,7 +78,7 @@ require ( golang.org/x/exp v0.0.0-20230307190834-24139beb5833 golang.org/x/mod v0.20.0 golang.org/x/net v0.36.0 - golang.org/x/oauth2 v0.6.0 + golang.org/x/oauth2 v0.21.0 golang.org/x/sync v0.11.0 golang.org/x/sys v0.30.0 golang.org/x/term v0.29.0 @@ -151,14 +149,9 @@ require ( github.com/go-errors/errors v1.4.2 // indirect github.com/go-logr/logr v1.2.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect - github.com/go-openapi/analysis v0.21.4 // indirect - github.com/go-openapi/errors v0.20.3 // indirect github.com/go-openapi/jsonpointer v0.19.6 // indirect github.com/go-openapi/jsonreference v0.20.2 // indirect - github.com/go-openapi/loads v0.21.2 // indirect - github.com/go-openapi/spec v0.20.8 // indirect github.com/go-openapi/swag v0.22.3 // indirect - github.com/go-openapi/validate v0.22.1 // indirect github.com/goccy/go-json v0.10.2 // indirect github.com/goccy/go-yaml v1.9.8 // indirect github.com/golang-jwt/jwt/v4 v4.5.2 // indirect @@ -244,7 +237,6 @@ require ( github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/src-d/gcfg v1.4.0 // indirect github.com/subosito/gotenv v1.2.0 // indirect - github.com/tidwall/pretty v1.2.0 // indirect github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 // indirect github.com/xanzy/ssh-agent v0.2.1 // indirect github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f // indirect @@ -256,7 +248,6 @@ require ( go.etcd.io/etcd/client/v2 v2.305.8 // indirect go.etcd.io/etcd/pkg/v3 v3.5.8 // indirect go.etcd.io/etcd/raft/v3 v3.5.8 // indirect - go.mongodb.org/mongo-driver v1.11.3 // indirect go.opencensus.io v0.24.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.35.0 // indirect go.opentelemetry.io/otel v1.14.0 // indirect @@ -276,7 +267,7 @@ require ( golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect gomodules.xyz/jsonpatch/v2 v2.2.0 // indirect google.golang.org/appengine v1.6.7 // indirect - google.golang.org/protobuf v1.29.1 // indirect + google.golang.org/protobuf v1.31.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/launchdarkly/go-jsonstream.v1 v1.0.1 // indirect diff --git a/go.sum b/go.sum index 734a4e36ba3..318f5fd8360 100644 --- a/go.sum +++ b/go.sum @@ -52,9 +52,6 @@ github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8 github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/PuerkitoBio/goquery v1.6.0 h1:j7taAbelrdcsOlGeMenZxc2AWXD5fieT1/znArdnx94= github.com/PuerkitoBio/goquery v1.6.0/go.mod h1:GsLWisAFVj4WgDibEWF4pvYnkVQBpKBKeU+7zCJoLcc= -github.com/PuerkitoBio/purell v1.1.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= -github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= -github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= github.com/Shopify/goreferrer v0.0.0-20181106222321-ec9c9a553398/go.mod h1:a1uqRtAwp2Xwc6WNPJEufxJ7fx3npB4UV/JOLmbu5I0= github.com/VividCortex/ewma v1.1.1 h1:MnEK4VOv6n0RSY4vtRe3h11qjxL3+t0B8yOL8iMXdcM= github.com/VividCortex/ewma v1.1.1/go.mod h1:2Tkkvm3sRDVXaiyucHiACn4cqf7DpdyLvmxzcbUokwA= @@ -98,13 +95,9 @@ github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmV github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= -github.com/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= -github.com/asaskevich/govalidator v0.0.0-20200428143746-21a406dcc535/go.mod h1:oGkLhpf+kjZl6xBf758TQhh5XrAeiJv/7FRz/2spLIg= -github.com/asaskevich/govalidator v0.0.0-20200907205600-7a23bdc65eef/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= github.com/aws/aws-sdk-go v1.29.11/go.mod h1:1KvfttTE3SPKMpo8g2c6jL3ZKfXtFvKscTgahTma5Xg= -github.com/aws/aws-sdk-go v1.34.28/go.mod h1:H7NKnBqNVzoTJpGfLrQkkD+ytBA93eiDYi/+8rV9s48= github.com/aymerick/raymond v2.0.3-0.20180322193309-b565731e1464+incompatible/go.mod h1:osfaiScAUVup+UC9Nfq76eWqDhXlp+4UYaA8uhTBO6g= github.com/bazelbuild/rules_go v0.35.0 h1:ViPR65vOrg74JKntAUFY6qZkheBKGB6to7wFd8gCRU4= github.com/bazelbuild/rules_go v0.35.0/go.mod h1:ahciH68Viyxtm/gvCQplaAiu8buhf/b+gWswcPjFixI= @@ -214,7 +207,6 @@ github.com/docker/distribution v2.8.1+incompatible h1:Q50tZOPR6T/hjNsyc9g8/syEs6 github.com/docker/distribution v2.8.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= -github.com/docker/go-units v0.3.3/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= @@ -276,8 +268,6 @@ github.com/gin-contrib/sse v0.0.0-20190301062529-5545eab6dad3/go.mod h1:VJ0WA2NB github.com/gin-gonic/gin v1.4.0/go.mod h1:OW2EZn3DO8Ln9oIKOvM++LBO+5UPHJJDH72/q/3rZdM= github.com/gliderlabs/ssh v0.2.2 h1:6zsha5zo/TWhRhwqCD3+EarCAgZ2yN28ipRnGPnwkI0= github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= -github.com/globalsign/mgo v0.0.0-20180905125535-1ca0a4f7cbcb/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= -github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= github.com/go-check/check v0.0.0-20180628173108-788fd7840127/go.mod h1:9ES+weclKsC9YodN5RgxqK/VD9HM9JsCSh7rNhMZE98= github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= @@ -298,58 +288,12 @@ github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre github.com/go-logr/zapr v1.2.3 h1:a9vnzlIBPQBBkeaR9IuMUfmVOrQlkoC4YfPoFkX3T7A= github.com/go-logr/zapr v1.2.3/go.mod h1:eIauM6P8qSvTw5o2ez6UEAfGjQKrxQTl5EoK+Qa2oG4= github.com/go-martini/martini v0.0.0-20170121215854-22fa46961aab/go.mod h1:/P9AEU963A2AYjv4d1V5eVL1CQbEJq6aCNHDDjibzu8= -github.com/go-openapi/analysis v0.19.5 h1:8b2ZgKfKIUTVQpTb77MoRDIMEIwvDVw40o3aOXdfYzI= -github.com/go-openapi/analysis v0.19.5/go.mod h1:hkEAkxagaIvIP7VTn8ygJNkd4kAYON2rCu0v0ObL0AU= -github.com/go-openapi/errors v0.17.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= -github.com/go-openapi/errors v0.18.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= -github.com/go-openapi/errors v0.19.2/go.mod h1:qX0BLWsyaKfvhluLejVpVNwNRdXZhEbTA4kxxpKBC94= -github.com/go-openapi/errors v0.19.6/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= -github.com/go-openapi/errors v0.19.8/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= -github.com/go-openapi/errors v0.19.9/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= -github.com/go-openapi/errors v0.20.3 h1:rz6kiC84sqNQoqrtulzaL/VERgkoCyB6WdEkc2ujzUc= -github.com/go-openapi/errors v0.20.3/go.mod h1:Z3FlZ4I8jEGxjUK+bugx3on2mIAk4txuAOhlsB1FSgk= -github.com/go-openapi/jsonpointer v0.17.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= -github.com/go-openapi/jsonpointer v0.18.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= -github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg= -github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= -github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE= github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs= -github.com/go-openapi/jsonreference v0.17.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= -github.com/go-openapi/jsonreference v0.18.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= -github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc= github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE= github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= -github.com/go-openapi/loads v0.19.0 h1:wCOBNscACI8L93tt5tvB2zOMkJ098XCw3fP0BY2ybDA= -github.com/go-openapi/loads v0.19.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= -github.com/go-openapi/runtime v0.0.0-20180920151709-4f900dc2ade9/go.mod h1:6v9a6LTXWQCdL8k1AO3cvqx5OtZY/Y9wKTgaoP6YRfA= -github.com/go-openapi/runtime v0.19.0/go.mod h1:OwNfisksmmaZse4+gpV3Ne9AyMOlP1lt4sK4FXt0O64= -github.com/go-openapi/runtime v0.19.4/go.mod h1:X277bwSUBxVlCYR3r7xgZZGKVvBd/29gLDlFGtJ8NL4= -github.com/go-openapi/runtime v0.19.15/go.mod h1:dhGWCTKRXlAfGnQG0ONViOZpjfg0m2gUt9nTQPQZuoo= -github.com/go-openapi/runtime v0.19.24/go.mod h1:Lm9YGCeecBnUUkFTxPC4s1+lwrkJ0pthx8YvyjCfkgk= -github.com/go-openapi/runtime v0.19.26 h1:K/6PoVNj5WJXUnMk+VEbELeXjtBkCS1UxTDa04tdXE0= -github.com/go-openapi/runtime v0.19.26/go.mod h1:BvrQtn6iVb2QmiVXRsFAm6ZCAZBpbVKFfN6QWCp582M= -github.com/go-openapi/spec v0.19.3 h1:0XRyw8kguri6Yw4SxhsQA/atC88yqrk0+G4YhI2wabc= -github.com/go-openapi/spec v0.19.3/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo= -github.com/go-openapi/strfmt v0.20.0 h1:l2omNtmNbMc39IGptl9BuXBEKcZfS8zjrTsPKTiJiDM= -github.com/go-openapi/strfmt v0.20.0/go.mod h1:UukAYgTaQfqJuAFlNxxMWNvMYiwiXtLsF2VwmoFtbtc= -github.com/go-openapi/swag v0.17.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= -github.com/go-openapi/swag v0.18.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= -github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= -github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= -github.com/go-openapi/swag v0.19.9/go.mod h1:ao+8BpOPyKdpQz3AOJfbeEVpLmWAvlT1IfTe5McPyhY= -github.com/go-openapi/swag v0.19.12/go.mod h1:eFdyEBkTdoAf/9RXBvj4cr1nH7GD8Kzo5HTt47gr72M= -github.com/go-openapi/swag v0.19.13/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= -github.com/go-openapi/swag v0.21.1/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g= github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= -github.com/go-openapi/validate v0.18.0/go.mod h1:Uh4HdOzKt19xGIGm1qHf/ofbX1YQ4Y+MYsct2VUrAJ4= -github.com/go-openapi/validate v0.19.2/go.mod h1:1tRCw7m3jtI8eNWEEliiAqUIcBztB2KDnRCRMUi7GTA= -github.com/go-openapi/validate v0.19.3/go.mod h1:90Vh6jjkTn+OT1Eefm0ZixWNFjhtOH7vS9k0lo6zwJo= -github.com/go-openapi/validate v0.19.10/go.mod h1:RKEZTUWDkxKQxN2jDT7ZnZi2bhZlbNMAuKvKB+IaGx8= -github.com/go-openapi/validate v0.20.1/go.mod h1:b60iJT+xNNLfaQJUqLI7946tYiFEOuE9E4k54HpKcJ0= -github.com/go-openapi/validate v0.22.1 h1:G+c2ub6q47kfX1sOBLwIQwzBVt8qmOAARyo/9Fqs9NU= -github.com/go-openapi/validate v0.22.1/go.mod h1:rjnrwK57VJ7A8xqfpAOEKRH8yQSGUriMu5/zuPSQ1hg= github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= @@ -358,30 +302,6 @@ github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG github.com/go-sql-driver/mysql v1.5.0 h1:ozyZYNQW3x3HtqT1jira07DN2PArx2v7/mN66gGcHOs= github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/gobuffalo/attrs v0.0.0-20190224210810-a9411de4debd/go.mod h1:4duuawTqi2wkkpB4ePgWMaai6/Kc6WEz83bhFwpHzj0= -github.com/gobuffalo/depgen v0.0.0-20190329151759-d478694a28d3/go.mod h1:3STtPUQYuzV0gBVOY3vy6CfMm/ljR4pABfrTeHNLHUY= -github.com/gobuffalo/depgen v0.1.0/go.mod h1:+ifsuy7fhi15RWncXQQKjWS9JPkdah5sZvtHc2RXGlg= -github.com/gobuffalo/envy v1.6.15/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI= -github.com/gobuffalo/envy v1.7.0/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI= -github.com/gobuffalo/flect v0.1.0/go.mod h1:d2ehjJqGOH/Kjqcoz+F7jHTBbmDb38yXA598Hb50EGs= -github.com/gobuffalo/flect v0.1.1/go.mod h1:8JCgGVbRjJhVgD6399mQr4fx5rRfGKVzFjbj6RE/9UI= -github.com/gobuffalo/flect v0.1.3/go.mod h1:8JCgGVbRjJhVgD6399mQr4fx5rRfGKVzFjbj6RE/9UI= -github.com/gobuffalo/genny v0.0.0-20190329151137-27723ad26ef9/go.mod h1:rWs4Z12d1Zbf19rlsn0nurr75KqhYp52EAGGxTbBhNk= -github.com/gobuffalo/genny v0.0.0-20190403191548-3ca520ef0d9e/go.mod h1:80lIj3kVJWwOrXWWMRzzdhW3DsrdjILVil/SFKBzF28= -github.com/gobuffalo/genny v0.1.0/go.mod h1:XidbUqzak3lHdS//TPu2OgiFB+51Ur5f7CSnXZ/JDvo= -github.com/gobuffalo/genny v0.1.1/go.mod h1:5TExbEyY48pfunL4QSXxlDOmdsD44RRq4mVZ0Ex28Xk= -github.com/gobuffalo/gitgen v0.0.0-20190315122116-cc086187d211/go.mod h1:vEHJk/E9DmhejeLeNt7UVvlSGv3ziL+djtTr3yyzcOw= -github.com/gobuffalo/gogen v0.0.0-20190315121717-8f38393713f5/go.mod h1:V9QVDIxsgKNZs6L2IYiGR8datgMhB577vzTDqypH360= -github.com/gobuffalo/gogen v0.1.0/go.mod h1:8NTelM5qd8RZ15VjQTFkAW6qOMx5wBbW4dSCS3BY8gg= -github.com/gobuffalo/gogen v0.1.1/go.mod h1:y8iBtmHmGc4qa3urIyo1shvOD8JftTtfcKi+71xfDNE= -github.com/gobuffalo/logger v0.0.0-20190315122211-86e12af44bc2/go.mod h1:QdxcLw541hSGtBnhUc4gaNIXRjiDppFGaDqzbrBd3v8= -github.com/gobuffalo/mapi v1.0.1/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc= -github.com/gobuffalo/mapi v1.0.2/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc= -github.com/gobuffalo/packd v0.0.0-20190315124812-a385830c7fc0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWeG2RIxq4= -github.com/gobuffalo/packd v0.1.0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWeG2RIxq4= -github.com/gobuffalo/packr/v2 v2.0.9/go.mod h1:emmyGweYTm6Kdper+iywB6YK5YzuKchGtJQZ0Odn4pQ= -github.com/gobuffalo/packr/v2 v2.2.0/go.mod h1:CaAwI0GPIAv+5wKLtv8Afwl+Cm78K/I/VCm/3ptBN+0= -github.com/gobuffalo/syncx v0.0.0-20190224160051-33c29581e754/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw= github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= @@ -418,7 +338,6 @@ github.com/golang/mock v1.5.0 h1:jlYHihg//f7RRwuPfptm04yp4s7O6Kw8EZiVYIGcH0g= github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.2-0.20190904063534-ff6b7dc882cf/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= @@ -536,11 +455,8 @@ github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJS github.com/jinzhu/copier v0.3.5 h1:GlvfUwHk62RokgqVNvYsku0TATCF7bAHVwEXoBh3iJg= github.com/jinzhu/copier v0.3.5/go.mod h1:DfbEm0FYsaqBcKcFuvmOZb218JkPGtvSHsKg8S8hyyg= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= -github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= -github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= github.com/jmoiron/sqlx v1.2.0 h1:41Ip0zITnmWNR/vHV+S4m+VoUivnWY5E4OJfLZjCJMA= github.com/jmoiron/sqlx v1.2.0/go.mod h1:1FEQNm3xlJgrMD+FBdI9+xvCksHtbpVBBw5dYhBSsks= -github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= github.com/jonboulle/clockwork v0.2.2 h1:UOGuzwb1PwsrDAObMuhUnj0p5ULPj8V/xJ7Kx9qUBdQ= github.com/jonboulle/clockwork v0.2.2/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8= @@ -563,8 +479,6 @@ github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 h1:iQTw/8FWTuc7uia github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8= github.com/karlseguin/expect v1.0.2-0.20190806010014-778a5f0c6003 h1:vJ0Snvo+SLMY72r5J4sEfkuE7AFbixEP2qRbEcum/wA= github.com/karlseguin/expect v1.0.2-0.20190806010014-778a5f0c6003/go.mod h1:zNBxMY8P21owkeogJELCLeHIt+voOSduHYTFUbwRAV8= -github.com/karrick/godirwalk v1.8.0/go.mod h1:H5KPZjojv4lE+QYImBI8xVtrBRgYrIVsaRPx4tDPEn4= -github.com/karrick/godirwalk v1.10.3/go.mod h1:RoGL9dQei4vP9ilrpETWE8CLOZ1kiN0LhBygSwrAsHA= github.com/kataras/golog v0.0.9/go.mod h1:12HJgwBIZFNGL0EJnMRhmvGA0PQGx8VFwrZtM4CqbAk= github.com/kataras/iris/v12 v12.0.1/go.mod h1:udK4vLQKkdDqMGJJVd/msuMtN6hpYJhg/lSzuxjhO+U= github.com/kataras/neffos v0.0.10/go.mod h1:ZYmJC07hQPW67eKuzlfY7SO3bC0mw83A3j6im82hfqw= @@ -577,13 +491,10 @@ github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.8.2/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/compress v1.9.0/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= -github.com/klauspost/compress v1.9.5/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= -github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= github.com/klauspost/compress v1.17.2 h1:RlWWUY/Dr4fL8qk9YG7DTZ7PDgME2V4csBXA8L/ixi4= github.com/klauspost/compress v1.17.2/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= @@ -591,7 +502,6 @@ github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfn github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= @@ -637,18 +547,12 @@ github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czP github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= -github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.7.1/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/manifoldco/promptui v0.9.0 h1:3V4HzJk1TtXW1MTZMP7mdlwbBpIinw3HztaIlYthEiA= github.com/manifoldco/promptui v0.9.0/go.mod h1:ka04sppxSGFAtxX0qhlYQjISsg9mR4GWtQEhdbn6Pgg= -github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE= -github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= @@ -695,8 +599,6 @@ github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS4 github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.3.2/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/mapstructure v1.3.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= @@ -720,7 +622,6 @@ github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9G github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 h1:n6/2gBQ3RWajuToeY6ZtZTIKv2v7ThUy5KKusIT0yc0= github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00/go.mod h1:Pm3mSP3c5uWn86xMLZ5Sa7JB9GsEZySvHYXCTK4E9q4= -github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= github.com/moul/http2curl v1.0.0/go.mod h1:8UbvGypXm98wA/IqH45anm5Y2Z6ep6O31QGOAZ3H0fQ= github.com/mrunalp/fileutils v0.5.0/go.mod h1:M1WthSahJixYnrXQl/DFQuteStB1weuxD2QJNHXfbSQ= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= @@ -738,7 +639,6 @@ github.com/nats-io/nkeys v0.4.6 h1:IzVe95ru2CT6ta874rt9saQRkWfe2nFj1NtvYSLqMzY= github.com/nats-io/nkeys v0.4.6/go.mod h1:4DxZNzenSVd1cYQoAa8948QY3QDjrHfcfVADymtkpts= github.com/nats-io/nuid v1.0.1 h1:5iA8DT8V7q8WK2EScv2padNa/rTESc1KdnPw4TC2paw= github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= -github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= @@ -771,17 +671,15 @@ github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+ github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= github.com/ory/dockertest/v3 v3.8.1 h1:vU/8d1We4qIad2YM0kOwRVtnyue7ExvacPiw1yDm17g= github.com/ory/dockertest/v3 v3.8.1/go.mod h1:wSRQ3wmkz+uSARYMk7kVJFDBGm8x5gSxIhI7NDc+BAQ= -github.com/ory/hydra-client-go v1.9.2 h1:sbp+8zwEJvhqSxcY8HiOkXeY2FspsfSOJ5ajJ07xPQo= -github.com/ory/hydra-client-go v1.9.2/go.mod h1:TTg4Gt0SDC8+XoGtj5qzdtqxapfFW+Vmm41PFuC6n/E= -github.com/ory/kratos-client-go v0.10.1 h1:kSRk+0leCJ1nPMS+FPho8b9WMzrKNpgszvta0Xo32QU= -github.com/ory/kratos-client-go v0.10.1/go.mod h1:dOQIsar76K07wMPJD/6aMhrWyY+sFGEagLDLso1CpsA= +github.com/ory/hydra-client-go/v2 v2.2.0 h1:g8hw0YQD5Us1aAgZj7OyBmBGSDwlnY9/2Pb/pQQq8YE= +github.com/ory/hydra-client-go/v2 v2.2.0/go.mod h1:h0DSI2kQA3S2fN7HyD8DNWcvbgDmYRSxfhwu/mSBhH8= +github.com/ory/kratos-client-go v1.3.8 h1:S4D5dAURq5C6LbOUU+DgE4ZXxp37IlJG2GngemdF9h0= +github.com/ory/kratos-client-go v1.3.8/go.mod h1:Dc+ANapsPxu+CfdC0yk8TxmvceCmrvNozW+ZGS/xq5o= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc= github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ= github.com/pelletier/go-buffruneio v0.2.0/go.mod h1:JkE26KsDizTr40EUHkXVtNPvgGtbSNq5BcowyYOWdKo= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/pelletier/go-toml v1.4.0/go.mod h1:PN7xzY2wHTK0K9p34ErDQMlFxa51Fk0OUruD3k1mMwo= -github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE= github.com/pelletier/go-toml v1.9.3 h1:zeC5b1GviRUyKYd6OJPvBU/mcVDVoL1OhT17FCt5dSQ= github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/peterbourgon/diskv v2.0.1+incompatible h1:UBdAOUP5p4RWqPBg048CAvpKN+vxiaj6gdUUzhl4XmI= @@ -833,8 +731,6 @@ github.com/rivo/uniseg v0.1.0 h1:+2KBaVoUmb9XzDsrx/Ct0W/EYOSFf/nWTauy++DprtY= github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= -github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= @@ -861,8 +757,6 @@ github.com/shopspring/decimal v1.2.0 h1:abSATXmQEYyShuxI4/vyW3tV1MrKAJzCZ/0zLUXY github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/sirupsen/logrus v1.4.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= @@ -885,7 +779,6 @@ github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.3.1 h1:nFm6S0SMdyzrzcmThSipiEubIDy8WEXKNZ0UOgiRpng= github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= github.com/spf13/cobra v1.6.1 h1:o94oiPyS4KD1mPy2fmcYYHHfCxLqYjJOhGsCHFZtEzA= @@ -907,8 +800,9 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= 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.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= @@ -919,14 +813,12 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -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.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= -github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= -github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= -github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 h1:uruHq4dN7GR16kFc5fp3d1RIYzJW5onx8Ybykw2YQFA= github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= @@ -949,11 +841,6 @@ github.com/wsxiaoys/terminal v0.0.0-20160513160801-0940f3fc43a0 h1:3UeQBvD0TFrlV github.com/wsxiaoys/terminal v0.0.0-20160513160801-0940f3fc43a0/go.mod h1:IXCdmsXIht47RaVFLEdVnh1t+pgYtTAhQGj73kz+2DM= github.com/xanzy/ssh-agent v0.2.1 h1:TCbipTQL2JiiCprBWx9frJ2eJlCYT00NmctrHxVAr70= github.com/xanzy/ssh-agent v0.2.1/go.mod h1:mLlQY/MoOhWBj+gOGMQkOeiEvkx+8pJSI+0Bx9h2kr4= -github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= -github.com/xdg-go/scram v1.1.1/go.mod h1:RaEWvsqvNKKvBPvcKeFjrG2cJqOkHTiyTpzz23ni57g= -github.com/xdg-go/stringprep v1.0.3/go.mod h1:W3f5j4i+9rC0kuIEJL0ky1VpHXQU3ocBgklLGvcBnW8= -github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c/go.mod h1:lB8K/P019DLNhemzwFU4jHLhdvlE6uDZjXFejJXr49I= -github.com/xdg/stringprep v0.0.0-20180714160509-73f8eece6fdc/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f h1:J9EGpcZtP0E/raorCMxlFGSTBrsSlaDGf3jU/qvAE2c= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0= @@ -966,7 +853,6 @@ github.com/xlab/treeprint v1.1.0 h1:G/1DjNkPpfZCFt9CSh6b5/nY4VimlbHF3Rh4obvtzDk= github.com/xlab/treeprint v1.1.0/go.mod h1:gj5Gd3gPdKtR1ikdDK6fnFLdmIS0X30kTTuNd/WEJu0= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0/go.mod h1:/LWChgwKmvncFJFHJ7Gvn9wZArjbV5/FppcK2fKk/tI= -github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA= github.com/yudai/gojsondiff v1.0.0/go.mod h1:AY32+k2cwILAkW1fbgxQ5mUmMiZFgLIV+FBNExI05xg= github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82/go.mod h1:lgjkn3NuSvDfVJdfcVVdX+jpBxNmX4rDAzaS45IcYoM= github.com/yudai/pp v2.0.1+incompatible/go.mod h1:PuxR/8QJ7cyCkFp/aUDS+JY727OFEZkTdatxwunjIkc= @@ -995,11 +881,6 @@ go.etcd.io/etcd/raft/v3 v3.5.8 h1:wM4IAfiY1+vrCAkUicIOzkyjpV9MawnAul2KvxeMgy4= go.etcd.io/etcd/raft/v3 v3.5.8/go.mod h1:W6P5WxtOMfYNdLSEJX3vc8Pg6LOt+ewI9UCFKcnIexA= go.etcd.io/etcd/server/v3 v3.5.8 h1:eK9fU6Pd6IJD1k0u4zAq1NZsSsEOOimlP3kIkpcQrho= go.etcd.io/etcd/server/v3 v3.5.8/go.mod h1:1y2ahPOrlE4pzVV5+rBCDur7QQcEP0MNUPO2dyzwjso= -go.mongodb.org/mongo-driver v1.1.1/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= -go.mongodb.org/mongo-driver v1.3.4/go.mod h1:MSWZXKOynuguX+JSvwP8i+58jYCXxbia8HS3gZBapIE= -go.mongodb.org/mongo-driver v1.4.3/go.mod h1:WcMNYLx/IlOxLe6JRJiv2uXuCz6zBLndR4SoGjYphSc= -go.mongodb.org/mongo-driver v1.11.3 h1:Ql6K6qYHEzB6xvu4+AU0BoRoqf9vFPcc4o7MUIdPW8Y= -go.mongodb.org/mongo-driver v1.11.3/go.mod h1:PTSz5yu21bkT/wXpkS7WR5f0ddqw5quethTUn9WM+2g= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= @@ -1043,13 +924,8 @@ golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnf golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190219172222-a4c6cb3142f2/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190320223903-b7391e95e576/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190422162423-af44ce270edf/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190530122614-20be4c3c3ed5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190617133340-57b3e21c3d56/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= @@ -1057,7 +933,6 @@ golang.org/x/crypto v0.0.0-20200414173820-0848c9571904/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20200604202706-70a84ac30bf9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= golang.org/x/crypto v0.35.0 h1:b15kiHdrGCHrP6LvwaQ3c03kgNhhiMgvlhxHQhmg2Xs= golang.org/x/crypto v0.35.0/go.mod h1:dy7dXNW32cAb/6/PRuTNsix8T+vJAqvuIy5Bli/x0YQ= @@ -1092,14 +967,12 @@ golang.org/x/mod v0.20.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181005035420-146acd28ed58/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190320064053-1272bf9dcd53/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190327091125-710a502c58a2/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -1120,7 +993,6 @@ golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/ golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200602114024-627f9648deb9/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= @@ -1130,7 +1002,6 @@ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= @@ -1141,15 +1012,13 @@ golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4Iltr golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210323180902-22b0adad7558/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.6.0 h1:Lh8GPgSKBfWSwFvtuWOfeI3aAAnbXTSutYxJiOJFgIw= -golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw= +golang.org/x/oauth2 v0.21.0 h1:tsimM75w1tF/uws5rbeHzIWxEqElMehnc+iW793zsZs= +golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190412183630-56d357773e84/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1173,16 +1042,11 @@ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190221075227-b4e8571b14e0/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190321052220-f7bb7a8bee54/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190419153524-e8e3143a4f4a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190531175056-4c3a928424d2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606203320-7fc4e5ec1444/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190626150813-e07cf5db2756/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1267,14 +1131,8 @@ golang.org/x/tools v0.0.0-20181221001348-537d06c36207/go.mod h1:n7NCudcB/nEzxVGm golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190327201419-c70d86f8b7cf/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190329151228-23e29df326fe/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190416151739-9c9e1878f421/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190420181800-aa740d480789/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190531172133-b3315ee88b7d/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190617190820-da514acc4774/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190729092621-ff9f1409240a/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= @@ -1331,13 +1189,12 @@ google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2 google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.29.1 h1:7QBf+IK2gx70Ap/hDsOmam3GE0v9HicjfEdAxE62UoM= -google.golang.org/protobuf v1.29.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= +google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= @@ -1381,7 +1238,6 @@ gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRN gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20200605160147-a5ece683394c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/go_deps.bzl b/go_deps.bzl index 1a3ebade451..ae19b604c22 100644 --- a/go_deps.bzl +++ b/go_deps.bzl @@ -1081,13 +1081,6 @@ def pl_go_dependencies(): sum = "h1:6zsha5zo/TWhRhwqCD3+EarCAgZ2yN28ipRnGPnwkI0=", version = "v0.2.2", ) - go_repository( - name = "com_github_globalsign_mgo", - build_directives = ["gazelle:map_kind go_binary pl_go_binary @px//bazel:pl_build_system.bzl", "gazelle:map_kind go_test pl_go_test @px//bazel:pl_build_system.bzl"], - importpath = "github.com/globalsign/mgo", - sum = "h1:DujepqpGd1hyOd7aW59XpK7Qymp8iy83xq74fLr21is=", - version = "v0.0.0-20181015135952-eeefdecb41b8", - ) # keep go_repository( @@ -1225,13 +1218,6 @@ def pl_go_dependencies(): sum = "h1:wCOBNscACI8L93tt5tvB2zOMkJ098XCw3fP0BY2ybDA=", version = "v0.19.0", ) - go_repository( - name = "com_github_go_openapi_runtime", - build_directives = ["gazelle:map_kind go_binary pl_go_binary @px//bazel:pl_build_system.bzl", "gazelle:map_kind go_test pl_go_test @px//bazel:pl_build_system.bzl"], - importpath = "github.com/go-openapi/runtime", - sum = "h1:K/6PoVNj5WJXUnMk+VEbELeXjtBkCS1UxTDa04tdXE0=", - version = "v0.19.26", - ) go_repository( name = "com_github_go_openapi_spec", build_directives = ["gazelle:map_kind go_binary pl_go_binary @px//bazel:pl_build_system.bzl", "gazelle:map_kind go_test pl_go_test @px//bazel:pl_build_system.bzl"], @@ -1325,90 +1311,6 @@ def pl_go_dependencies(): sum = "h1:7M2kwOsc//9VeeFiPtf+uSJlVpU66x9Ba5+8XK7/TDg=", version = "v1.0.3", ) - go_repository( - name = "com_github_gobuffalo_attrs", - build_directives = ["gazelle:map_kind go_binary pl_go_binary @px//bazel:pl_build_system.bzl", "gazelle:map_kind go_test pl_go_test @px//bazel:pl_build_system.bzl"], - importpath = "github.com/gobuffalo/attrs", - sum = "h1:hSkbZ9XSyjyBirMeqSqUrK+9HboWrweVlzRNqoBi2d4=", - version = "v0.0.0-20190224210810-a9411de4debd", - ) - go_repository( - name = "com_github_gobuffalo_depgen", - build_directives = ["gazelle:map_kind go_binary pl_go_binary @px//bazel:pl_build_system.bzl", "gazelle:map_kind go_test pl_go_test @px//bazel:pl_build_system.bzl"], - importpath = "github.com/gobuffalo/depgen", - sum = "h1:31atYa/UW9V5q8vMJ+W6wd64OaaTHUrCUXER358zLM4=", - version = "v0.1.0", - ) - go_repository( - name = "com_github_gobuffalo_envy", - build_directives = ["gazelle:map_kind go_binary pl_go_binary @px//bazel:pl_build_system.bzl", "gazelle:map_kind go_test pl_go_test @px//bazel:pl_build_system.bzl"], - importpath = "github.com/gobuffalo/envy", - sum = "h1:GlXgaiBkmrYMHco6t4j7SacKO4XUjvh5pwXh0f4uxXU=", - version = "v1.7.0", - ) - go_repository( - name = "com_github_gobuffalo_flect", - build_directives = ["gazelle:map_kind go_binary pl_go_binary @px//bazel:pl_build_system.bzl", "gazelle:map_kind go_test pl_go_test @px//bazel:pl_build_system.bzl"], - importpath = "github.com/gobuffalo/flect", - sum = "h1:3GQ53z7E3o00C/yy7Ko8VXqQXoJGLkrTQCLTF1EjoXU=", - version = "v0.1.3", - ) - go_repository( - name = "com_github_gobuffalo_genny", - build_directives = ["gazelle:map_kind go_binary pl_go_binary @px//bazel:pl_build_system.bzl", "gazelle:map_kind go_test pl_go_test @px//bazel:pl_build_system.bzl"], - importpath = "github.com/gobuffalo/genny", - sum = "h1:iQ0D6SpNXIxu52WESsD+KoQ7af2e3nCfnSBoSF/hKe0=", - version = "v0.1.1", - ) - go_repository( - name = "com_github_gobuffalo_gitgen", - build_directives = ["gazelle:map_kind go_binary pl_go_binary @px//bazel:pl_build_system.bzl", "gazelle:map_kind go_test pl_go_test @px//bazel:pl_build_system.bzl"], - importpath = "github.com/gobuffalo/gitgen", - sum = "h1:mSVZ4vj4khv+oThUfS+SQU3UuFIZ5Zo6UNcvK8E8Mz8=", - version = "v0.0.0-20190315122116-cc086187d211", - ) - go_repository( - name = "com_github_gobuffalo_gogen", - build_directives = ["gazelle:map_kind go_binary pl_go_binary @px//bazel:pl_build_system.bzl", "gazelle:map_kind go_test pl_go_test @px//bazel:pl_build_system.bzl"], - importpath = "github.com/gobuffalo/gogen", - sum = "h1:dLg+zb+uOyd/mKeQUYIbwbNmfRsr9hd/WtYWepmayhI=", - version = "v0.1.1", - ) - go_repository( - name = "com_github_gobuffalo_logger", - build_directives = ["gazelle:map_kind go_binary pl_go_binary @px//bazel:pl_build_system.bzl", "gazelle:map_kind go_test pl_go_test @px//bazel:pl_build_system.bzl"], - importpath = "github.com/gobuffalo/logger", - sum = "h1:8thhT+kUJMTMy3HlX4+y9Da+BNJck+p109tqqKp7WDs=", - version = "v0.0.0-20190315122211-86e12af44bc2", - ) - go_repository( - name = "com_github_gobuffalo_mapi", - build_directives = ["gazelle:map_kind go_binary pl_go_binary @px//bazel:pl_build_system.bzl", "gazelle:map_kind go_test pl_go_test @px//bazel:pl_build_system.bzl"], - importpath = "github.com/gobuffalo/mapi", - sum = "h1:fq9WcL1BYrm36SzK6+aAnZ8hcp+SrmnDyAxhNx8dvJk=", - version = "v1.0.2", - ) - go_repository( - name = "com_github_gobuffalo_packd", - build_directives = ["gazelle:map_kind go_binary pl_go_binary @px//bazel:pl_build_system.bzl", "gazelle:map_kind go_test pl_go_test @px//bazel:pl_build_system.bzl"], - importpath = "github.com/gobuffalo/packd", - sum = "h1:4sGKOD8yaYJ+dek1FDkwcxCHA40M4kfKgFHx8N2kwbU=", - version = "v0.1.0", - ) - go_repository( - name = "com_github_gobuffalo_packr_v2", - build_directives = ["gazelle:map_kind go_binary pl_go_binary @px//bazel:pl_build_system.bzl", "gazelle:map_kind go_test pl_go_test @px//bazel:pl_build_system.bzl"], - importpath = "github.com/gobuffalo/packr/v2", - sum = "h1:Ir9W9XIm9j7bhhkKE9cokvtTl1vBm62A/fene/ZCj6A=", - version = "v2.2.0", - ) - go_repository( - name = "com_github_gobuffalo_syncx", - build_directives = ["gazelle:map_kind go_binary pl_go_binary @px//bazel:pl_build_system.bzl", "gazelle:map_kind go_test pl_go_test @px//bazel:pl_build_system.bzl"], - importpath = "github.com/gobuffalo/syncx", - sum = "h1:tpom+2CJmpzAWj5/VEHync2rJGi+epHNIeRSWjzGA+4=", - version = "v0.0.0-20190224160051-33c29581e754", - ) go_repository( name = "com_github_gobwas_httphead", build_directives = ["gazelle:map_kind go_binary pl_go_binary @px//bazel:pl_build_system.bzl", "gazelle:map_kind go_test pl_go_test @px//bazel:pl_build_system.bzl"], @@ -2075,13 +1977,6 @@ def pl_go_dependencies(): sum = "h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg=", version = "v0.4.0", ) - go_repository( - name = "com_github_jmespath_go_jmespath_internal_testify", - build_directives = ["gazelle:map_kind go_binary pl_go_binary @px//bazel:pl_build_system.bzl", "gazelle:map_kind go_test pl_go_test @px//bazel:pl_build_system.bzl"], - importpath = "github.com/jmespath/go-jmespath/internal/testify", - sum = "h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8=", - version = "v1.5.1", - ) go_repository( name = "com_github_jmoiron_sqlx", build_directives = ["gazelle:map_kind go_binary pl_go_binary @px//bazel:pl_build_system.bzl", "gazelle:map_kind go_test pl_go_test @px//bazel:pl_build_system.bzl"], @@ -2089,13 +1984,6 @@ def pl_go_dependencies(): sum = "h1:41Ip0zITnmWNR/vHV+S4m+VoUivnWY5E4OJfLZjCJMA=", version = "v1.2.0", ) - go_repository( - name = "com_github_joho_godotenv", - build_directives = ["gazelle:map_kind go_binary pl_go_binary @px//bazel:pl_build_system.bzl", "gazelle:map_kind go_test pl_go_test @px//bazel:pl_build_system.bzl"], - importpath = "github.com/joho/godotenv", - sum = "h1:Zjp+RcGpHhGlrMbJzXTrZZPrWj+1vfm90La1wgB6Bhc=", - version = "v1.3.0", - ) go_repository( name = "com_github_joker_hpp", build_directives = ["gazelle:map_kind go_binary pl_go_binary @px//bazel:pl_build_system.bzl", "gazelle:map_kind go_test pl_go_test @px//bazel:pl_build_system.bzl"], @@ -2201,13 +2089,6 @@ def pl_go_dependencies(): sum = "h1:vJ0Snvo+SLMY72r5J4sEfkuE7AFbixEP2qRbEcum/wA=", version = "v1.0.2-0.20190806010014-778a5f0c6003", ) - go_repository( - name = "com_github_karrick_godirwalk", - build_directives = ["gazelle:map_kind go_binary pl_go_binary @px//bazel:pl_build_system.bzl", "gazelle:map_kind go_test pl_go_test @px//bazel:pl_build_system.bzl"], - importpath = "github.com/karrick/godirwalk", - sum = "h1:lOpSw2vJP0y5eLBW906QwKsUK/fe/QDyoqM5rnnuPDY=", - version = "v1.10.3", - ) go_repository( name = "com_github_kataras_blocks", build_directives = ["gazelle:map_kind go_binary pl_go_binary @px//bazel:pl_build_system.bzl", "gazelle:map_kind go_test pl_go_test @px//bazel:pl_build_system.bzl"], @@ -2303,8 +2184,8 @@ def pl_go_dependencies(): name = "com_github_konsorten_go_windows_terminal_sequences", build_directives = ["gazelle:map_kind go_binary pl_go_binary @px//bazel:pl_build_system.bzl", "gazelle:map_kind go_test pl_go_test @px//bazel:pl_build_system.bzl"], importpath = "github.com/konsorten/go-windows-terminal-sequences", - sum = "h1:DB17ag19krx9CFsz4o3enTrPXyIXCl+2iCXH/aMAp9s=", - version = "v1.0.2", + sum = "h1:mweAR1A6xJ3oS2pRaGiHgQ4OO8tzTaLawm8vnODuwDk=", + version = "v1.0.1", ) go_repository( name = "com_github_kr_fs", @@ -2523,20 +2404,6 @@ def pl_go_dependencies(): sum = "h1:3V4HzJk1TtXW1MTZMP7mdlwbBpIinw3HztaIlYthEiA=", version = "v0.9.0", ) - go_repository( - name = "com_github_markbates_oncer", - build_directives = ["gazelle:map_kind go_binary pl_go_binary @px//bazel:pl_build_system.bzl", "gazelle:map_kind go_test pl_go_test @px//bazel:pl_build_system.bzl"], - importpath = "github.com/markbates/oncer", - sum = "h1:JgVTCPf0uBVcUSWpyXmGpgOc62nK5HWUBKAGc3Qqa5k=", - version = "v0.0.0-20181203154359-bf2de49a0be2", - ) - go_repository( - name = "com_github_markbates_safe", - build_directives = ["gazelle:map_kind go_binary pl_go_binary @px//bazel:pl_build_system.bzl", "gazelle:map_kind go_test pl_go_test @px//bazel:pl_build_system.bzl"], - importpath = "github.com/markbates/safe", - sum = "h1:yjZkbvRM6IzKj9tlu/zMJLS0n/V351OZWRnF3QfaUxI=", - version = "v1.0.1", - ) go_repository( name = "com_github_masterminds_goutils", build_directives = ["gazelle:map_kind go_binary pl_go_binary @px//bazel:pl_build_system.bzl", "gazelle:map_kind go_test pl_go_test @px//bazel:pl_build_system.bzl"], @@ -2754,13 +2621,6 @@ def pl_go_dependencies(): sum = "h1:n6/2gBQ3RWajuToeY6ZtZTIKv2v7ThUy5KKusIT0yc0=", version = "v0.0.0-20200626010858-205db1a8cc00", ) - go_repository( - name = "com_github_montanaflynn_stats", - build_directives = ["gazelle:map_kind go_binary pl_go_binary @px//bazel:pl_build_system.bzl", "gazelle:map_kind go_test pl_go_test @px//bazel:pl_build_system.bzl"], - importpath = "github.com/montanaflynn/stats", - sum = "h1:iruDEfMl2E6fbMZ9s0scYfZQ84/6SPL6zC8ACM2oIL0=", - version = "v0.0.0-20171201202039-1bf9dbcd8cbe", - ) go_repository( name = "com_github_morikuni_aec", build_directives = ["gazelle:map_kind go_binary pl_go_binary @px//bazel:pl_build_system.bzl", "gazelle:map_kind go_test pl_go_test @px//bazel:pl_build_system.bzl"], @@ -2975,15 +2835,22 @@ def pl_go_dependencies(): name = "com_github_ory_hydra_client_go", build_directives = ["gazelle:map_kind go_binary pl_go_binary @px//bazel:pl_build_system.bzl", "gazelle:map_kind go_test pl_go_test @px//bazel:pl_build_system.bzl"], importpath = "github.com/ory/hydra-client-go", - sum = "h1:sbp+8zwEJvhqSxcY8HiOkXeY2FspsfSOJ5ajJ07xPQo=", - version = "v1.9.2", + sum = "h1:GwJjvH/DBcfYzoST4vUpi4pIRzDGH5oODKpIVuhwVyc=", + version = "v1.11.8", + ) + go_repository( + name = "com_github_ory_hydra_client_go_v2", + build_directives = ["gazelle:map_kind go_binary pl_go_binary @px//bazel:pl_build_system.bzl", "gazelle:map_kind go_test pl_go_test @px//bazel:pl_build_system.bzl"], + importpath = "github.com/ory/hydra-client-go/v2", + sum = "h1:g8hw0YQD5Us1aAgZj7OyBmBGSDwlnY9/2Pb/pQQq8YE=", + version = "v2.2.0", ) go_repository( name = "com_github_ory_kratos_client_go", build_directives = ["gazelle:map_kind go_binary pl_go_binary @px//bazel:pl_build_system.bzl", "gazelle:map_kind go_test pl_go_test @px//bazel:pl_build_system.bzl"], importpath = "github.com/ory/kratos-client-go", - sum = "h1:kSRk+0leCJ1nPMS+FPho8b9WMzrKNpgszvta0Xo32QU=", - version = "v0.10.1", + sum = "h1:S4D5dAURq5C6LbOUU+DgE4ZXxp37IlJG2GngemdF9h0=", + version = "v1.3.8", ) go_repository( name = "com_github_ovh_go_ovh", @@ -3449,15 +3316,15 @@ def pl_go_dependencies(): name = "com_github_stretchr_objx", build_directives = ["gazelle:map_kind go_binary pl_go_binary @px//bazel:pl_build_system.bzl", "gazelle:map_kind go_test pl_go_test @px//bazel:pl_build_system.bzl"], importpath = "github.com/stretchr/objx", - sum = "h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c=", - version = "v0.5.0", + sum = "h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY=", + version = "v0.5.2", ) go_repository( name = "com_github_stretchr_testify", build_directives = ["gazelle:map_kind go_binary pl_go_binary @px//bazel:pl_build_system.bzl", "gazelle:map_kind go_test pl_go_test @px//bazel:pl_build_system.bzl"], importpath = "github.com/stretchr/testify", - sum = "h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=", - version = "v1.8.4", + sum = "h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=", + version = "v1.10.0", ) go_repository( name = "com_github_subosito_gotenv", @@ -3487,13 +3354,6 @@ def pl_go_dependencies(): sum = "h1:KCkDvNUMof10e3QExio9OPZJT8SbdKojLBumw8YZycQ=", version = "v2.6.4", ) - go_repository( - name = "com_github_tidwall_pretty", - build_directives = ["gazelle:map_kind go_binary pl_go_binary @px//bazel:pl_build_system.bzl", "gazelle:map_kind go_test pl_go_test @px//bazel:pl_build_system.bzl"], - importpath = "github.com/tidwall/pretty", - sum = "h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs=", - version = "v1.2.0", - ) go_repository( name = "com_github_tmc_grpc_websocket_proxy", build_directives = ["gazelle:map_kind go_binary pl_go_binary @px//bazel:pl_build_system.bzl", "gazelle:map_kind go_test pl_go_test @px//bazel:pl_build_system.bzl"], @@ -3634,41 +3494,6 @@ def pl_go_dependencies(): sum = "h1:TCbipTQL2JiiCprBWx9frJ2eJlCYT00NmctrHxVAr70=", version = "v0.2.1", ) - go_repository( - name = "com_github_xdg_go_pbkdf2", - build_directives = ["gazelle:map_kind go_binary pl_go_binary @px//bazel:pl_build_system.bzl", "gazelle:map_kind go_test pl_go_test @px//bazel:pl_build_system.bzl"], - importpath = "github.com/xdg-go/pbkdf2", - sum = "h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c=", - version = "v1.0.0", - ) - go_repository( - name = "com_github_xdg_go_scram", - build_directives = ["gazelle:map_kind go_binary pl_go_binary @px//bazel:pl_build_system.bzl", "gazelle:map_kind go_test pl_go_test @px//bazel:pl_build_system.bzl"], - importpath = "github.com/xdg-go/scram", - sum = "h1:VOMT+81stJgXW3CpHyqHN3AXDYIMsx56mEFrB37Mb/E=", - version = "v1.1.1", - ) - go_repository( - name = "com_github_xdg_go_stringprep", - build_directives = ["gazelle:map_kind go_binary pl_go_binary @px//bazel:pl_build_system.bzl", "gazelle:map_kind go_test pl_go_test @px//bazel:pl_build_system.bzl"], - importpath = "github.com/xdg-go/stringprep", - sum = "h1:kdwGpVNwPFtjs98xCGkHjQtGKh86rDcRZN17QEMCOIs=", - version = "v1.0.3", - ) - go_repository( - name = "com_github_xdg_scram", - build_directives = ["gazelle:map_kind go_binary pl_go_binary @px//bazel:pl_build_system.bzl", "gazelle:map_kind go_test pl_go_test @px//bazel:pl_build_system.bzl"], - importpath = "github.com/xdg/scram", - sum = "h1:u40Z8hqBAAQyv+vATcGgV0YCnDjqSL7/q/JyPhhJSPk=", - version = "v0.0.0-20180814205039-7eeb5667e42c", - ) - go_repository( - name = "com_github_xdg_stringprep", - build_directives = ["gazelle:map_kind go_binary pl_go_binary @px//bazel:pl_build_system.bzl", "gazelle:map_kind go_test pl_go_test @px//bazel:pl_build_system.bzl"], - importpath = "github.com/xdg/stringprep", - sum = "h1:n+nNi93yXLkJvKwXNP9d55HC7lGK4H/SRcwB5IaUZLo=", - version = "v0.0.0-20180714160509-73f8eece6fdc", - ) go_repository( name = "com_github_xeipuuv_gojsonpointer", build_directives = ["gazelle:map_kind go_binary pl_go_binary @px//bazel:pl_build_system.bzl", "gazelle:map_kind go_test pl_go_test @px//bazel:pl_build_system.bzl"], @@ -3739,13 +3564,6 @@ def pl_go_dependencies(): sum = "h1:tUkIP/BLdKqrlrPwcmH0shwEEhTRHoGnc1wFIWmaBUA=", version = "v0.0.5", ) - go_repository( - name = "com_github_youmark_pkcs8", - build_directives = ["gazelle:map_kind go_binary pl_go_binary @px//bazel:pl_build_system.bzl", "gazelle:map_kind go_test pl_go_test @px//bazel:pl_build_system.bzl"], - importpath = "github.com/youmark/pkcs8", - sum = "h1:splanxYIlg+5LfHAM6xpdFEAYOk8iySO56hMFq6uLyA=", - version = "v0.0.0-20181117223130-1be2e3e5546d", - ) go_repository( name = "com_github_yudai_gojsondiff", build_directives = ["gazelle:map_kind go_binary pl_go_binary @px//bazel:pl_build_system.bzl", "gazelle:map_kind go_test pl_go_test @px//bazel:pl_build_system.bzl"], @@ -3807,8 +3625,8 @@ def pl_go_dependencies(): name = "com_google_cloud_go_compute_metadata", build_directives = ["gazelle:map_kind go_binary pl_go_binary @px//bazel:pl_build_system.bzl", "gazelle:map_kind go_test pl_go_test @px//bazel:pl_build_system.bzl"], importpath = "cloud.google.com/go/compute/metadata", - sum = "h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY=", - version = "v0.2.3", + sum = "h1:Tz+eQXMEqDIKRsmY3cHTL6FVaynIjX2QxYC4trgAKZc=", + version = "v0.3.0", ) go_repository( name = "com_google_cloud_go_datastore", @@ -4427,8 +4245,8 @@ def pl_go_dependencies(): name = "org_golang_google_protobuf", build_directives = ["gazelle:map_kind go_binary pl_go_binary @px//bazel:pl_build_system.bzl", "gazelle:map_kind go_test pl_go_test @px//bazel:pl_build_system.bzl"], importpath = "google.golang.org/protobuf", - sum = "h1:7QBf+IK2gx70Ap/hDsOmam3GE0v9HicjfEdAxE62UoM=", - version = "v1.29.1", + sum = "h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8=", + version = "v1.31.0", ) go_repository( name = "org_golang_x_crypto", @@ -4483,8 +4301,8 @@ def pl_go_dependencies(): name = "org_golang_x_oauth2", build_directives = ["gazelle:map_kind go_binary pl_go_binary @px//bazel:pl_build_system.bzl", "gazelle:map_kind go_test pl_go_test @px//bazel:pl_build_system.bzl"], importpath = "golang.org/x/oauth2", - sum = "h1:Lh8GPgSKBfWSwFvtuWOfeI3aAAnbXTSutYxJiOJFgIw=", - version = "v0.6.0", + sum = "h1:tsimM75w1tF/uws5rbeHzIWxEqElMehnc+iW793zsZs=", + version = "v0.21.0", ) go_repository( name = "org_golang_x_sync", @@ -4560,8 +4378,8 @@ def pl_go_dependencies(): name = "org_mongodb_go_mongo_driver", build_directives = ["gazelle:map_kind go_binary pl_go_binary @px//bazel:pl_build_system.bzl", "gazelle:map_kind go_test pl_go_test @px//bazel:pl_build_system.bzl"], importpath = "go.mongodb.org/mongo-driver", - sum = "h1:Ql6K6qYHEzB6xvu4+AU0BoRoqf9vFPcc4o7MUIdPW8Y=", - version = "v1.11.3", + sum = "h1:+1v2rDQUWNcGW7/7E0Jvdz51V38XXxJfhzbV17aNHCw=", + version = "v1.11.2", ) go_repository( name = "org_uber_go_atomic", diff --git a/k8s/cloud/base/kustomization.yaml b/k8s/cloud/base/kustomization.yaml index 9c918877946..c39ccb0a633 100644 --- a/k8s/cloud/base/kustomization.yaml +++ b/k8s/cloud/base/kustomization.yaml @@ -34,7 +34,6 @@ resources: - artifact_tracker_deployment.yaml - artifact_tracker_service.yaml - artifact_config.yaml -- ory_service_config.yaml - indexer_config.yaml - indexer_deployment.yaml - script_bundles_config.yaml diff --git a/k8s/cloud/base/ory_auth/hydra/hydra_deployment.yaml b/k8s/cloud/base/ory_auth/hydra/hydra_deployment.yaml index 44de8fe15b6..9e9ae07b845 100644 --- a/k8s/cloud/base/ory_auth/hydra/hydra_deployment.yaml +++ b/k8s/cloud/base/ory_auth/hydra/hydra_deployment.yaml @@ -26,14 +26,17 @@ spec: - name: migrate args: - migrate - - -c - - /etc/config/hydra/hydra.yml - sql + - up - -e + - -c + - /etc/config/hydra/hydra.yml - --yes envFrom: - configMapRef: name: pl-db-config + - configMapRef: + name: pl-ory-service-config env: - name: PL_POSTGRES_USERNAME valueFrom: @@ -55,13 +58,12 @@ spec: secretKeyRef: name: pl-hydra-secrets key: SECRETS_SYSTEM - - name: HYDRA_DATABASE - value: hydra - name: DSN # yamllint disable-line rule:line-length - value: postgres://$(PL_POSTGRES_USERNAME):$(PL_POSTGRES_PASSWORD)@$(PL_POSTGRES_HOSTNAME):$(PL_POSTGRES_PORT)/$(PL_POSTGRES_DB)?sslmode=disable&max_conns=20&max_idle_conns=4 + value: postgres://$(PL_POSTGRES_USERNAME):$(PL_POSTGRES_PASSWORD)@$(PL_POSTGRES_HOSTNAME):$(PL_POSTGRES_PORT)/$(PL_HYDRA_DATABASE)?sslmode=disable&max_conns=20&max_idle_conns=4 imagePullPolicy: IfNotPresent - image: oryd/hydra:v1.9.2-sqlite@sha256:61771c706934e1ffd66f86700a28a294ce4ed150fbf30cc131710924271a5871 + # yamllint disable-line rule:line-length + image: ghcr.io/pixie-io/hydra:2.3.0-pl1@sha256:9f0b31b1ca13d22bf14abf0c83251333b9a957a9ade39e3c723a963b84402572 volumeMounts: - mountPath: /etc/config/hydra name: config @@ -77,7 +79,8 @@ spec: containers: - name: server imagePullPolicy: IfNotPresent - image: oryd/hydra:v1.9.2-sqlite@sha256:61771c706934e1ffd66f86700a28a294ce4ed150fbf30cc131710924271a5871 + # yamllint disable-line rule:line-length + image: ghcr.io/pixie-io/hydra:2.3.0-pl1@sha256:9f0b31b1ca13d22bf14abf0c83251333b9a957a9ade39e3c723a963b84402572 args: - serve - -c @@ -86,6 +89,8 @@ spec: envFrom: - configMapRef: name: pl-db-config + - configMapRef: + name: pl-ory-service-config - configMapRef: name: pl-domain-config env: @@ -111,11 +116,17 @@ spec: key: SECRETS_SYSTEM - name: DSN # yamllint disable-line rule:line-length - value: postgres://$(PL_POSTGRES_USERNAME):$(PL_POSTGRES_PASSWORD)@$(PL_POSTGRES_HOSTNAME):$(PL_POSTGRES_PORT)/$(PL_POSTGRES_DB)?sslmode=disable&max_conns=20&max_idle_conns=4 + value: postgres://$(PL_POSTGRES_USERNAME):$(PL_POSTGRES_PASSWORD)@$(PL_POSTGRES_HOSTNAME):$(PL_POSTGRES_PORT)/$(PL_HYDRA_DATABASE)?sslmode=disable&max_conns=20&max_idle_conns=4 + - name: SERVE_TLS_ENABLED + value: "true" - name: SERVE_TLS_CERT_PATH value: /certs/server.crt - name: SERVE_TLS_KEY_PATH value: /certs/server.key + - name: SERVE_PUBLIC_CORS_ALLOWED_ORIGINS_0 + value: https://$(PL_DOMAIN_NAME) + - name: SERVE_PUBLIC_CORS_ALLOWED_ORIGINS_1 + value: https://work.$(PL_DOMAIN_NAME) - name: PL_WORK_DOMAIN value: work.$(PL_DOMAIN_NAME) - name: PL_OAUTH_DOMAIN @@ -132,6 +143,10 @@ spec: value: $(HYDRA_URL) - name: URLS_SELF_ISSUER value: $(HYDRA_URL) + # admin is not exposed to Pixie clients. Requests to this endpoint originate + # from Pixie services. + - name: URLS_SELF_ADMIN + value: $(PL_HYDRA_ADMIN_HOST) ports: - containerPort: 4444 - containerPort: 4445 @@ -153,7 +168,8 @@ spec: type: RuntimeDefault - name: client-create-or-update imagePullPolicy: IfNotPresent - image: oryd/hydra:v1.9.2-alpine@sha256:faa6ca02e77e0a08f66bfa7470a5e06d80e6e68c9c35410c65a4ea7b501aea61 + # yamllint disable-line rule:line-length + image: ghcr.io/pixie-io/hydra:2.3.0-alpine-pl1@sha256:8e09f1a6882d37387411dc8ee1647cc3c40ba42c7f74d9a711b0fa1f483a6dba command: ['sh', '-c', 'set -x; URL="https://localhost:4445/health/ready"; until [ @@ -163,22 +179,30 @@ spec: echo "waiting for ${URL}"; sleep 2; done; - CMD="hydra clients update auth-code-client"; - hydra clients get auth-code-client + CMD="hydra update oauth2-client auth-code-client"; + hydra get client auth-code-client --endpoint=https://localhost:4445 --skip-tls-verify; if [ $? -ne 0 ]; then echo "Creating client"; - CMD="hydra clients create --id auth-code-client"; + CMD="hydra create oauth2-client --id auth-code-client"; fi; ${CMD} --endpoint https://localhost:4445 --secret "${HYDRA_CLIENT_SECRET}" - --grant-types authorization_code,refresh_token,implicit - --response-types code,id_token,token - --scope openid,offline,notifications,gist,vizier - --callbacks "https://${PL_DOMAIN_NAME}/oauth/auth/callback" - --callbacks "https://work.${PL_DOMAIN_NAME}/auth/callback" + --grant-type authorization_code + --grant-type refresh_token + --grant-type implicit + --response-type code + --response-type id_token + --response-type token + --scope openid + --scope offline + --scope notifications + --scope gist + --scope vizier + --redirect-uri "https://${PL_DOMAIN_NAME}/oauth/auth/callback" + --redirect-uri "https://work.${PL_DOMAIN_NAME}/auth/callback" --skip-tls-verify; sleep infinity; '] diff --git a/k8s/cloud/base/ory_auth/kratos/kratos_deployment.yaml b/k8s/cloud/base/ory_auth/kratos/kratos_deployment.yaml index 6d9e56e9547..5a13e59717e 100644 --- a/k8s/cloud/base/ory_auth/kratos/kratos_deployment.yaml +++ b/k8s/cloud/base/ory_auth/kratos/kratos_deployment.yaml @@ -34,6 +34,8 @@ spec: envFrom: - configMapRef: name: pl-db-config + - configMapRef: + name: pl-ory-service-config env: - name: PL_POSTGRES_USERNAME valueFrom: @@ -47,9 +49,10 @@ spec: key: PL_POSTGRES_PASSWORD - name: DSN # yamllint disable-line rule:line-length - value: postgres://$(PL_POSTGRES_USERNAME):$(PL_POSTGRES_PASSWORD)@$(PL_POSTGRES_HOSTNAME):$(PL_POSTGRES_PORT)/$(PL_POSTGRES_DB)?sslmode=disable&max_conns=20&max_idle_conns=4 + value: postgres://$(PL_POSTGRES_USERNAME):$(PL_POSTGRES_PASSWORD)@$(PL_POSTGRES_HOSTNAME):$(PL_POSTGRES_PORT)/$(PL_KRATOS_DATABASE)?sslmode=disable&max_conns=20&max_idle_conns=4 imagePullPolicy: IfNotPresent - image: oryd/kratos:v0.10.1@sha256:fdcfac3da3b64e619af553451607e1ab00160e59860bb19ec145cdc6f6f9c41d + # yamllint disable-line rule:line-length + image: ghcr.io/pixie-io/kratos:1.3.1-pl1@sha256:3edbd266d68e9fac5e188478704e3f302962310a3685eec65890101e966c7bad resources: {} securityContext: allowPrivilegeEscalation: false @@ -75,6 +78,8 @@ spec: name: pl-db-config - configMapRef: name: pl-domain-config + - configMapRef: + name: pl-ory-service-config env: - name: PL_POSTGRES_USERNAME valueFrom: @@ -88,7 +93,7 @@ spec: key: PL_POSTGRES_PASSWORD - name: DSN # yamllint disable-line rule:line-length - value: postgres://$(PL_POSTGRES_USERNAME):$(PL_POSTGRES_PASSWORD)@$(PL_POSTGRES_HOSTNAME):$(PL_POSTGRES_PORT)/$(PL_POSTGRES_DB)?sslmode=disable&max_conns=20&max_idle_conns=4 + value: postgres://$(PL_POSTGRES_USERNAME):$(PL_POSTGRES_PASSWORD)@$(PL_POSTGRES_HOSTNAME):$(PL_POSTGRES_PORT)/$(PL_KRATOS_DATABASE)?sslmode=disable&max_conns=20&max_idle_conns=4 - name: SERVE_PUBLIC_TLS_CERT_PATH value: /certs/server.crt - name: SERVE_PUBLIC_TLS_KEY_PATH @@ -135,7 +140,8 @@ spec: - name: SELFSERVICE_FLOWS_ERROR_UI_URL value: https://$(PL_WORK_DOMAIN)/auth/password/error imagePullPolicy: IfNotPresent - image: oryd/kratos:v0.10.1@sha256:fdcfac3da3b64e619af553451607e1ab00160e59860bb19ec145cdc6f6f9c41d + # yamllint disable-line rule:line-length + image: ghcr.io/pixie-io/kratos:1.3.1-pl1@sha256:3edbd266d68e9fac5e188478704e3f302962310a3685eec65890101e966c7bad ports: - containerPort: 4433 - containerPort: 4434 diff --git a/k8s/cloud/dev/kustomization.yaml b/k8s/cloud/dev/kustomization.yaml index 1c1b1ea100f..44e30e9f1ed 100644 --- a/k8s/cloud/dev/kustomization.yaml +++ b/k8s/cloud/dev/kustomization.yaml @@ -29,7 +29,6 @@ patches: - path: auth_deployment_patch.yaml - path: db_config.yaml - path: indexer_config.yaml -- path: ory_service_config.yaml - path: script_bundles_config.yaml - path: proxy_envoy.yaml - path: service_config.yaml diff --git a/k8s/cloud/dev/ory_service_config.yaml b/k8s/cloud/dev/ory_service_config.yaml deleted file mode 100644 index 7de1f9ba3b3..00000000000 --- a/k8s/cloud/dev/ory_service_config.yaml +++ /dev/null @@ -1,14 +0,0 @@ ---- -# Lists of referenceable ORY services. -apiVersion: v1 -kind: ConfigMap -metadata: - name: pl-ory-service-config -data: - PL_HYDRA_SERVICE: hydra.plc-dev.svc.cluster.local:4444 - PL_KRATOS_SERVICE: kratos.plc-dev.svc.cluster.local:4433 - PL_HYDRA_PUBLIC_HOST: https://hydra.plc-dev.svc.cluster.local:4444 - PL_HYDRA_ADMIN_HOST: https://hydra.plc-dev.svc.cluster.local:4445 - # Kratos only support http at the moment. - PL_KRATOS_PUBLIC_HOST: https://kratos.plc-dev.svc.cluster.local:4433 - PL_KRATOS_ADMIN_HOST: https://kratos.plc-dev.svc.cluster.local:4434 diff --git a/k8s/cloud/base/ory_service_config.yaml b/k8s/cloud_deps/base/ory_service_config.yaml similarity index 90% rename from k8s/cloud/base/ory_service_config.yaml rename to k8s/cloud_deps/base/ory_service_config.yaml index 4574c2dac27..4776a56862a 100644 --- a/k8s/cloud/base/ory_service_config.yaml +++ b/k8s/cloud_deps/base/ory_service_config.yaml @@ -12,3 +12,5 @@ data: # Kratos only support http at the moment. PL_KRATOS_PUBLIC_HOST: https://kratos.plc.svc.cluster.local:4433 PL_KRATOS_ADMIN_HOST: https://kratos.plc.svc.cluster.local:4434 + PL_HYDRA_DATABASE: hydra + PL_KRATOS_DATABASE: kratos diff --git a/k8s/cloud_deps/dev/kustomization.yaml b/k8s/cloud_deps/dev/kustomization.yaml index 87ab391f60d..02b25d538f8 100644 --- a/k8s/cloud_deps/dev/kustomization.yaml +++ b/k8s/cloud_deps/dev/kustomization.yaml @@ -9,3 +9,4 @@ resources: - kibana - nats - postgres +- ory_service_config.yaml diff --git a/k8s/cloud_deps/dev/postgres/postgres_deployment.yaml b/k8s/cloud_deps/dev/postgres/postgres_deployment.yaml index 05d7fa81186..d5813ee5143 100644 --- a/k8s/cloud_deps/dev/postgres/postgres_deployment.yaml +++ b/k8s/cloud_deps/dev/postgres/postgres_deployment.yaml @@ -1,4 +1,20 @@ --- +apiVersion: v1 +kind: ConfigMap +metadata: + name: postgres-init-scripts +data: + init-ory-dbs.sh: | + #!/usr/bin/env bash + set -e + + psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL + CREATE DATABASE $PL_HYDRA_DATABASE; + CREATE DATABASE $PL_KRATOS_DATABASE; + GRANT ALL PRIVILEGES ON DATABASE $PL_HYDRA_DATABASE TO $POSTGRES_USER; + GRANT ALL PRIVILEGES ON DATABASE $PL_KRATOS_DATABASE TO $POSTGRES_USER; + EOSQL +--- apiVersion: apps/v1 kind: Deployment metadata: @@ -27,11 +43,20 @@ spec: value: pl - name: POSTGRES_PASSWORD value: pl + envFrom: + - configMapRef: + name: pl-ory-service-config volumeMounts: - mountPath: /var/lib/postgresql/data subPath: data name: postgres-pv-claim + - mountPath: /docker-entrypoint-initdb.d + name: postgres-init-scripts volumes: - name: postgres-pv-claim persistentVolumeClaim: claimName: postgres-pv-claim + - name: postgres-init-scripts + configMap: + name: postgres-init-scripts + defaultMode: 0755 diff --git a/k8s/cloud_deps/public/kustomization.yaml b/k8s/cloud_deps/public/kustomization.yaml index 392f4663853..3e5b5e141b4 100644 --- a/k8s/cloud_deps/public/kustomization.yaml +++ b/k8s/cloud_deps/public/kustomization.yaml @@ -6,6 +6,7 @@ commonLabels: app: pl-cloud resources: - configs.yaml +- ory_service_config.yaml - elastic - nats - postgres diff --git a/k8s/cloud_deps/public/ory_service_config.yaml b/k8s/cloud_deps/public/ory_service_config.yaml new file mode 100644 index 00000000000..4776a56862a --- /dev/null +++ b/k8s/cloud_deps/public/ory_service_config.yaml @@ -0,0 +1,16 @@ +--- +# Lists of referenceable ORY services. +apiVersion: v1 +kind: ConfigMap +metadata: + name: pl-ory-service-config +data: + PL_HYDRA_SERVICE: hydra.plc.svc.cluster.local:4444 + PL_KRATOS_SERVICE: kratos.plc.svc.cluster.local:4433 + PL_HYDRA_PUBLIC_HOST: https://hydra.plc.svc.cluster.local:4444 + PL_HYDRA_ADMIN_HOST: https://hydra.plc.svc.cluster.local:4445 + # Kratos only support http at the moment. + PL_KRATOS_PUBLIC_HOST: https://kratos.plc.svc.cluster.local:4433 + PL_KRATOS_ADMIN_HOST: https://kratos.plc.svc.cluster.local:4434 + PL_HYDRA_DATABASE: hydra + PL_KRATOS_DATABASE: kratos diff --git a/k8s/cloud_deps/public/postgres/postgres_deployment.yaml b/k8s/cloud_deps/public/postgres/postgres_deployment.yaml index a805c5b7cd9..db49b090bff 100644 --- a/k8s/cloud_deps/public/postgres/postgres_deployment.yaml +++ b/k8s/cloud_deps/public/postgres/postgres_deployment.yaml @@ -1,4 +1,20 @@ --- +apiVersion: v1 +kind: ConfigMap +metadata: + name: postgres-init-scripts +data: + init-ory-dbs.sh: | + #!/usr/bin/env bash + set -e + + psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL + CREATE DATABASE $PL_HYDRA_DATABASE; + CREATE DATABASE $PL_KRATOS_DATABASE; + GRANT ALL PRIVILEGES ON DATABASE $PL_HYDRA_DATABASE TO $POSTGRES_USER; + GRANT ALL PRIVILEGES ON DATABASE $PL_KRATOS_DATABASE TO $POSTGRES_USER; + EOSQL +--- apiVersion: apps/v1 kind: Deployment metadata: @@ -33,11 +49,20 @@ spec: secretKeyRef: key: PL_POSTGRES_PASSWORD name: pl-db-secrets + envFrom: + - configMapRef: + name: pl-ory-service-config volumeMounts: - mountPath: /var/lib/postgresql/data subPath: data name: postgres-pv-claim + - mountPath: /docker-entrypoint-initdb.d + name: postgres-init-scripts volumes: - name: postgres-pv-claim persistentVolumeClaim: claimName: postgres-pv-claim + - name: postgres-init-scripts + configMap: + name: postgres-init-scripts + defaultMode: 0755 diff --git a/src/cloud/api/controllers/auth.go b/src/cloud/api/controllers/auth.go index 9e860366a32..26b44515f9f 100644 --- a/src/cloud/api/controllers/auth.go +++ b/src/cloud/api/controllers/auth.go @@ -62,7 +62,7 @@ func AuthOAuthLoginHandler(env commonenv.Env, w http.ResponseWriter, r *http.Req oa := apiEnv.IdentityProviderClient() session, err := apiEnv.CookieStore().Get(r, oa.SessionKey()) if err != nil { - return &handler.StatusError{Code: http.StatusInternalServerError, Err: err} + return &handler.StatusError{Code: http.StatusInternalServerError, Err: errors.New("failed to get session cookie: " + err.Error())} } return oa.HandleLogin(session, w, r) } diff --git a/src/cloud/shared/idprovider/BUILD.bazel b/src/cloud/shared/idprovider/BUILD.bazel index afb4f53791b..30d15f3b1c3 100644 --- a/src/cloud/shared/idprovider/BUILD.bazel +++ b/src/cloud/shared/idprovider/BUILD.bazel @@ -24,12 +24,8 @@ go_library( visibility = ["//src/cloud:__subpackages__"], deps = [ "//src/shared/services/handler", - "@com_github_go_openapi_runtime//client", - "@com_github_go_openapi_strfmt//:strfmt", "@com_github_gorilla_sessions//:sessions", - "@com_github_ory_hydra_client_go//client", - "@com_github_ory_hydra_client_go//client/admin", - "@com_github_ory_hydra_client_go//models", + "@com_github_ory_hydra_client_go_v2//:hydra-client-go", "@com_github_ory_kratos_client_go//:kratos-client-go", "@com_github_sirupsen_logrus//:logrus", "@com_github_spf13_pflag//:pflag", @@ -47,8 +43,7 @@ pl_go_test( embed = [":idprovider"], deps = [ "@com_github_gorilla_sessions//:sessions", - "@com_github_ory_hydra_client_go//client/admin", - "@com_github_ory_hydra_client_go//models", + "@com_github_ory_hydra_client_go_v2//:hydra-client-go", "@com_github_ory_kratos_client_go//:kratos-client-go", "@com_github_stretchr_testify//assert", "@com_github_stretchr_testify//require", diff --git a/src/cloud/shared/idprovider/client.go b/src/cloud/shared/idprovider/client.go index a6896852aad..4cdc8166d91 100644 --- a/src/cloud/shared/idprovider/client.go +++ b/src/cloud/shared/idprovider/client.go @@ -31,12 +31,8 @@ import ( "os" "strings" - httptransport "github.com/go-openapi/runtime/client" - "github.com/go-openapi/strfmt" "github.com/gorilla/sessions" - hydra "github.com/ory/hydra-client-go/client" - hydraAdmin "github.com/ory/hydra-client-go/client/admin" - hydraModels "github.com/ory/hydra-client-go/models" + hydra "github.com/ory/hydra-client-go/v2" kratos "github.com/ory/kratos-client-go" log "github.com/sirupsen/logrus" "github.com/spf13/pflag" @@ -89,20 +85,20 @@ type HydraKratosConfig struct { const HydraLoginStateKey string = "hydra_login_state" type hydraAdminClientService interface { - AcceptConsentRequest(params *hydraAdmin.AcceptConsentRequestParams) (*hydraAdmin.AcceptConsentRequestOK, error) - AcceptLoginRequest(params *hydraAdmin.AcceptLoginRequestParams) (*hydraAdmin.AcceptLoginRequestOK, error) - GetConsentRequest(params *hydraAdmin.GetConsentRequestParams) (*hydraAdmin.GetConsentRequestOK, error) - IntrospectOAuth2Token(params *hydraAdmin.IntrospectOAuth2TokenParams) (*hydraAdmin.IntrospectOAuth2TokenOK, error) + AcceptOAuth2ConsentRequest(context.Context) hydra.OAuth2APIAcceptOAuth2ConsentRequestRequest + AcceptOAuth2LoginRequest(context.Context) hydra.OAuth2APIAcceptOAuth2LoginRequestRequest + GetOAuth2ConsentRequest(context.Context) hydra.OAuth2APIGetOAuth2ConsentRequestRequest + IntrospectOAuth2Token(context.Context) hydra.OAuth2APIIntrospectOAuth2TokenRequest } type kratosPublicClientService interface { - ToSession(context.Context) kratos.V0alpha2ApiApiToSessionRequest + ToSession(context.Context) kratos.FrontendAPIToSessionRequest } type kratosAdminClientService interface { - AdminGetIdentity(context.Context, string) kratos.V0alpha2ApiApiAdminGetIdentityRequest - AdminCreateIdentity(context.Context) kratos.V0alpha2ApiApiAdminCreateIdentityRequest - AdminCreateSelfServiceRecoveryLink(context.Context) kratos.V0alpha2ApiApiAdminCreateSelfServiceRecoveryLinkRequest + GetIdentity(context.Context, string) kratos.IdentityAPIGetIdentityRequest + CreateIdentity(context.Context) kratos.IdentityAPICreateIdentityRequest + CreateRecoveryLinkForIdentity(context.Context) kratos.IdentityAPICreateRecoveryLinkForIdentityRequest } // HydraKratosClient implements the Client interface for the a Hydra and Kratos integration. @@ -142,17 +138,18 @@ func createHTTPClient() (*http.Client, error) { return client, nil } -func createRuntime(path string, client *http.Client) (*httptransport.Runtime, error) { - u, err := url.Parse(path) +func createHydraClient(host string, client *http.Client) (*hydra.APIClient, error) { + u, err := url.Parse(host) if err != nil { return nil, err } - return httptransport.NewWithClient( - u.Host, - u.Path, - []string{u.Scheme}, - client, - ), nil + + conf := hydra.NewConfiguration() + conf.Host = u.Host + conf.Scheme = u.Scheme + conf.Servers = hydra.ServerConfigurations{{URL: host}} + conf.HTTPClient = client + return hydra.NewAPIClient(conf), nil } func createKratosClient(host string, client *http.Client) (*kratos.APIClient, error) { @@ -180,12 +177,10 @@ func NewHydraKratosClientFromConfig(cfg *HydraKratosConfig) (*HydraKratosClient, } } - hydraAdminRuntime, err := createRuntime(cfg.HydraAdminHost, httpClient) + hydraAdminClient, err := createHydraClient(cfg.HydraAdminHost, httpClient) if err != nil { return nil, err } - // We specify the Admin client to avoid confusing bugs because the Public client is held behind a different endpoint. - hydraAdminClient := hydra.New(hydraAdminRuntime, strfmt.NewFormats()).Admin // One can theoretically send public requests to the Admin Host but then kratos will // 302 the requests to the public host/port. @@ -205,26 +200,25 @@ func NewHydraKratosClientFromConfig(cfg *HydraKratosConfig) (*HydraKratosClient, return &HydraKratosClient{ Config: cfg, httpClient: httpClient, - hydraAdminClient: hydraAdminClient, - kratosAdminClient: kratosAdminClient.V0alpha2Api, - kratosPublicClient: kratosPublicClient.V0alpha2Api, + hydraAdminClient: hydraAdminClient.OAuth2API, + kratosAdminClient: kratosAdminClient.IdentityAPI, + kratosPublicClient: kratosPublicClient.FrontendAPI, }, nil } // NewHydraKratosClient creates a new client with the default config. func NewHydraKratosClient() (*HydraKratosClient, error) { - return NewHydraKratosClientFromConfig( - &HydraKratosConfig{ - HydraPublicHost: viper.GetString("hydra_public_host"), - HydraAdminHost: viper.GetString("hydra_admin_host"), - HydraBrowserURL: viper.GetString("hydra_browser_url"), - KratosPublicHost: viper.GetString("kratos_public_host"), - KratosAdminHost: viper.GetString("kratos_admin_host"), - KratosBrowserURL: viper.GetString("kratos_browser_url"), - HydraConsentPath: viper.GetString("hydra_consent_path"), - HydraClientID: viper.GetString("hydra_client_id"), - }, - ) + config := &HydraKratosConfig{ + HydraPublicHost: viper.GetString("hydra_public_host"), + HydraAdminHost: viper.GetString("hydra_admin_host"), + HydraBrowserURL: viper.GetString("hydra_browser_url"), + KratosPublicHost: viper.GetString("kratos_public_host"), + KratosAdminHost: viper.GetString("kratos_admin_host"), + KratosBrowserURL: viper.GetString("kratos_browser_url"), + HydraConsentPath: viper.GetString("hydra_consent_path"), + HydraClientID: viper.GetString("hydra_client_id"), + } + return NewHydraKratosClientFromConfig(config) } func (c *HydraKratosClient) convertExternalHydraURLToInternal(externalHydraURL string) (string, error) { @@ -374,19 +368,14 @@ type RedirectResponse struct { // AcceptHydraLogin sends a request to accept the login on the hydra endpoint. func (c *HydraKratosClient) AcceptHydraLogin(ctx context.Context, challenge string, whoamiResp *Whoami) (*RedirectResponse, error) { subject := whoamiResp.ID() - params := &hydraAdmin.AcceptLoginRequestParams{ - Body: &hydraModels.AcceptLoginRequest{ - Context: whoamiResp.kratosSession, - Subject: &subject, - }, - LoginChallenge: challenge, - Context: ctx, - } - resp, err := c.hydraAdminClient.AcceptLoginRequest(params) + body := hydra.NewAcceptOAuth2LoginRequest(subject) + body.SetContext(whoamiResp.kratosSession) + + resp, _, err := c.hydraAdminClient.AcceptOAuth2LoginRequest(ctx).LoginChallenge(challenge).AcceptOAuth2LoginRequest(*body).Execute() if err != nil { return nil, err } - return &RedirectResponse{RedirectTo: resp.GetPayload().RedirectTo}, nil + return &RedirectResponse{RedirectTo: &resp.RedirectTo}, nil } // InterceptHydraUserConsent performs the user consent flow bypassing normal user interaction. Hydra uses @@ -432,41 +421,37 @@ func (c *HydraKratosClient) AcceptConsent(ctx context.Context, challenge string) if challenge == "" { return nil, fmt.Errorf("challenge is empty") } - resp, err := c.hydraAdminClient.GetConsentRequest(&hydraAdmin.GetConsentRequestParams{ - ConsentChallenge: challenge, - Context: ctx, - }) + resp, _, err := c.hydraAdminClient.GetOAuth2ConsentRequest(ctx).ConsentChallenge(challenge).Execute() if err != nil { log.Debug("error on hydra.consentRequest:") return nil, err } - if resp.GetPayload() == nil { + if resp == nil { log.Debug("consent request payload is empty") - return nil, err + return nil, fmt.Errorf("consent request payload is empty: %w", err) } - consentRequest := resp.GetPayload() - // We only trust the client that's passed in as a config here. In the future we might want to support other clients // at which point we will want to actually ask for permission from the user. - if consentRequest.Client.ClientID != c.Config.HydraClientID { - return nil, fmt.Errorf("'%s' not an allowed client", consentRequest.Client.ClientID) + if resp.Client.ClientId == nil { + return nil, fmt.Errorf("consent request client ID is nil") } - acceptResp, err := c.hydraAdminClient.AcceptConsentRequest(&hydraAdmin.AcceptConsentRequestParams{ - Body: &hydraModels.AcceptConsentRequest{ - GrantScope: consentRequest.RequestedScope, - GrantAccessTokenAudience: consentRequest.RequestedAccessTokenAudience, - }, - ConsentChallenge: challenge, - Context: ctx, - }) + if *resp.Client.ClientId != c.Config.HydraClientID { + return nil, fmt.Errorf("'%s' not an allowed client", *resp.Client.ClientId) + } + + body := hydra.NewAcceptOAuth2ConsentRequest() + body.SetGrantScope(resp.RequestedScope) + body.SetGrantAccessTokenAudience(resp.RequestedAccessTokenAudience) + + acceptResp, _, err := c.hydraAdminClient.AcceptOAuth2ConsentRequest(ctx).ConsentChallenge(challenge).AcceptOAuth2ConsentRequest(*body).Execute() if err != nil { log.Debug("error on hydra.AcceptConsentRequest:") return nil, err } - return &RedirectResponse{RedirectTo: acceptResp.GetPayload().RedirectTo}, nil + return &RedirectResponse{RedirectTo: &acceptResp.RedirectTo}, nil } // HandleLogin handles the login for Hydra and Kratos. @@ -505,12 +490,12 @@ func (c *HydraKratosClient) HandleLogin(session *sessions.Session, w http.Respon ctx := context.Background() whoami, err := c.Whoami(ctx, r) if err != nil { - return &handler.StatusError{Code: http.StatusInternalServerError, Err: err} + return &handler.StatusError{Code: http.StatusInternalServerError, Err: fmt.Errorf("Could not get whoami: %w", err)} } redirectResp, err := c.AcceptHydraLogin(ctx, challenge, whoami) if err != nil { - return &handler.StatusError{Code: http.StatusInternalServerError, Err: err} + return &handler.StatusError{Code: http.StatusInternalServerError, Err: fmt.Errorf("Could not accept hydra login: %w", err)} } if redirectResp.RedirectTo == nil { @@ -520,12 +505,12 @@ func (c *HydraKratosClient) HandleLogin(session *sessions.Session, w http.Respon // We expect the response to redirect to the consent endpoint. We will just intercept the consent endpoint respHeader, consentChallenge, err := c.InterceptHydraUserConsent(*redirectResp.RedirectTo, r.Header) if err != nil { - return &handler.StatusError{Code: http.StatusInternalServerError, Err: err} + return &handler.StatusError{Code: http.StatusInternalServerError, Err: fmt.Errorf("Could not intercept hydra user consent: %w", err)} } consentResp, err := c.AcceptConsent(ctx, consentChallenge) if err != nil { - return &handler.StatusError{Code: http.StatusInternalServerError, Err: err} + return &handler.StatusError{Code: http.StatusInternalServerError, Err: fmt.Errorf("Could not accept hydra consent: %w", err)} } // Copy the header because the header contains a necessary Set-Cookie from the OAuth server. @@ -549,16 +534,15 @@ func (c *HydraKratosClient) SessionKey() string { // GetUserIDFromToken returns the userID from the subject portion of the access token. func (c *HydraKratosClient) GetUserIDFromToken(ctx context.Context, token string) (string, error) { - params := &hydraAdmin.IntrospectOAuth2TokenParams{ - Context: ctx, - Token: token, - } - res, err := c.hydraAdminClient.IntrospectOAuth2Token(params) + res, _, err := c.hydraAdminClient.IntrospectOAuth2Token(ctx).Token(token).Execute() if err != nil { return "", err } - return res.GetPayload().Sub, nil + if res.Sub == nil { + return "", fmt.Errorf("token introspection returned nil subject") + } + return *res.Sub, nil } // KratosUserInfo contains the user information format as stored in Kratos. @@ -570,7 +554,7 @@ type KratosUserInfo struct { // GetUserInfo returns the UserInfo for the userID. func (c *HydraKratosClient) GetUserInfo(ctx context.Context, userID string) (*KratosUserInfo, error) { - id, _, err := c.kratosAdminClient.AdminGetIdentity(ctx, userID).Execute() + id, _, err := c.kratosAdminClient.GetIdentity(ctx, userID).Execute() if err != nil { return nil, err } @@ -606,8 +590,8 @@ type CreateIdentityResponse struct { func (c *HydraKratosClient) CreateIdentity(ctx context.Context, email string) (*CreateIdentityResponse, error) { schemaID := viper.GetString("kratos_schema_id") - body := kratos.NewAdminCreateIdentityBody(schemaID, map[string]interface{}{"email": email}) - idResp, _, err := c.kratosAdminClient.AdminCreateIdentity(ctx).AdminCreateIdentityBody(*body).Execute() + body := kratos.NewCreateIdentityBody(schemaID, map[string]interface{}{"email": email}) + idResp, _, err := c.kratosAdminClient.CreateIdentity(ctx).CreateIdentityBody(*body).Execute() if err != nil { return nil, err } @@ -630,9 +614,9 @@ type CreateInviteLinkForIdentityResponse struct { // CreateInviteLinkForIdentity creates a Kratos recovery link for the identity, which can act like a one-time use invitelink. func (c *HydraKratosClient) CreateInviteLinkForIdentity(ctx context.Context, req *CreateInviteLinkForIdentityRequest) (*CreateInviteLinkForIdentityResponse, error) { - body := kratos.NewAdminCreateSelfServiceRecoveryLinkBody(req.AuthProviderID) + body := kratos.NewCreateRecoveryLinkForIdentityBody(req.AuthProviderID) body.SetExpiresIn(viper.GetString("kratos_recovery_link_lifetime")) - recovery, _, err := c.kratosAdminClient.AdminCreateSelfServiceRecoveryLink(ctx).AdminCreateSelfServiceRecoveryLinkBody(*body).Execute() + recovery, _, err := c.kratosAdminClient.CreateRecoveryLinkForIdentity(ctx).CreateRecoveryLinkForIdentityBody(*body).Execute() if err != nil { return nil, err } diff --git a/src/cloud/shared/idprovider/client_test.go b/src/cloud/shared/idprovider/client_test.go index 46039c63393..70b5c3464d6 100644 --- a/src/cloud/shared/idprovider/client_test.go +++ b/src/cloud/shared/idprovider/client_test.go @@ -20,14 +20,15 @@ package idprovider import ( "context" + "encoding/json" "net/http" "net/http/httptest" "net/url" + "strings" "testing" "github.com/gorilla/sessions" - hydraAdmin "github.com/ory/hydra-client-go/client/admin" - hydraModels "github.com/ory/hydra-client-go/models" + hydra "github.com/ory/hydra-client-go/v2" kratos "github.com/ory/kratos-client-go" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -37,6 +38,37 @@ func makeClient(t *testing.T) (*HydraKratosClient, func()) { return makeClientFromConfig(t, &testClientConfig{}) } +// makeClientWithMockHydra creates a HydraKratosClient with a mock HTTP server for Hydra admin endpoints. +// Hydra's request structs use unexported fields, which complicates testing. This mock HTTP server +// allows testing the actual HTTP request/response cycle to inspect request parameters. +func makeClientWithMockHydra(t *testing.T, hydraHandler http.HandlerFunc) (*HydraKratosClient, func()) { + // Create mock Hydra admin server + mockHydraAdmin := httptest.NewServer(hydraHandler) + + // Create real Hydra client pointing to mock server + hydraClient, err := createHydraClient(mockHydraAdmin.URL, mockHydraAdmin.Client()) + require.NoError(t, err) + + client := &HydraKratosClient{ + httpClient: mockHydraAdmin.Client(), + Config: &HydraKratosConfig{ + HydraClientID: "hydra_client_id", + KratosBrowserURL: "https://work.withpixie.ai/kratos", + HydraBrowserURL: "https://work.withpixie.ai/hydra", + HydraConsentPath: "/api/auth/consent", + }, + hydraAdminClient: hydraClient.OAuth2API, + kratosPublicClient: &kratosFakeAPI{}, + kratosAdminClient: &kratosFakeAPI{}, + } + + cleanup := func() { + mockHydraAdmin.Close() + } + + return client, cleanup +} + type testClientConfig struct { postLoginRedirect string hydraPublicHostCookie string @@ -45,7 +77,7 @@ type testClientConfig struct { idpConsentPath string hydraBrowserURL string hydraConsentPath string - introspectOAuth2TokenFn *func(params *hydraAdmin.IntrospectOAuth2TokenParams) (*hydraAdmin.IntrospectOAuth2TokenOK, error) + introspectOAuth2TokenFn *func(req *hydra.OAuth2APIIntrospectOAuth2TokenRequest) (*hydra.IntrospectedOAuth2Token, *http.Response, error) } func fillDefaults(p *testClientConfig) *testClientConfig { @@ -97,12 +129,10 @@ func makeClientFromConfig(t *testing.T, p *testClientConfig) (*HydraKratosClient http.Redirect(w, r, consentURL.String(), http.StatusFound) })) - acceptConsentRequestFn := func(params *hydraAdmin.AcceptConsentRequestParams) (*hydraAdmin.AcceptConsentRequestOK, error) { - return &hydraAdmin.AcceptConsentRequestOK{ - Payload: &hydraModels.CompletedRequest{ - RedirectTo: &p.postLoginRedirect, - }, - }, nil + acceptConsentRequestFn := func(params *hydra.OAuth2APIAcceptOAuth2ConsentRequestRequest) (*hydra.OAuth2RedirectTo, *http.Response, error) { + return &hydra.OAuth2RedirectTo{ + RedirectTo: p.postLoginRedirect, + }, nil, nil } return &HydraKratosClient{ @@ -231,30 +261,52 @@ func TestRedirectToLogin(t *testing.T) { func TestAcceptHydraLogin(t *testing.T) { loginChallenge := "abcdefgh" - acceptLoginRequestFn := func(params *hydraAdmin.AcceptLoginRequestParams) (*hydraAdmin.AcceptLoginRequestOK, error) { - // Make sure the loginChallenge is forwarded. - assert.Equal(t, params.LoginChallenge, loginChallenge) - // Call the original login request to handle the rest. - return (&fakeHydraAdminClient{}).AcceptLoginRequest(params) - } - c, cleanup := makeClient(t) - c.hydraAdminClient = &fakeHydraAdminClient{ - acceptLoginRequestFn: &acceptLoginRequestFn, - } + expectedSubject := "user" + redirectURL := "/oauth2/redirect" + + // Used to capture values sent to the mock Hydra server. + var capturedChallenge string + var capturedBody hydra.AcceptOAuth2LoginRequest + + c, cleanup := makeClientWithMockHydra(t, http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + switch { + case strings.HasSuffix(r.URL.Path, "/oauth2/auth/requests/login/accept") && r.Method == "PUT": + // Capture the login challenge from query params + capturedChallenge = r.URL.Query().Get("login_challenge") + + err := json.NewDecoder(r.Body).Decode(&capturedBody) + require.NoError(t, err) + + w.Header().Set("Content-Type", "application/json") + err = json.NewEncoder(w).Encode(hydra.OAuth2RedirectTo{ + RedirectTo: redirectURL, + }) + require.NoError(t, err) + default: + t.Errorf("Unexpected request: %s %s", r.Method, r.URL.Path) + w.WriteHeader(http.StatusNotFound) + } + })) defer cleanup() // Fake whoami response. whoami := &Whoami{ kratosSession: &kratos.Session{ - Identity: kratos.Identity{ - Id: "user", + Identity: &kratos.Identity{ + Id: expectedSubject, }, }, } - // Just make sure the error is not nil. - _, err := c.AcceptHydraLogin(context.Background(), loginChallenge, whoami) + resp, err := c.AcceptHydraLogin(context.Background(), loginChallenge, whoami) require.NoError(t, err) + require.NotNil(t, resp.RedirectTo) + assert.Equal(t, redirectURL, *resp.RedirectTo) + + // Verify the captured values + assert.Equal(t, loginChallenge, capturedChallenge) + assert.Equal(t, expectedSubject, capturedBody.Subject) + assert.NotNil(t, capturedBody.Context) } func TestConvertHydraURL(t *testing.T) { @@ -301,46 +353,62 @@ func TestInterceptHydraConsent(t *testing.T) { func TestAcceptConsent(t *testing.T) { consentChallenge := "123456789" - getConsentRequestFn := func(params *hydraAdmin.GetConsentRequestParams) (*hydraAdmin.GetConsentRequestOK, error) { - assert.Equal(t, consentChallenge, params.ConsentChallenge) - return &hydraAdmin.GetConsentRequestOK{ - Payload: &hydraModels.ConsentRequest{ - Client: &hydraModels.OAuth2Client{ - ClientID: "hydra_client_id", - }, - RequestedScope: []string{"openid", "offline"}, - RequestedAccessTokenAudience: []string{"api"}, - }, - }, nil - } + clientID := "hydra_client_id" + requestedScope := []string{"openid", "offline"} + requestedAudience := []string{"api"} redirectURL := "/oauth2/auth" - acceptConsentRequestFn := func(params *hydraAdmin.AcceptConsentRequestParams) (*hydraAdmin.AcceptConsentRequestOK, error) { - assert.ElementsMatch(t, []string{"openid", "offline"}, params.Body.GrantScope) - assert.ElementsMatch(t, []string{"api"}, params.Body.GrantAccessTokenAudience) - assert.Equal(t, consentChallenge, params.ConsentChallenge) - return &hydraAdmin.AcceptConsentRequestOK{ - Payload: &hydraModels.CompletedRequest{ - RedirectTo: &redirectURL, - }, - }, nil - } - hydraAdminClient := &fakeHydraAdminClient{ - redirect: "/", - consentChallenge: consentChallenge, - oauthClientID: "hydra_client_id", - getConsentRequestFn: &getConsentRequestFn, - acceptConsentRequestFn: &acceptConsentRequestFn, - } - c := HydraKratosClient{ - Config: &HydraKratosConfig{ - HydraClientID: "hydra_client_id", - }, - hydraAdminClient: hydraAdminClient, - } - consentResp, err := c.AcceptConsent(context.Background(), hydraAdminClient.consentChallenge) + // Used to capture values sent to the mock Hydra server. + var capturedGetChallenge string + var capturedAcceptChallenge string + var capturedAcceptBody hydra.AcceptOAuth2ConsentRequest + + c, cleanup := makeClientWithMockHydra(t, http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + switch { + case strings.HasSuffix(r.URL.Path, "/oauth2/auth/requests/consent") && r.Method == "GET": + // Capture the consent challenge from query params + capturedGetChallenge = r.URL.Query().Get("consent_challenge") + + // Return consent request + w.Header().Set("Content-Type", "application/json") + err := json.NewEncoder(w).Encode(hydra.OAuth2ConsentRequest{ + Client: &hydra.OAuth2Client{ + ClientId: &clientID, + }, + RequestedScope: requestedScope, + RequestedAccessTokenAudience: requestedAudience, + }) + require.NoError(t, err) + + case strings.HasSuffix(r.URL.Path, "/oauth2/auth/requests/consent/accept") && r.Method == "PUT": + // Capture the consent challenge and body + capturedAcceptChallenge = r.URL.Query().Get("consent_challenge") + + err := json.NewDecoder(r.Body).Decode(&capturedAcceptBody) + require.NoError(t, err) + + w.Header().Set("Content-Type", "application/json") + err = json.NewEncoder(w).Encode(hydra.OAuth2RedirectTo{ + RedirectTo: redirectURL, + }) + require.NoError(t, err) + + default: + t.Errorf("Unexpected request: %s %s", r.Method, r.URL.Path) + w.WriteHeader(http.StatusNotFound) + } + })) + defer cleanup() + + consentResp, err := c.AcceptConsent(context.Background(), consentChallenge) require.NoError(t, err) assert.Equal(t, redirectURL, *consentResp.RedirectTo) + + // Verify the captured values + assert.Equal(t, consentChallenge, capturedGetChallenge) + assert.Equal(t, consentChallenge, capturedAcceptChallenge) + assert.ElementsMatch(t, requestedScope, capturedAcceptBody.GrantScope) + assert.ElementsMatch(t, requestedAudience, capturedAcceptBody.GrantAccessTokenAudience) } func TestAcceptConsentWithWrongClientID(t *testing.T) { @@ -464,7 +532,7 @@ func Test_CreateInviteLinkForIdentity(t *testing.T) { defer cleanup() link := "https://work.withpixie.dev/recovery" - c.kratosAdminClient = kratosFakeAPI{ + c.kratosAdminClient = &kratosFakeAPI{ recoveryLink: link, } diff --git a/src/cloud/shared/idprovider/hydra_fake_test.go b/src/cloud/shared/idprovider/hydra_fake_test.go index 076dc70ceaa..d08d7cfcfe9 100644 --- a/src/cloud/shared/idprovider/hydra_fake_test.go +++ b/src/cloud/shared/idprovider/hydra_fake_test.go @@ -19,67 +19,79 @@ package idprovider import ( - "errors" + "context" + "net/http" - hydraAdmin "github.com/ory/hydra-client-go/client/admin" - hydraModels "github.com/ory/hydra-client-go/models" + hydra "github.com/ory/hydra-client-go/v2" ) // Implements the hydraAdminClientService interface. type fakeHydraAdminClient struct { + hydra.OAuth2API redirect string consentChallenge string oauthClientID string - getConsentRequestFn *func(params *hydraAdmin.GetConsentRequestParams) (*hydraAdmin.GetConsentRequestOK, error) - acceptConsentRequestFn *func(params *hydraAdmin.AcceptConsentRequestParams) (*hydraAdmin.AcceptConsentRequestOK, error) - acceptLoginRequestFn *func(params *hydraAdmin.AcceptLoginRequestParams) (*hydraAdmin.AcceptLoginRequestOK, error) - introspectOAuth2TokenFn *func(params *hydraAdmin.IntrospectOAuth2TokenParams) (*hydraAdmin.IntrospectOAuth2TokenOK, error) + getConsentRequestFn *func(params *hydra.OAuth2APIGetOAuth2ConsentRequestRequest) (*hydra.OAuth2ConsentRequest, *http.Response, error) + acceptConsentRequestFn *func(params *hydra.OAuth2APIAcceptOAuth2ConsentRequestRequest) (*hydra.OAuth2RedirectTo, *http.Response, error) + acceptLoginRequestFn *func(params *hydra.OAuth2APIAcceptOAuth2LoginRequestRequest) (*hydra.OAuth2RedirectTo, *http.Response, error) + introspectOAuth2TokenFn *func(req *hydra.OAuth2APIIntrospectOAuth2TokenRequest) (*hydra.IntrospectedOAuth2Token, *http.Response, error) } -func (ha *fakeHydraAdminClient) AcceptConsentRequest(params *hydraAdmin.AcceptConsentRequestParams) (*hydraAdmin.AcceptConsentRequestOK, error) { - if ha.acceptConsentRequestFn != nil { - return (*ha.acceptConsentRequestFn)(params) +func (ha *fakeHydraAdminClient) AcceptOAuth2LoginRequest(ctx context.Context) hydra.OAuth2APIAcceptOAuth2LoginRequestRequest { + return hydra.OAuth2APIAcceptOAuth2LoginRequestRequest{ + ApiService: ha, } - - return &hydraAdmin.AcceptConsentRequestOK{ - Payload: &hydraModels.CompletedRequest{ - RedirectTo: &ha.redirect, - }, - }, nil } -func (ha *fakeHydraAdminClient) AcceptLoginRequest(params *hydraAdmin.AcceptLoginRequestParams) (*hydraAdmin.AcceptLoginRequestOK, error) { +func (ha *fakeHydraAdminClient) AcceptOAuth2LoginRequestExecute(r hydra.OAuth2APIAcceptOAuth2LoginRequestRequest) (*hydra.OAuth2RedirectTo, *http.Response, error) { if ha.acceptLoginRequestFn != nil { - return (*ha.acceptLoginRequestFn)(params) + return (*ha.acceptLoginRequestFn)(&r) } - return &hydraAdmin.AcceptLoginRequestOK{ - Payload: &hydraModels.CompletedRequest{ - RedirectTo: &ha.redirect, - }, - }, nil + + return &hydra.OAuth2RedirectTo{ + RedirectTo: ha.redirect, + }, nil, nil } -func (ha *fakeHydraAdminClient) IntrospectOAuth2Token(params *hydraAdmin.IntrospectOAuth2TokenParams) (*hydraAdmin.IntrospectOAuth2TokenOK, error) { - if ha.introspectOAuth2TokenFn == nil { - return nil, errors.New("not implemented") +func (ha *fakeHydraAdminClient) AcceptOAuth2ConsentRequest(ctx context.Context) hydra.OAuth2APIAcceptOAuth2ConsentRequestRequest { + return hydra.OAuth2APIAcceptOAuth2ConsentRequestRequest{ + ApiService: ha, } +} - return (*ha.introspectOAuth2TokenFn)(params) +func (ha *fakeHydraAdminClient) AcceptOAuth2ConsentRequestExecute(params hydra.OAuth2APIAcceptOAuth2ConsentRequestRequest) (*hydra.OAuth2RedirectTo, *http.Response, error) { + if ha.acceptConsentRequestFn != nil { + return (*ha.acceptConsentRequestFn)(¶ms) + } + + return &hydra.OAuth2RedirectTo{ + RedirectTo: ha.redirect, + }, nil, nil +} + +func (ha *fakeHydraAdminClient) IntrospectOAuth2Token(context.Context) hydra.OAuth2APIIntrospectOAuth2TokenRequest { + return hydra.OAuth2APIIntrospectOAuth2TokenRequest{ + ApiService: ha, + } +} + +func (ha *fakeHydraAdminClient) GetOAuth2ConsentRequest(context.Context) hydra.OAuth2APIGetOAuth2ConsentRequestRequest { + return hydra.OAuth2APIGetOAuth2ConsentRequestRequest{ + ApiService: ha, + } } -func (ha *fakeHydraAdminClient) GetConsentRequest(params *hydraAdmin.GetConsentRequestParams) (*hydraAdmin.GetConsentRequestOK, error) { +func (ha *fakeHydraAdminClient) GetOAuth2ConsentRequestExecute(params hydra.OAuth2APIGetOAuth2ConsentRequestRequest) (*hydra.OAuth2ConsentRequest, *http.Response, error) { if ha.getConsentRequestFn != nil { - return (*ha.getConsentRequestFn)(params) + return (*ha.getConsentRequestFn)(¶ms) } - return &hydraAdmin.GetConsentRequestOK{ - Payload: &hydraModels.ConsentRequest{ - Client: &hydraModels.OAuth2Client{ - ClientID: ha.oauthClientID, - }, - RequestedScope: []string{}, - RequestedAccessTokenAudience: []string{}, - Challenge: &ha.consentChallenge, + return &hydra.OAuth2ConsentRequest{ + LoginChallenge: &ha.consentChallenge, + RequestedScope: []string{}, + RequestedAccessTokenAudience: []string{}, + Client: &hydra.OAuth2Client{ + ClientId: &ha.oauthClientID, }, - }, nil + }, nil, nil } diff --git a/src/cloud/shared/idprovider/kratos_fake_test.go b/src/cloud/shared/idprovider/kratos_fake_test.go index a2fbb8c4c3f..06d4ea885ba 100644 --- a/src/cloud/shared/idprovider/kratos_fake_test.go +++ b/src/cloud/shared/idprovider/kratos_fake_test.go @@ -26,46 +26,52 @@ import ( ) type kratosFakeAPI struct { - kratos.V0alpha2Api - + kratos.FrontendAPI + kratos.IdentityAPI userID string recoveryLink string } -func (k kratosFakeAPI) ToSession(ctx context.Context) kratos.V0alpha2ApiApiToSessionRequest { - return kratos.V0alpha2ApiApiToSessionRequest{ +func (k kratosFakeAPI) ToSession(ctx context.Context) kratos.FrontendAPIToSessionRequest { + return kratos.FrontendAPIToSessionRequest{ ApiService: k, } } -func (k kratosFakeAPI) ToSessionExecute(r kratos.V0alpha2ApiApiToSessionRequest) (*kratos.Session, *http.Response, error) { +func (k kratosFakeAPI) ToSessionExecute(r kratos.FrontendAPIToSessionRequest) (*kratos.Session, *http.Response, error) { return &kratos.Session{ - Identity: kratos.Identity{ + Identity: &kratos.Identity{ Id: k.userID, }, }, nil, nil } -func (k kratosFakeAPI) AdminCreateIdentity(ctx context.Context) kratos.V0alpha2ApiApiAdminCreateIdentityRequest { - return kratos.V0alpha2ApiApiAdminCreateIdentityRequest{ +func (k kratosFakeAPI) CreateIdentity(context.Context) kratos.IdentityAPICreateIdentityRequest { + return kratos.IdentityAPICreateIdentityRequest{ ApiService: k, } } -func (k kratosFakeAPI) AdminCreateIdentityExecute(r kratos.V0alpha2ApiApiAdminCreateIdentityRequest) (*kratos.Identity, *http.Response, error) { +func (k kratosFakeAPI) CreateIdentityExecute(r kratos.IdentityAPICreateIdentityRequest) (*kratos.Identity, *http.Response, error) { return &kratos.Identity{ Id: k.userID, }, nil, nil } -func (k kratosFakeAPI) AdminCreateSelfServiceRecoveryLink(ctx context.Context) kratos.V0alpha2ApiApiAdminCreateSelfServiceRecoveryLinkRequest { - return kratos.V0alpha2ApiApiAdminCreateSelfServiceRecoveryLinkRequest{ +func (k kratosFakeAPI) GetIdentity(context.Context, string) kratos.IdentityAPIGetIdentityRequest { + return kratos.IdentityAPIGetIdentityRequest{ + ApiService: k, + } +} + +func (k kratosFakeAPI) CreateRecoveryLinkForIdentity(context.Context) kratos.IdentityAPICreateRecoveryLinkForIdentityRequest { + return kratos.IdentityAPICreateRecoveryLinkForIdentityRequest{ ApiService: k, } } -func (k kratosFakeAPI) AdminCreateSelfServiceRecoveryLinkExecute(r kratos.V0alpha2ApiApiAdminCreateSelfServiceRecoveryLinkRequest) (*kratos.SelfServiceRecoveryLink, *http.Response, error) { - return &kratos.SelfServiceRecoveryLink{ +func (k kratosFakeAPI) CreateRecoveryLinkForIdentityExecute(r kratos.IdentityAPICreateRecoveryLinkForIdentityRequest) (*kratos.RecoveryLinkForIdentity, *http.Response, error) { + return &kratos.RecoveryLinkForIdentity{ RecoveryLink: k.recoveryLink, }, nil, nil } diff --git a/src/ui/package.json b/src/ui/package.json index 11798ecec1e..836d7eb2b77 100644 --- a/src/ui/package.json +++ b/src/ui/package.json @@ -93,7 +93,7 @@ "@mui/styles": "^5.1.0", "@mui/system": "^5.1.0", "@mui/utils": "^5.4.4", - "@ory/kratos-client": "^v0.10.1", + "@ory/kratos-client": "^1.3.8", "announcekit-react": "^3.1.1", "apollo3-cache-persist": "^0.9.1", "app": "link:./src", diff --git a/src/ui/src/pages/auth/hydra-oauth-provider.ts b/src/ui/src/pages/auth/hydra-oauth-provider.ts index 5f83ecfa7df..cc6c0651425 100644 --- a/src/ui/src/pages/auth/hydra-oauth-provider.ts +++ b/src/ui/src/pages/auth/hydra-oauth-provider.ts @@ -20,7 +20,7 @@ import type * as React from 'react'; import { UiNode, UiNodeAttributes, UiNodeGroupEnum, UiNodeInputAttributes, - UiNodeTypeEnum, V0alpha2ApiFactory, + UiNodeTypeEnum, FrontendApiFactory, } from '@ory/kratos-client'; import { UserManager } from 'oidc-client'; import * as QueryString from 'query-string'; @@ -35,7 +35,7 @@ import { CallbackArgs, getSignupArgs, getLoginArgs } from './callback-url'; export const PasswordError = new Error('Kratos identity server error: Password method not found in flows.'); export const FlowIDError = new Error('Auth server requires a flow parameter in the query string, but none were found.'); -const kratosClient = V0alpha2ApiFactory(null, '/oauth/kratos'); +const kratosClient = FrontendApiFactory(null, '/oauth/kratos'); // Renders a form with an error and no fields. const displayErrorFormStructure = (error: Error): FormStructure => ({ @@ -50,7 +50,7 @@ const displayErrorFormStructure = (error: Error): FormStructure => ({ }, }); -function isInputAttributes(attr: UiNodeAttributes): attr is UiNodeInputAttributes { +function isInputAttributes(attr: UiNodeAttributes): attr is Extract { return attr.node_type === UiNodeTypeEnum.Input; } @@ -141,7 +141,7 @@ export const HydraClient = { if (flow == null) { return displayErrorFormStructure(FlowIDError); } - const { data } = await kratosClient.getSelfServiceLoginFlow(flow); + const { data } = await kratosClient.getLoginFlow({ id: flow }); return { action: data.ui.action, @@ -161,7 +161,7 @@ export const HydraClient = { if (flow == null) { return displayErrorFormStructure(FlowIDError); } - const { data } = await kratosClient.getSelfServiceSettingsFlow(flow); + const { data } = await kratosClient.getSettingsFlow({ id: flow }); return { action: data.ui.action, @@ -181,7 +181,7 @@ export const HydraClient = { if (error == null) { return displayErrorFormStructure(new Error('server error')); } - const { data } = await kratosClient.getSelfServiceError(error); + const { data } = await kratosClient.getFlowError({ id: error }); return displayErrorFormStructure(new Error(JSON.stringify(data))); }, diff --git a/src/ui/yarn.lock b/src/ui/yarn.lock index 9d3f45fa7f6..6f99ed5d723 100644 --- a/src/ui/yarn.lock +++ b/src/ui/yarn.lock @@ -2733,12 +2733,12 @@ __metadata: languageName: node linkType: hard -"@ory/kratos-client@npm:^v0.10.1": - version: 0.10.1 - resolution: "@ory/kratos-client@npm:0.10.1" +"@ory/kratos-client@npm:^1.3.8": + version: 1.3.8 + resolution: "@ory/kratos-client@npm:1.3.8" dependencies: - axios: ^0.21.4 - checksum: 1c2283629904be0a8ab91a9b7e6c91c277e10f892bbe47a39eb9cbf6940b344477473f16dc93f7b12b265727b8fa033fd8a64bfd1f560179497c4b6ea1146b8d + axios: ^1.6.1 + checksum: 46a49b5ac8c556c9727997e9e8adb049d06efec13af74606b526760ff58de02eb86515bac724c7995aaa69ce800ad4af4adfdc9021dcbf708c0c4bf8e0cbf215 languageName: node linkType: hard @@ -2763,7 +2763,7 @@ __metadata: "@mui/styles": ^5.1.0 "@mui/system": ^5.1.0 "@mui/utils": ^5.4.4 - "@ory/kratos-client": ^v0.10.1 + "@ory/kratos-client": ^1.3.8 "@testing-library/react": ^13.2.0 "@testing-library/react-hooks": ^8.0.0 "@types/jest": ^27.0.2 @@ -4658,6 +4658,17 @@ __metadata: languageName: node linkType: hard +"axios@npm:^1.6.1": + version: 1.11.0 + resolution: "axios@npm:1.11.0" + dependencies: + follow-redirects: ^1.15.6 + form-data: ^4.0.4 + proxy-from-env: ^1.1.0 + checksum: 0a33dc600b588bfd3111b198d5985527ed89f722817455d7cdb66c1d055e5f8859cc2bebb7320888957fc8458ebe77d5f83af02af9cd260217c91c4e92b6dfb6 + languageName: node + linkType: hard + "b4a@npm:^1.6.4": version: 1.6.4 resolution: "b4a@npm:1.6.4" @@ -6998,6 +7009,18 @@ __metadata: languageName: node linkType: hard +"es-set-tostringtag@npm:^2.1.0": + version: 2.1.0 + resolution: "es-set-tostringtag@npm:2.1.0" + dependencies: + es-errors: ^1.3.0 + get-intrinsic: ^1.2.6 + has-tostringtag: ^1.0.2 + hasown: ^2.0.2 + checksum: 789f35de4be3dc8d11fdcb91bc26af4ae3e6d602caa93299a8c45cf05d36cc5081454ae2a6d3afa09cceca214b76c046e4f8151e092e6fc7feeb5efb9e794fc6 + languageName: node + linkType: hard + "es-shim-unscopables@npm:^1.0.0": version: 1.0.0 resolution: "es-shim-unscopables@npm:1.0.0" @@ -8119,6 +8142,16 @@ __metadata: languageName: node linkType: hard +"follow-redirects@npm:^1.15.6": + version: 1.15.9 + resolution: "follow-redirects@npm:1.15.9" + peerDependenciesMeta: + debug: + optional: true + checksum: 859e2bacc7a54506f2bf9aacb10d165df78c8c1b0ceb8023f966621b233717dab56e8d08baadc3ad3b9db58af290413d585c999694b7c146aaf2616340c3d2a6 + languageName: node + linkType: hard + "for-each@npm:^0.3.3": version: 0.3.3 resolution: "for-each@npm:0.3.3" @@ -8153,6 +8186,19 @@ __metadata: languageName: node linkType: hard +"form-data@npm:^4.0.4": + version: 4.0.4 + resolution: "form-data@npm:4.0.4" + dependencies: + asynckit: ^0.4.0 + combined-stream: ^1.0.8 + es-set-tostringtag: ^2.1.0 + hasown: ^2.0.2 + mime-types: ^2.1.12 + checksum: 9b7788836df9fa5a6999e0c02515b001946b2a868cfe53f026c69e2c537a2ff9fbfb8e9d2b678744628f3dc7a2d6e14e4e45dfaf68aa6239727f0bdb8ce0abf2 + languageName: node + linkType: hard + "form-data@npm:~2.3.2": version: 2.3.3 resolution: "form-data@npm:2.3.3" @@ -8741,6 +8787,15 @@ __metadata: languageName: node linkType: hard +"has-tostringtag@npm:^1.0.2": + version: 1.0.2 + resolution: "has-tostringtag@npm:1.0.2" + dependencies: + has-symbols: ^1.0.3 + checksum: 999d60bb753ad714356b2c6c87b7fb74f32463b8426e159397da4bde5bca7e598ab1073f4d8d4deafac297f2eb311484cd177af242776bf05f0d11565680468d + languageName: node + linkType: hard + "has-unicode@npm:^2.0.0, has-unicode@npm:^2.0.1": version: 2.0.1 resolution: "has-unicode@npm:2.0.1" @@ -12692,6 +12747,13 @@ __metadata: languageName: node linkType: hard +"proxy-from-env@npm:^1.1.0": + version: 1.1.0 + resolution: "proxy-from-env@npm:1.1.0" + checksum: ed7fcc2ba0a33404958e34d95d18638249a68c430e30fcb6c478497d72739ba64ce9810a24f53a7d921d0c065e5b78e3822759800698167256b04659366ca4d4 + languageName: node + linkType: hard + "psl@npm:^1.1.33": version: 1.8.0 resolution: "psl@npm:1.8.0" diff --git a/tools/docker/Makefile b/tools/docker/Makefile index 1eae029b058..3bf7f0abb5a 100644 --- a/tools/docker/Makefile +++ b/tools/docker/Makefile @@ -121,9 +121,12 @@ nats_image_tag := "ghcr.io/pixie-io/nats:$(NATS_IMAGE_VERSION)-scratch" ## Ory image parameters. KRATOS_IMAGE_VERSION := 1.3.1 -kratos_image_tag := "ghcr.io/pixie-io/kratos:$(KRATOS_IMAGE_VERSION)-scratch" +KRATOS_IMAGE_REV := pl1 +kratos_image_tag := "ghcr.io/pixie-io/kratos:$(KRATOS_IMAGE_VERSION)-$(KRATOS_IMAGE_REV)" HYDRA_IMAGE_VERSION := 2.3.0 -hydra_image_tag := "ghcr.io/pixie-io/hydra:$(HYDRA_IMAGE_VERSION)-scratch" +HYDRA_IMAGE_REV := pl1 +hydra_image_tag := "ghcr.io/pixie-io/hydra:$(HYDRA_IMAGE_VERSION)-$(HYDRA_IMAGE_REV)" +hydra_alpine_image_tag := "ghcr.io/pixie-io/hydra:$(HYDRA_IMAGE_VERSION)-alpine-$(HYDRA_IMAGE_REV)" ## Copybara image parameters. COPYBARA_IMAGE_VERSION := 20210420 @@ -297,8 +300,16 @@ build_and_upload_hydra_image: --platform linux/amd64,linux/arm64 \ --build-arg=HYDRA_VERSION="v$(HYDRA_IMAGE_VERSION)" \ --build-arg=BUILD_DATE=$(shell date -u +"%Y-%m-%dT%H:%M:%SZ") \ + --target=distroless \ -t $(hydra_image_tag) \ --push + $(DOCKER) buildx build hydra_image \ + --platform linux/amd64,linux/arm64 \ + --build-arg=HYDRA_VERSION="v$(HYDRA_IMAGE_VERSION)" \ + --build-arg=BUILD_DATE=$(shell date -u +"%Y-%m-%dT%H:%M:%SZ") \ + --target=alpine \ + -t $(hydra_alpine_image_tag) \ + --push .PHONY: build_and_upload_copybara_image build_and_upload_copybara_image: diff --git a/tools/docker/hydra_image/Dockerfile b/tools/docker/hydra_image/Dockerfile index b4c9f95d12b..8bba6fc4975 100644 --- a/tools/docker/hydra_image/Dockerfile +++ b/tools/docker/hydra_image/Dockerfile @@ -14,7 +14,7 @@ # # SPDX-License-Identifier: Apache-2.0 -FROM --platform=$BUILDPLATFORM golang:1.24-alpine@sha256:9fadeb603e14f1f3e08bdbec6681fa14446053c498a554f3e57260bf892c487e AS build +FROM --platform=$BUILDPLATFORM golang:1.24-alpine@sha256:c8c5f95d64aa79b6547f3b626eb84b16a7ce18a139e3e9ca19a8c078b85ba80d AS build ARG TARGETOS TARGETARCH ARG HYDRA_VERSION @@ -44,7 +44,16 @@ RUN go get golang.org/x/crypto@v0.38.0 RUN go build -ldflags="-extldflags=-static" -tags sqlite_omit_load_extension -o /usr/bin/hydra -FROM gcr.io/distroless/static-debian12:nonroot@sha256:627d6c5a23ad24e6bdff827f16c7b60e0289029b0c79e9f7ccd54ae3279fb45f +FROM gcr.io/distroless/static-debian12:nonroot@sha256:627d6c5a23ad24e6bdff827f16c7b60e0289029b0c79e9f7ccd54ae3279fb45f AS distroless + +COPY --from=build /usr/bin/hydra /usr/bin/hydra + +EXPOSE 4444 4445 + +ENTRYPOINT ["hydra"] +CMD ["serve", "all"] + +FROM alpine:3.22.1@sha256:4bcff63911fcb4448bd4fdacec207030997caf25e9bea4045fa6c8c44de311d1 AS alpine COPY --from=build /usr/bin/hydra /usr/bin/hydra diff --git a/tools/docker/kratos_image/Dockerfile b/tools/docker/kratos_image/Dockerfile index af28cd68d7f..a06312af89e 100644 --- a/tools/docker/kratos_image/Dockerfile +++ b/tools/docker/kratos_image/Dockerfile @@ -14,7 +14,7 @@ # # SPDX-License-Identifier: Apache-2.0 -FROM --platform=$BUILDPLATFORM golang:1.24-alpine@sha256:9fadeb603e14f1f3e08bdbec6681fa14446053c498a554f3e57260bf892c487e AS build +FROM --platform=$BUILDPLATFORM golang:1.24-alpine@sha256:c8c5f95d64aa79b6547f3b626eb84b16a7ce18a139e3e9ca19a8c078b85ba80d AS build ARG TARGETOS TARGETARCH ARG KRATOS_VERSION