mirror of
https://github.com/Theodor-Springmann-Stiftung/musenalm.git
synced 2025-10-29 01:05:32 +00:00
resetbutton & almanach edit start
This commit is contained in:
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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())
|
||||
}
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user