42 lines
871 B
Go
42 lines
871 B
Go
package api
|
|
|
|
import (
|
|
"net/http"
|
|
"os"
|
|
"strings"
|
|
|
|
"github.com/clerkinc/clerk-sdk-go/clerk"
|
|
"github.com/labstack/echo/v4"
|
|
)
|
|
|
|
func Authed(c echo.Context) error {
|
|
apiKey := os.Getenv("CLERK_SECRET_KEY")
|
|
|
|
client, err := clerk.NewClient(apiKey)
|
|
if err != nil {
|
|
// handle error
|
|
println(err.Error())
|
|
}
|
|
|
|
// get session token from Authorization header
|
|
sessionToken := c.Request().Header.Get("Authorization")
|
|
sessionToken = strings.TrimPrefix(sessionToken, "Bearer ")
|
|
|
|
println(sessionToken)
|
|
|
|
// verify the session
|
|
sessClaims, err := client.VerifyToken(sessionToken)
|
|
if err != nil {
|
|
println(err.Error())
|
|
return c.String(http.StatusUnauthorized, "Unauthorized!")
|
|
}
|
|
|
|
// get the user, and say welcome!
|
|
user, err := client.Users().Read(sessClaims.Claims.Subject)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
return c.String(http.StatusOK, "Welcome "+*user.FirstName)
|
|
|
|
}
|