2025-01-19 12:04:25 +00:00
|
|
|
package authContext
|
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
2025-01-25 19:49:57 +00:00
|
|
|
"github.com/1f349/lavender/auth/login-process"
|
2025-01-19 12:04:25 +00:00
|
|
|
"github.com/1f349/lavender/database"
|
|
|
|
"net/http"
|
|
|
|
)
|
|
|
|
|
2025-01-25 19:49:57 +00:00
|
|
|
func NewTemplateContext(req *http.Request, user *database.User) *BaseTemplateContext {
|
2025-01-19 12:04:25 +00:00
|
|
|
return &BaseTemplateContext{
|
|
|
|
req: req,
|
|
|
|
user: user,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
type TemplateContext interface {
|
|
|
|
Context() context.Context
|
|
|
|
Request() *http.Request
|
|
|
|
User() *database.User
|
|
|
|
Render(data any)
|
|
|
|
}
|
|
|
|
|
2025-01-25 19:49:57 +00:00
|
|
|
type FormContext interface {
|
|
|
|
Context() context.Context
|
|
|
|
Request() *http.Request
|
|
|
|
User() *database.User
|
|
|
|
SetUser(user *database.User)
|
|
|
|
Render(data any)
|
|
|
|
UpdateSession(data login_process.LoginProcessData)
|
|
|
|
}
|
|
|
|
|
|
|
|
type ButtonContext interface {
|
|
|
|
Context() context.Context
|
|
|
|
Request() *http.Request
|
|
|
|
Render(data any)
|
|
|
|
}
|
|
|
|
|
|
|
|
var _ TemplateContext = &BaseTemplateContext{}
|
|
|
|
|
2025-01-19 12:04:25 +00:00
|
|
|
type BaseTemplateContext struct {
|
|
|
|
req *http.Request
|
|
|
|
user *database.User
|
|
|
|
data any
|
|
|
|
}
|
|
|
|
|
2025-01-25 19:49:57 +00:00
|
|
|
func (t *BaseTemplateContext) Context() context.Context { return t.req.Context() }
|
2025-01-19 12:04:25 +00:00
|
|
|
|
2025-01-25 19:49:57 +00:00
|
|
|
func (t *BaseTemplateContext) Request() *http.Request { return t.req }
|
2025-01-19 12:04:25 +00:00
|
|
|
|
2025-01-25 19:49:57 +00:00
|
|
|
func (t *BaseTemplateContext) User() *database.User { return t.user }
|
2025-01-19 12:04:25 +00:00
|
|
|
|
2025-01-25 19:49:57 +00:00
|
|
|
func (t *BaseTemplateContext) Render(data any) { t.data = data }
|
2025-01-19 12:04:25 +00:00
|
|
|
|
|
|
|
func (t *BaseTemplateContext) Data() any {
|
|
|
|
return t.data
|
|
|
|
}
|