README.md
This commit is contained in:
parent
0ab597b430
commit
a696b51df2
90
README.md
Normal file
90
README.md
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
# nethttpoidc
|
||||||
|
|
||||||
|
oidc middleware for net/http
|
||||||
|
___
|
||||||
|
|
||||||
|
```go
|
||||||
|
package cmd
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"log"
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"code.icod.de/dalu/exyuql/config"
|
||||||
|
"code.icod.de/dalu/exyuql/graph"
|
||||||
|
"code.icod.de/dalu/nethttpoidc"
|
||||||
|
"code.icod.de/dalu/oidc/options"
|
||||||
|
"entgo.io/contrib/entgql"
|
||||||
|
"github.com/99designs/gqlgen/graphql/handler"
|
||||||
|
"github.com/99designs/gqlgen/graphql/playground"
|
||||||
|
"github.com/MadAppGang/httplog"
|
||||||
|
"github.com/rs/cors"
|
||||||
|
"github.com/spf13/cobra"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
graphqlDebug = false
|
||||||
|
graphqlAddr = "unix:/tmp/exyu.eu-graphql.sock"
|
||||||
|
)
|
||||||
|
|
||||||
|
// graphqlCmd represents the graphql command
|
||||||
|
var graphqlCmd = &cobra.Command{
|
||||||
|
Use: "graphql",
|
||||||
|
Short: "A brief description of your command",
|
||||||
|
RunE: func(cmd *cobra.Command, args []string) error {
|
||||||
|
client := openDB(config.DatabaseUrlDev)
|
||||||
|
if e := client.Schema.Create(
|
||||||
|
context.Background(),
|
||||||
|
); e != nil {
|
||||||
|
log.Fatal("opening ent client", e)
|
||||||
|
}
|
||||||
|
srv := handler.NewDefaultServer(graph.NewSchema(client))
|
||||||
|
srv.Use(entgql.Transactioner{TxOpener: client})
|
||||||
|
|
||||||
|
cfg := config.OidcConfigDev
|
||||||
|
|
||||||
|
oidcHandler := nethttpoidc.New(srv,
|
||||||
|
options.WithIssuer(cfg.Issuer),
|
||||||
|
options.WithRequiredTokenType("JWT"),
|
||||||
|
options.WithRequiredAudience(cfg.Audience),
|
||||||
|
options.IsPermissive(),
|
||||||
|
)
|
||||||
|
|
||||||
|
corsHandler := cors.AllowAll()
|
||||||
|
http.Handle("/", playground.Handler("exyu.eu", "/query"))
|
||||||
|
http.Handle("/query", corsHandler.Handler(httplog.LoggerWithFormatter(httplog.DefaultLogFormatterWithRequestHeader, oidcHandler)))
|
||||||
|
|
||||||
|
return http.ListenAndServe(":8081", nil)
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
rootCmd.AddCommand(graphqlCmd)
|
||||||
|
|
||||||
|
graphqlCmd.Flags().BoolVar(
|
||||||
|
&graphqlDebug,
|
||||||
|
"debug",
|
||||||
|
false,
|
||||||
|
"debug enabled?",
|
||||||
|
)
|
||||||
|
graphqlCmd.Flags().StringVar(
|
||||||
|
&graphqlAddr,
|
||||||
|
"addr",
|
||||||
|
"unix:/tmp/exyu.eu-graphql.sock",
|
||||||
|
"either tcp: or unix: e.g. tcp:localhost:3030 unix:/tmp/listen.sock",
|
||||||
|
)
|
||||||
|
|
||||||
|
// Here you will define your flags and configuration settings.
|
||||||
|
|
||||||
|
// Cobra supports Persistent Flags which will work for this command
|
||||||
|
// and all subcommands, e.g.:
|
||||||
|
// graphqlCmd.PersistentFlags().String("foo", "", "A help for foo")
|
||||||
|
|
||||||
|
// Cobra supports local flags which will only run when this command
|
||||||
|
// is called directly, e.g.:
|
||||||
|
// graphqlCmd.Flags().BoolP("toggle", "t", false, "Help message for toggle")
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user