resetbutton & almanach edit start

This commit is contained in:
Simon Martens
2025-05-30 19:30:50 +02:00
parent d8e50b27b0
commit 8ea36da40f
28 changed files with 1789 additions and 763 deletions

View File

@@ -68,6 +68,7 @@ type AlmanachResult struct {
EntriesSeries map[string]*dbmodels.REntriesSeries // <- Key is series id
EntriesAgents []*dbmodels.REntriesAgents
ContentsAgents map[string][]*dbmodels.RContentsAgents // <- Key is content id
User *dbmodels.User
Types []string
HasScans bool
@@ -166,6 +167,16 @@ func NewAlmanachResult(app core.App, id string, params BeitraegeFilterParameters
agentsMap[a.Id] = a
}
var user *dbmodels.User
if entry.Editor() != "" {
u, err := dbmodels.Users_ID(app, entry.Editor())
if err == nil {
user = u
} else {
app.Logger().Error("Failed to load user for entry editor", "entry", entry.Id, "error", err)
}
}
ret := &AlmanachResult{
Entry: entry,
Places: places,
@@ -177,6 +188,7 @@ func NewAlmanachResult(app core.App, id string, params BeitraegeFilterParameters
ContentsAgents: caMap,
Types: types,
HasScans: hs,
User: user,
}
ret.Collections()

View File

@@ -125,12 +125,11 @@ func (p *LoginPage) POST(engine *templating.Engine, app core.App) HandleFunc {
return Unauthorized(engine, e, fmt.Errorf("Benuztername oder Passwort falsch. Bitte versuchen Sie es erneut."), data)
}
record, err := app.FindFirstRecordByData(dbmodels.USERS_TABLE, dbmodels.USERS_EMAIL_FIELD, formdata.Username)
if err != nil || !record.ValidatePassword(formdata.Password) {
user, err := dbmodels.Users_Email(app, formdata.Username)
if err != nil || !user.ValidatePassword(formdata.Password) {
return Unauthorized(engine, e, fmt.Errorf("Benuztername oder Passwort falsch. Bitte versuchen Sie es erneut."), data)
}
user := dbmodels.NewUser(record)
if user.Deactivated() {
return Unauthorized(engine, e, fmt.Errorf("Ihr Benutzerkonto ist deaktiviert. Bitte kontaktieren Sie den Administrator."), data)
}
@@ -140,7 +139,7 @@ func (p *LoginPage) POST(engine *templating.Engine, app core.App) HandleFunc {
duration = time.Hour * 24 * 90
}
token, err := dbmodels.CreateSessionToken(app, record.Id, e.RealIP(), e.Request.UserAgent(), formdata.Persistent == "on", duration)
token, err := dbmodels.CreateSessionToken(app, user.Id, e.RealIP(), e.Request.UserAgent(), formdata.Persistent == "on", duration)
if err != nil || token == nil || token.SessionTokenClear == "" {
return engine.Response500(e, err, data)
}

View File

@@ -53,14 +53,13 @@ func Logout(e *core.RequestEvent, app *core.App) {
if err == nil && app != nil {
go func() {
app := *app
record, err := app.FindFirstRecordByData(dbmodels.SESSIONS_TABLE, dbmodels.SESSIONS_TOKEN_FIELD, dbmodels.HashStringSHA256(cookie.Value))
if err == nil && record != nil {
session := dbmodels.NewSession(record)
session, err := dbmodels.Sessions_Token(app, cookie.Value)
if err == nil {
session.SetStatus(dbmodels.MUSENALM_STATUS_VALUES[1])
if err := app.Save(session); err != nil {
app.Logger().Error("Failed to update session status.", "error", err.Error())
}
} else if err != nil {
} else {
app.Logger().Error("Failed to find session record.", "error", err.Error())
}

View File

@@ -64,12 +64,11 @@ func (p *UserEditPage) GET(engine *templating.Engine, app core.App) HandleFunc {
func (p *UserEditPage) getData(app core.App, data map[string]any, e *core.RequestEvent) error {
uid := e.Request.PathValue(UID_PATH_VALUE)
u, err := app.FindRecordById(dbmodels.USERS_TABLE, uid)
user, err := dbmodels.Users_ID(app, uid)
if err != nil {
return fmt.Errorf("Konnte Nutzer nicht finden: %w", err)
}
user := dbmodels.NewUser(u)
fu := user.Fixed()
data["user"] = &fu
@@ -220,11 +219,10 @@ func (p *UserEditPage) POST(engine *templating.Engine, app core.App) HandleFunc
req := templating.NewRequest(e)
user := req.User()
u, err := app.FindRecordById(dbmodels.USERS_TABLE, uid)
user_proxy, err := dbmodels.Users_ID(app, uid)
if err != nil {
return engine.Response404(e, err, nil)
}
user_proxy := dbmodels.NewUser(u)
fu := user_proxy.Fixed()
formdata := struct {

View File

@@ -142,13 +142,11 @@ func (p *UserManagementPage) POSTDeactivate(engine *templating.Engine, app core.
return p.ErrorResponse(engine, e, err)
}
user, err := app.FindRecordById(dbmodels.USERS_TABLE, formdata.User)
u, err := dbmodels.Users_ID(app, formdata.User)
if err != nil {
return p.ErrorResponse(engine, e, fmt.Errorf("Konnte Nutzer nicht finden."))
}
u := dbmodels.NewUser(user)
u.SetDeactivated(true)
if err := app.Save(u); err != nil {
@@ -187,13 +185,11 @@ func (p *UserManagementPage) POSTActivate(engine *templating.Engine, app core.Ap
return p.ErrorResponse(engine, e, err)
}
user, err := app.FindRecordById(dbmodels.USERS_TABLE, formdata.User)
u, err := dbmodels.Users_ID(app, formdata.User)
if err != nil {
return p.ErrorResponse(engine, e, fmt.Errorf("Konnte Nutzer nicht finden."))
}
u := dbmodels.NewUser(user)
u.SetDeactivated(false)
if err := app.Save(u); err != nil {
@@ -232,12 +228,11 @@ func (p *UserManagementPage) POSTLogout(engine *templating.Engine, app core.App)
return p.ErrorResponse(engine, e, err)
}
user, err := app.FindRecordById(dbmodels.USERS_TABLE, formdata.User)
u, err := dbmodels.Users_ID(app, formdata.User)
if err != nil {
return p.ErrorResponse(engine, e, fmt.Errorf("Konnte Nutzer nicht finden."))
}
u := dbmodels.NewUser(user)
DeleteSessionsForUser(app, u.Id)
data := make(map[string]any)