feat(07-03): add avatars, mail templates, and password-change command

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Jakub Zych
2026-09-22 16:43:44 +02:00
parent 5c1f857d54
commit 63d6d049b7
16 changed files with 777 additions and 20 deletions

View File

@@ -11,9 +11,11 @@ import (
"time"
"git.golem15.com/golem15/fonoteka/plugins/golem15/user/classes"
"git.golem15.com/golem15/fonoteka/plugins/golem15/user/console"
"git.golem15.com/golem15/fonoteka/plugins/golem15/user/models"
"git.golem15.com/golem15/fonoteka/plugins/golem15/user/updates"
"git.golem15.com/golem15/summercms/backpack"
"git.golem15.com/golem15/summercms/bonfire"
"git.golem15.com/golem15/summercms/bouncer"
"git.golem15.com/golem15/summercms/pact"
"git.golem15.com/golem15/summercms/party"
@@ -23,19 +25,24 @@ import (
)
var (
_ party.Plugin = (*Plugin)(nil)
_ pact.HasConfig = (*Plugin)(nil)
_ pact.HasMigrations = (*Plugin)(nil)
_ pact.HasMiddleware = (*Plugin)(nil)
_ pact.HasModels = (*Plugin)(nil)
_ pact.HasRoutes = (*Plugin)(nil)
_ surf.BucketProvider = (*Plugin)(nil)
_ bouncer.UserProvider = classes.GormUsers{}
_ party.Plugin = (*Plugin)(nil)
_ pact.HasConfig = (*Plugin)(nil)
_ pact.HasMigrations = (*Plugin)(nil)
_ pact.HasMiddleware = (*Plugin)(nil)
_ pact.HasModels = (*Plugin)(nil)
_ pact.HasRoutes = (*Plugin)(nil)
_ pact.HasMailTemplates = (*Plugin)(nil)
_ pact.HasCommands = (*Plugin)(nil)
_ surf.BucketProvider = (*Plugin)(nil)
_ bouncer.UserProvider = classes.GormUsers{}
)
//go:embed config
var configFS embed.FS
//go:embed views/mail
var mailFS embed.FS
// Plugin is the golem15.user plugin.
type Plugin struct {
app *backpack.App
@@ -153,6 +160,29 @@ func bearerFrom(r *http.Request) string {
func (p *Plugin) ConfigFS() fs.FS { return configFS }
func (p *Plugin) MailTemplatesFS() fs.FS { return mailFS }
func (p *Plugin) MailTemplates() []string {
return []string{
"golem15.user::mail.activate",
"golem15.user::mail.activate-en",
"golem15.user::mail.restore",
"golem15.user::mail.restore-en",
"golem15.user::mail.reactivate",
"golem15.user::mail.reactivate-en",
}
}
func (p *Plugin) MailLayouts() map[string]string {
return map[string]string{
"user": "golem15.user::mail.layouts.user",
}
}
func (p *Plugin) Commands() []bonfire.Command {
return []bonfire.Command{console.RequirePasswordChange(p.app)}
}
func (p *Plugin) Migrations() []*gormigrate.Migration { return updates.All() }
func (p *Plugin) Models() []any { return models.All() }