Skip to content

Plugins

import (
"github.com/go-dev-auth/go-dev-auth/plugins/admin"
"github.com/go-dev-auth/go-dev-auth/plugins/jwt"
"github.com/go-dev-auth/go-dev-auth/plugins/magiclink"
"github.com/go-dev-auth/go-dev-auth/plugins/organization"
"github.com/go-dev-auth/go-dev-auth/plugins/twofactor"
)
godevauth.Config{
Plugins: []godevauth.Plugin{
twofactor.New(),
organization.New(organization.Options{Teams: true}),
admin.New(),
jwt.New(),
magiclink.New(magiclink.Options{
SendMagicLink: func(ctx context.Context, email, url, token string) error {
return mailer.Send(email, "Sign in", url)
},
}),
},
}
PluginWhat it adds
twofactorTOTP, email OTP and backup codes
magiclinkPasswordless email links
organizationOrgs, members, roles, invitations, teams
adminUser management, bans, roles, impersonation
apikeyHashed API keys that authenticate like sessions
jwtEdDSA-signed JWTs + JWKS endpoint
bearerAuthorization-header auth for non-browser clients

Every sign-in path - password, magic link, social, verification auto-login - funnels through one internal SignInUser, so a plugin implementing SignInGuard (two-factor challenges, bans) applies to all of them; picking another sign-in method is not a bypass. SessionGuard additionally re-checks every request, so a ban takes effect immediately rather than at next login.

A plugin implements three methods - ID, Init, Routes - and optionally Schema (tables/columns it needs), Middleware, BeforeRequest/AfterRequest, SignInGuard or SessionGuard. The repository ships a test harness in plugins/plugintest and a guide in docs/writing-a-plugin.md.