Documentation
¶
Overview ¶
Package authkit is the root of the goravel-authkit package: a batteries-included, session-based authentication + user-management module for Goravel apps.
Install is a single step:
./artisan package:install github.com/freshost/goravel-authkit
which registers this ServiceProvider and writes the config files (config/auth.go, config/authkit.go, config/hashing.go). The provider registers the migrations and the artisan commands itself; the app mounts the HTTP routes from its own routing callback with one line:
authkitroutes "github.com/freshost/goravel-authkit/routes"
// inside foundation.Setup().WithRouting(func(){ ... })
authkitroutes.Register(facades.Route(), authkitroutes.OptionsFromConfig())
Routes are registered app-side (not in the provider) because Goravel rebuilds the HTTP engine when global middleware is set — which happens AFTER providers boot — so any routes a provider registers in Boot are discarded. The routing callback runs after that rebuild, so routes registered there survive. The app must also enable session middleware globally (the package is cookie-based):
WithMiddleware(func(h configuration.Middleware){ h.Append(sessionmiddleware.StartSession()) })
See the README and docs/installation.md.
Index ¶
- Constants
- Variables
- type Authkit
- func (a *Authkit) Authenticate(ctx context.Context, email, password string) (*models.User, error)
- func (a *Authkit) ChangePassword(ctx context.Context, id uuid.UUID, currentPassword, newPassword string) error
- func (a *Authkit) ConfirmTwoFactor(ctx context.Context, id uuid.UUID, code string) ([]string, error)
- func (a *Authkit) CreateUser(ctx context.Context, email, name, password, role string) (*models.User, error)
- func (a *Authkit) DeleteUser(ctx context.Context, id uuid.UUID) error
- func (a *Authkit) DisableTwoFactor(ctx context.Context, id uuid.UUID) error
- func (a *Authkit) EnableTwoFactor(ctx context.Context, id uuid.UUID) (secret, otpauthURL string, err error)
- func (a *Authkit) GetUser(ctx context.Context, id uuid.UUID) (*models.User, error)
- func (a *Authkit) ListUsers(ctx context.Context) ([]models.User, error)
- func (a *Authkit) SetPassword(ctx context.Context, id uuid.UUID, newPassword string) (*models.User, error)
- func (a *Authkit) VerifyTwoFactor(ctx context.Context, id uuid.UUID, code string) (bool, error)
- type ServiceProvider
Constants ¶
const Binding = "authkit"
Binding is the service-container key under which the Authkit service is bound; the facades.Authkit() accessor resolves it.
const Name = "Authkit"
Name is the human-readable module name.
const PackageName = "github.com/freshost/goravel-authkit"
PackageName is the module path, used as the first argument to Publishes.
Variables ¶
var App foundation.Application
App holds the application instance, used by the facade to resolve the service.
Functions ¶
This section is empty.
Types ¶
type Authkit ¶
type Authkit struct {
// contains filtered or unexported fields
}
Authkit is the concrete implementation behind facades.Authkit(). It wraps the auth + user-management + two-factor services so app code can drive them programmatically.
func NewAuthkit ¶
func NewAuthkit(app foundation.Application) *Authkit
NewAuthkit builds the service from the application (read lazily at resolve time, so config is available).
func (*Authkit) Authenticate ¶
func (*Authkit) ChangePassword ¶
func (*Authkit) ConfirmTwoFactor ¶
func (*Authkit) CreateUser ¶
func (*Authkit) DisableTwoFactor ¶
func (*Authkit) EnableTwoFactor ¶
func (*Authkit) SetPassword ¶
type ServiceProvider ¶
type ServiceProvider struct{}
ServiceProvider registers the goravel-authkit migrations, commands, and publishable config. HTTP routes are mounted app-side via routes.Register (see the package doc) because provider-registered routes do not survive the engine rebuild that global middleware triggers.
func (*ServiceProvider) Boot ¶
func (r *ServiceProvider) Boot(app foundation.Application)
Boot registers the package migrations, artisan commands, and the publishable config (for `vendor:publish`). HTTP routes are NOT registered here — the app calls routes.Register from its routing callback (see the package doc).
func (*ServiceProvider) Register ¶
func (r *ServiceProvider) Register(app foundation.Application)
Register stores the application instance and binds the Authkit service so facades.Authkit() (and any app code) can resolve it.
func (*ServiceProvider) Relationship ¶
func (r *ServiceProvider) Relationship() binding.Relationship
Relationship declares the framework services the package depends on so it boots after them. It registers no container bindings of its own.
Directories
¶
| Path | Synopsis |
|---|---|
|
Package commands holds the goravel-authkit artisan commands.
|
Package commands holds the goravel-authkit artisan commands. |
|
Package contracts defines the public interface exposed by the goravel-authkit facade.
|
Package contracts defines the public interface exposed by the goravel-authkit facade. |
|
Package facades exposes the goravel-authkit programmatic API as a Goravel facade.
|
Package facades exposes the goravel-authkit programmatic API as a Goravel facade. |
|
Package helpers holds small HTTP utilities shared by the goravel-authkit controllers and middleware: route-param parsing, the authenticated-user context key, and the session-regeneration workaround.
|
Package helpers holds small HTTP utilities shared by the goravel-authkit controllers and middleware: route-param parsing, the authenticated-user context key, and the session-regeneration workaround. |
|
http
|
|
|
controllers
Package controllers holds the goravel-authkit HTTP controllers: the auth endpoints (login/logout/me/change-password) and the admin user-management CRUD.
|
Package controllers holds the goravel-authkit HTTP controllers: the auth endpoints (login/logout/me/change-password) and the admin user-management CRUD. |
|
middleware
Package middleware holds the goravel-authkit HTTP middleware: the session guard (Authenticated) and the login rate-limiter (RateLimitAuth).
|
Package middleware holds the goravel-authkit HTTP middleware: the session guard (Authenticated) and the login rate-limiter (RateLimitAuth). |
|
responses
Package responses holds the request/response DTOs for the goravel-authkit HTTP endpoints.
|
Package responses holds the request/response DTOs for the goravel-authkit HTTP endpoints. |
|
Package migrations holds the code-based migrations owned by goravel-authkit.
|
Package migrations holds the code-based migrations owned by goravel-authkit. |
|
Package models holds the canonical GORM entities owned by the goravel-authkit package: the single User table backing authentication and the AuditLog table.
|
Package models holds the canonical GORM entities owned by the goravel-authkit package: the single User table backing authentication and the AuditLog table. |
|
Package repositories owns the GORM data access for goravel-authkit.
|
Package repositories owns the GORM data access for goravel-authkit. |
|
Package routes registers the goravel-authkit HTTP endpoints onto a consuming app's router.
|
Package routes registers the goravel-authkit HTTP endpoints onto a consuming app's router. |
|
Package services holds the goravel-authkit business logic: credential verification, password changes with other-session invalidation, user management, and audit writes.
|
Package services holds the goravel-authkit business logic: credential verification, password changes with other-session invalidation, user management, and audit writes. |
|
Command setup implements `./artisan package:install github.com/freshost/goravel-authkit`.
|
Command setup implements `./artisan package:install github.com/freshost/goravel-authkit`. |
|
config
This file is published into the consuming app's config/ directory by `./artisan package:install github.com/freshost/goravel-authkit`.
|
This file is published into the consuming app's config/ directory by `./artisan package:install github.com/freshost/goravel-authkit`. |