Authenticate your endpoints with Firebase Authentication .
gofiberfirebase auth is inspired by npm package express-firebase-auth .
This package design to work with Go Fiber Framework (Express inspired go framework)
In your gofiber app
$ go get -u github.com/gofiber/fiber/v2
$ go get gofiberfirebaseauth
In your app import the middleware
import (
"github.com/gofiber/fiber/v2"
"github.com/sacsand/gofiberfirebaseauth"
)
Provide a minimal config
// Provide a minimal config
app.Use(gofiberfirebaseauth.New(Config{
FirebaseApp: FirebaseApp,
}))
Or extend your config for customization
// Or extend your config for customization
app.Use(gofiberfirebaseauth.New(Config{
// New firebase authntication object
// Mandatory. Default: nil
FirebaseApp: FirebaseApp
// Ignore urls array - Format = "{METHOD} follwed by :: then /{route}"
// Optional. Default: nil
IgnoreUrls : []string{"GET::/login","POST::/create-user"}
// Skip Email Check.
// Optional. Default: nil
CheckEmailVerified : true
// Ignore email verification for these routes
// Optional. Default: nil
CheckEmailVerifiedIgnoredUrls : []string{"GET::/login","POST::/create-user"}
// Authorizer defines a function which authenticate the Authorization token and return
the authenticated token
// Optional. Default: nil
Authorizer: func(IDToken string, CurrentURL string) (*auth.Token, error){
// create your own authentication here
// this retuen firbase id token
return token, nil
},
// Context key to store user information from the token into context.
// Optional. Default: "user".
ContextKey : "authUser"
}))
All available configuration
Option
Value
Config type
FirebaseApp
(Note1) An initialized firebase app. Refer Firebase setup
FirebaseApp *firebase.App
IgnoredUrls
(Note1)(Optional) An array of URLs where you need to skip the authentication.
IgnoreUrls []string
CheckEmailVerified
(Optional) (Default: false) If set to true, only users with a verified email will be allowed access.
CheckEmailVerified bool
CheckEmailVerifiedIgnoredUrls
(Optional) An array of URLs where you need to skip the email verified check.
CheckEmailVerifiedIgnoredUrls []string
Authorizer
(Optional), Default: nil , Authorizer defines a function which authenticate the Authorization token and return the authenticated token. Use this if you want to oevride token authorization
Authorizer func(string, string) (*auth.Token, error)
ContextKey
(Optional), Default: "user" , Context key to store user information from the token into context.
ContextKey string
SuccessHandler
(Optional), Default:nil, SuccessHandler defines a function which is executed for a valid token.
SuccessHandler fiber.Handler
ErrorHandler
(Optional), Default:nil, ErrorHandler defines a function which is executed for a invalid token.
ErrorHandler fiber.ErrorHandler
You must provide already initialized FirebaseApp
app. You cannot initialize two firebase apps.
This package adds the user
object returned by firebase to context key user
. You can use that inside your functions. (you have option to configure the ContextKey. Check the configarstion available table )
user object type
type user struct{
email, emailVerified bool
userID string
}
Ignore url accept array of string. URl format should follow below format
{METHOD}::/{url}
ex:
GET::/login
POST::/login
IgnoreUrl support only routes without params or querry . (PR are welcome).To ignore urls with param or quarry, declare the routes before the middleware declration.
Clone the repo and set your firebase credentials in your .env file
example::
SERVICE_ACCOUNT_JSON = "path to service account credential json"
WEB_API_KEY =
TEST_USER_EMAIL = ""
TEST_USER_PASSWORD = ""
We use SemVer for versioning. For the versions available, see the link to tags on this repository.
Uber stryle guide
Version | Tag | Published |
---|---|---|
v1.2.1-alpha | 1yr ago | |
v1.3.2 | 1yr ago | |
v1.3.1-beta2 | 1yr ago | |
v1.3.0-beta | 1yr ago |