Show last login and session creation date in current timezone

This commit is contained in:
Frédéric Guillot 2018-03-04 17:04:31 -08:00
parent 5185bf0c7e
commit 609c57332e
6 changed files with 41 additions and 6 deletions

View File

@ -100,6 +100,7 @@ func (c *Controller) Users(ctx *handler.Context, request *handler.Request, respo
return
}
users.UseTimezone(ctx.UserTimezone())
response.JSON().Standard(users)
}
@ -127,6 +128,7 @@ func (c *Controller) UserByID(ctx *handler.Context, request *handler.Request, re
return
}
user.UseTimezone(ctx.UserTimezone())
response.JSON().Standard(user)
}

View File

@ -7,6 +7,8 @@ package model
import (
"errors"
"time"
"github.com/miniflux/miniflux/timezone"
)
// User represents a user in the system.
@ -99,5 +101,19 @@ func (u *User) Merge(override *User) {
}
}
// UseTimezone converts last login date to the given timezone.
func (u *User) UseTimezone(tz string) {
if u.LastLoginAt != nil {
*u.LastLoginAt = timezone.Convert(tz, *u.LastLoginAt)
}
}
// Users represents a list of users.
type Users []*User
// UseTimezone converts last login timestamp of all users to the given timezone.
func (u Users) UseTimezone(tz string) {
for _, user := range u {
user.UseTimezone(tz)
}
}

View File

@ -4,8 +4,12 @@
package model
import "time"
import "fmt"
import (
"fmt"
"time"
"github.com/miniflux/miniflux/timezone"
)
// UserSession represents a user session in the system.
type UserSession struct {
@ -17,9 +21,21 @@ type UserSession struct {
IP string
}
func (s *UserSession) String() string {
return fmt.Sprintf(`ID="%d", UserID="%d", IP="%s", Token="%s"`, s.ID, s.UserID, s.IP, s.Token)
func (u *UserSession) String() string {
return fmt.Sprintf(`ID="%d", UserID="%d", IP="%s", Token="%s"`, u.ID, u.UserID, u.IP, u.Token)
}
// UseTimezone converts creation date to the given timezone.
func (u *UserSession) UseTimezone(tz string) {
u.CreatedAt = timezone.Convert(tz, u.CreatedAt)
}
// UserSessions represents a list of sessions.
type UserSessions []*UserSession
// UseTimezone converts creation date of all sessions to the given timezone.
func (u UserSessions) UseTimezone(tz string) {
for _, session := range u {
session.UseTimezone(tz)
}
}

View File

@ -11,11 +11,10 @@ import (
"strings"
"time"
"github.com/lib/pq/hstore"
"github.com/miniflux/miniflux/model"
"github.com/miniflux/miniflux/timer"
"github.com/lib/pq/hstore"
"golang.org/x/crypto/bcrypt"
)

View File

@ -24,6 +24,7 @@ func (c *Controller) ShowSessions(ctx *handler.Context, request *handler.Request
return
}
sessions.UseTimezone(user.Timezone)
response.HTML().Render("sessions", args.Merge(tplParams{
"sessions": sessions,
"currentSessionToken": ctx.UserSessionToken(),

View File

@ -34,6 +34,7 @@ func (c *Controller) ShowUsers(ctx *handler.Context, request *handler.Request, r
return
}
users.UseTimezone(user.Timezone)
response.HTML().Render("users", args.Merge(tplParams{
"users": users,
"menu": "settings",