package main
import (
"net/http"
"github.com/clerk/clerk-sdk-go/clerk"
)
func main() {
// Create a new Clerk client with your secret key from the Clerk Dashboard
client, _ := clerk.NewClient(`YOUR_SECRET_KEY`)
mux := http.NewServeMux()
injectActiveSession := clerk.WithSession(client)
mux.Handle("/hello", injectActiveSession(helloUserHandler(client)))
http.ListenAndServe(":8080", mux)
}
func helloUserHandler(client clerk.Client) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
ctx := r.Context()
sessClaims, ok := ctx.Value(clerk.ActiveSessionClaims).(*clerk.SessionClaims)
if !ok {
w.WriteHeader(http.StatusUnauthorized)
w.Write([]byte("Unauthorized"))
return
}
user, err := client.Users().Read(sessClaims.Subject)
if err != nil {
panic(err)
}
w.Write([]byte("Welcome " + *user.FirstName))
}
}