aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--api/user.go2
-rw-r--r--model/user.go16
-rw-r--r--model/user_session.go24
-rw-r--r--storage/user.go3
-rw-r--r--ui/session.go1
-rw-r--r--ui/user.go1
6 files changed, 41 insertions, 6 deletions
diff --git a/api/user.go b/api/user.go
index 96571b0..359a9f7 100644
--- a/api/user.go
+++ b/api/user.go
@@ -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)
}
diff --git a/model/user.go b/model/user.go
index aa1156d..d2283f1 100644
--- a/model/user.go
+++ b/model/user.go
@@ -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)
+ }
+}
diff --git a/model/user_session.go b/model/user_session.go
index 7112159..51b2543 100644
--- a/model/user_session.go
+++ b/model/user_session.go
@@ -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)
+ }
+}
diff --git a/storage/user.go b/storage/user.go
index 41e565a..fea59d4 100644
--- a/storage/user.go
+++ b/storage/user.go
@@ -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"
)
diff --git a/ui/session.go b/ui/session.go
index 4134ac6..7ceb8e5 100644
--- a/ui/session.go
+++ b/ui/session.go
@@ -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(),
diff --git a/ui/user.go b/ui/user.go
index caeb4bf..b1f98bd 100644
--- a/ui/user.go
+++ b/ui/user.go
@@ -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",