Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save tibbiyelininja/f875cde98221827bb762849a520486f5 to your computer and use it in GitHub Desktop.
Save tibbiyelininja/f875cde98221827bb762849a520486f5 to your computer and use it in GitHub Desktop.
Echo's middleware for Firebase Authentication
package middleware
import (
"context"
"strings"
"github.com/labstack/echo/v4"
firebase "firebase.google.com/go"
"google.golang.org/api/option"
)
func Auth() echo.MiddlewareFunc {
return auth
}
func auth(next echo.HandlerFunc) echo.HandlerFunc {
return func(c echo.Context) error {
opt := option.WithCredentialsFile("firebase_secret_key.json")
app, err := firebase.NewApp(context.Background(), nil, opt)
if err != nil {
return err
}
client, err := app.Auth(context.Background())
if err != nil {
return err
}
auth := c.Request().Header.Get("Authorization")
idToken := strings.Replace(auth, "Bearer ", "", 1)
token, err := client.VerifyIDToken(context.Background(), idToken)
if err != nil {
return err
}
c.Set("token", token)
return next(c)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment