PLT-7 adding loc db calls for session table

Этот коммит содержится в:
=Corey Hulen
2016-01-20 10:18:11 -06:00
родитель 11c035aef4
Коммит 3ac5ecf0e9
11 изменённых файлов: 75 добавлений и 72 удалений

Просмотреть файл

@@ -162,7 +162,7 @@ func (h handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
} }
if len(token) != 0 { if len(token) != 0 {
session := GetSession(token) session := GetSession(c.T, token)
if session == nil || session.IsExpired() { if session == nil || session.IsExpired() {
c.RemoveSessionCookie(w, r) c.RemoveSessionCookie(w, r)
@@ -515,14 +515,14 @@ func Handle404(w http.ResponseWriter, r *http.Request) {
RenderWebError(err, w, r) RenderWebError(err, w, r)
} }
func GetSession(token string) *model.Session { func GetSession(T goi18n.TranslateFunc, token string) *model.Session {
var session *model.Session var session *model.Session
if ts, ok := sessionCache.Get(token); ok { if ts, ok := sessionCache.Get(token); ok {
session = ts.(*model.Session) session = ts.(*model.Session)
} }
if session == nil { if session == nil {
if sessionResult := <-Srv.Store.Session().Get(token); sessionResult.Err != nil { if sessionResult := <-Srv.Store.Session().Get(T, token); sessionResult.Err != nil {
l4g.Error("Invalid session token=" + token + ", err=" + sessionResult.Err.DetailedError) l4g.Error("Invalid session token=" + token + ", err=" + sessionResult.Err.DetailedError)
} else { } else {
session = sessionResult.Data.(*model.Session) session = sessionResult.Data.(*model.Session)
@@ -551,9 +551,9 @@ func GetMultiSessionCookieTokens(r *http.Request) []string {
return []string{} return []string{}
} }
func FindMultiSessionForTeamId(r *http.Request, teamId string) (int64, *model.Session) { func FindMultiSessionForTeamId(T goi18n.TranslateFunc, r *http.Request, teamId string) (int64, *model.Session) {
for index, token := range GetMultiSessionCookieTokens(r) { for index, token := range GetMultiSessionCookieTokens(r) {
s := GetSession(token) s := GetSession(T, token)
if s != nil && !s.IsExpired() && s.TeamId == teamId { if s != nil && !s.IsExpired() && s.TeamId == teamId {
return int64(index), s return int64(index), s
} }

Просмотреть файл

@@ -129,7 +129,7 @@ func allowOAuth(c *Context, w http.ResponseWriter, r *http.Request) {
func RevokeAccessToken(T goi18n.TranslateFunc, token string) *model.AppError { func RevokeAccessToken(T goi18n.TranslateFunc, token string) *model.AppError {
schan := Srv.Store.Session().Remove(token) schan := Srv.Store.Session().Remove(T, token)
sessionCache.Remove(token) sessionCache.Remove(token)
var accessData *model.AccessData var accessData *model.AccessData

Просмотреть файл

@@ -626,7 +626,7 @@ func sendNotificationsAndForget(c *Context, post *model.Post, team *model.Team,
} }
if *utils.Cfg.EmailSettings.SendPushNotifications { if *utils.Cfg.EmailSettings.SendPushNotifications {
sessionChan := Srv.Store.Session().GetSessions(id) sessionChan := Srv.Store.Session().GetSessions(c.T, id)
if result := <-sessionChan; result.Err != nil { if result := <-sessionChan; result.Err != nil {
l4g.Error("Failed to retrieve sessions in notifications id=%v, err=%v", id, result.Err) l4g.Error("Failed to retrieve sessions in notifications id=%v, err=%v", id, result.Err)
} else { } else {

Просмотреть файл

@@ -331,7 +331,7 @@ func revokeAllSessions(c *Context, w http.ResponseWriter, r *http.Request) {
props := model.MapFromJson(r.Body) props := model.MapFromJson(r.Body)
id := props["id"] id := props["id"]
if result := <-Srv.Store.Session().Get(id); result.Err != nil { if result := <-Srv.Store.Session().Get(c.T, id); result.Err != nil {
c.Err = result.Err c.Err = result.Err
return return
} else { } else {
@@ -344,7 +344,7 @@ func revokeAllSessions(c *Context, w http.ResponseWriter, r *http.Request) {
} else { } else {
sessionCache.Remove(session.Token) sessionCache.Remove(session.Token)
if result := <-Srv.Store.Session().Remove(session.Id); result.Err != nil { if result := <-Srv.Store.Session().Remove(c.T, session.Id); result.Err != nil {
c.Err = result.Err c.Err = result.Err
return return
} else { } else {

Просмотреть файл

@@ -516,7 +516,7 @@ func Login(c *Context, w http.ResponseWriter, r *http.Request, user *model.User,
maxAge = *utils.Cfg.ServiceSettings.SessionLengthMobileInDays * 60 * 60 * 24 maxAge = *utils.Cfg.ServiceSettings.SessionLengthMobileInDays * 60 * 60 * 24
// A special case where we logout of all other sessions with the same Id // A special case where we logout of all other sessions with the same Id
if result := <-Srv.Store.Session().GetSessions(user.Id); result.Err != nil { if result := <-Srv.Store.Session().GetSessions(c.T, user.Id); result.Err != nil {
c.Err = result.Err c.Err = result.Err
c.Err.StatusCode = http.StatusForbidden c.Err.StatusCode = http.StatusForbidden
return return
@@ -563,7 +563,7 @@ func Login(c *Context, w http.ResponseWriter, r *http.Request, user *model.User,
session.AddProp(model.SESSION_PROP_OS, os) session.AddProp(model.SESSION_PROP_OS, os)
session.AddProp(model.SESSION_PROP_BROWSER, fmt.Sprintf("%v/%v", bname, bversion)) session.AddProp(model.SESSION_PROP_BROWSER, fmt.Sprintf("%v/%v", bname, bversion))
if result := <-Srv.Store.Session().Save(session); result.Err != nil { if result := <-Srv.Store.Session().Save(c.T, session); result.Err != nil {
c.Err = result.Err c.Err = result.Err
c.Err.StatusCode = http.StatusForbidden c.Err.StatusCode = http.StatusForbidden
return return
@@ -579,7 +579,7 @@ func Login(c *Context, w http.ResponseWriter, r *http.Request, user *model.User,
seen := make(map[string]string) seen := make(map[string]string)
seen[session.TeamId] = session.TeamId seen[session.TeamId] = session.TeamId
for _, token := range tokens { for _, token := range tokens {
s := GetSession(token) s := GetSession(c.T, token)
if s != nil && !s.IsExpired() && seen[s.TeamId] == "" { if s != nil && !s.IsExpired() && seen[s.TeamId] == "" {
multiToken += " " + token multiToken += " " + token
seen[s.TeamId] = s.TeamId seen[s.TeamId] = s.TeamId
@@ -706,7 +706,7 @@ func revokeSession(c *Context, w http.ResponseWriter, r *http.Request) {
} }
func RevokeSessionById(c *Context, sessionId string) { func RevokeSessionById(c *Context, sessionId string) {
if result := <-Srv.Store.Session().Get(sessionId); result.Err != nil { if result := <-Srv.Store.Session().Get(c.T, sessionId); result.Err != nil {
c.Err = result.Err c.Err = result.Err
} else { } else {
session := result.Data.(*model.Session) session := result.Data.(*model.Session)
@@ -717,7 +717,7 @@ func RevokeSessionById(c *Context, sessionId string) {
} else { } else {
sessionCache.Remove(session.Token) sessionCache.Remove(session.Token)
if result := <-Srv.Store.Session().Remove(session.Id); result.Err != nil { if result := <-Srv.Store.Session().Remove(c.T, session.Id); result.Err != nil {
c.Err = result.Err c.Err = result.Err
} }
} }
@@ -725,7 +725,7 @@ func RevokeSessionById(c *Context, sessionId string) {
} }
func RevokeAllSession(c *Context, userId string) { func RevokeAllSession(c *Context, userId string) {
if result := <-Srv.Store.Session().GetSessions(userId); result.Err != nil { if result := <-Srv.Store.Session().GetSessions(c.T, userId); result.Err != nil {
c.Err = result.Err c.Err = result.Err
return return
} else { } else {
@@ -737,7 +737,7 @@ func RevokeAllSession(c *Context, userId string) {
RevokeAccessToken(c.T, session.Token) RevokeAccessToken(c.T, session.Token)
} else { } else {
sessionCache.Remove(session.Token) sessionCache.Remove(session.Token)
if result := <-Srv.Store.Session().Remove(session.Id); result.Err != nil { if result := <-Srv.Store.Session().Remove(c.T, session.Id); result.Err != nil {
c.Err = result.Err c.Err = result.Err
return return
} }
@@ -755,7 +755,7 @@ func getSessions(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if result := <-Srv.Store.Session().GetSessions(id); result.Err != nil { if result := <-Srv.Store.Session().GetSessions(c.T, id); result.Err != nil {
c.Err = result.Err c.Err = result.Err
return return
} else { } else {
@@ -781,7 +781,7 @@ func logout(c *Context, w http.ResponseWriter, r *http.Request) {
func Logout(c *Context, w http.ResponseWriter, r *http.Request) { func Logout(c *Context, w http.ResponseWriter, r *http.Request) {
c.LogAudit("") c.LogAudit("")
c.RemoveSessionCookie(w, r) c.RemoveSessionCookie(w, r)
if result := <-Srv.Store.Session().Remove(c.Session.Id); result.Err != nil { if result := <-Srv.Store.Session().Remove(c.T, c.Session.Id); result.Err != nil {
c.Err = result.Err c.Err = result.Err
return return
} }
@@ -1280,8 +1280,8 @@ func updateRoles(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
uchan := Srv.Store.Session().UpdateRoles(user.Id, new_roles) uchan := Srv.Store.Session().UpdateRoles(c.T, user.Id, new_roles)
gchan := Srv.Store.Session().GetSessions(user.Id) gchan := Srv.Store.Session().GetSessions(c.T, user.Id)
if result := <-uchan; result.Err != nil { if result := <-uchan; result.Err != nil {
// soft error since the user roles were still updated // soft error since the user roles were still updated
@@ -1436,7 +1436,7 @@ func PermanentDeleteUser(c *Context, user *model.User) *model.AppError {
UpdateActive(c, user, false) UpdateActive(c, user, false)
if result := <-Srv.Store.Session().PermanentDeleteSessionsByUser(user.Id); result.Err != nil { if result := <-Srv.Store.Session().PermanentDeleteSessionsByUser(c.T, user.Id); result.Err != nil {
return result.Err return result.Err
} }

Просмотреть файл

@@ -186,7 +186,7 @@ func TestLoginWithDeviceId(t *testing.T) {
t.Fatal(err) t.Fatal(err)
} }
if sresult := <-Srv.Store.Session().Get(sessions[0].Id); sresult.Err == nil { if sresult := <-Srv.Store.Session().Get(utils.T, sessions[0].Id); sresult.Err == nil {
t.Fatal("session should have been removed") t.Fatal("session should have been removed")
} }
} }

Просмотреть файл

@@ -6,6 +6,7 @@ package store
import ( import (
l4g "github.com/alecthomas/log4go" l4g "github.com/alecthomas/log4go"
"github.com/mattermost/platform/model" "github.com/mattermost/platform/model"
goi18n "github.com/nicksnyder/go-i18n/i18n"
) )
type SqlSessionStore struct { type SqlSessionStore struct {
@@ -37,7 +38,7 @@ func (me SqlSessionStore) CreateIndexesIfNotExists() {
me.CreateIndexIfNotExists("idx_sessions_token", "Sessions", "Token") me.CreateIndexIfNotExists("idx_sessions_token", "Sessions", "Token")
} }
func (me SqlSessionStore) Save(session *model.Session) StoreChannel { func (me SqlSessionStore) Save(T goi18n.TranslateFunc, session *model.Session) StoreChannel {
storeChannel := make(StoreChannel) storeChannel := make(StoreChannel)
@@ -53,7 +54,7 @@ func (me SqlSessionStore) Save(session *model.Session) StoreChannel {
session.PreSave() session.PreSave()
if cur := <-me.CleanUpExpiredSessions(session.UserId); cur.Err != nil { if cur := <-me.CleanUpExpiredSessions(T, session.UserId); cur.Err != nil {
l4g.Error("Failed to cleanup sessions in Save err=%v", cur.Err) l4g.Error("Failed to cleanup sessions in Save err=%v", cur.Err)
} }
@@ -70,7 +71,7 @@ func (me SqlSessionStore) Save(session *model.Session) StoreChannel {
return storeChannel return storeChannel
} }
func (me SqlSessionStore) Get(sessionIdOrToken string) StoreChannel { func (me SqlSessionStore) Get(T goi18n.TranslateFunc, sessionIdOrToken string) StoreChannel {
storeChannel := make(StoreChannel) storeChannel := make(StoreChannel)
@@ -95,12 +96,12 @@ func (me SqlSessionStore) Get(sessionIdOrToken string) StoreChannel {
return storeChannel return storeChannel
} }
func (me SqlSessionStore) GetSessions(userId string) StoreChannel { func (me SqlSessionStore) GetSessions(T goi18n.TranslateFunc, userId string) StoreChannel {
storeChannel := make(StoreChannel) storeChannel := make(StoreChannel)
go func() { go func() {
if cur := <-me.CleanUpExpiredSessions(userId); cur.Err != nil { if cur := <-me.CleanUpExpiredSessions(T, userId); cur.Err != nil {
l4g.Error("Failed to cleanup sessions in getSessions err=%v", cur.Err) l4g.Error("Failed to cleanup sessions in getSessions err=%v", cur.Err)
} }
@@ -122,7 +123,7 @@ func (me SqlSessionStore) GetSessions(userId string) StoreChannel {
return storeChannel return storeChannel
} }
func (me SqlSessionStore) Remove(sessionIdOrToken string) StoreChannel { func (me SqlSessionStore) Remove(T goi18n.TranslateFunc, sessionIdOrToken string) StoreChannel {
storeChannel := make(StoreChannel) storeChannel := make(StoreChannel)
go func() { go func() {
@@ -140,7 +141,7 @@ func (me SqlSessionStore) Remove(sessionIdOrToken string) StoreChannel {
return storeChannel return storeChannel
} }
func (me SqlSessionStore) RemoveAllSessionsForTeam(teamId string) StoreChannel { func (me SqlSessionStore) RemoveAllSessionsForTeam(T goi18n.TranslateFunc, teamId string) StoreChannel {
storeChannel := make(StoreChannel) storeChannel := make(StoreChannel)
go func() { go func() {
@@ -158,7 +159,7 @@ func (me SqlSessionStore) RemoveAllSessionsForTeam(teamId string) StoreChannel {
return storeChannel return storeChannel
} }
func (me SqlSessionStore) PermanentDeleteSessionsByUser(userId string) StoreChannel { func (me SqlSessionStore) PermanentDeleteSessionsByUser(T goi18n.TranslateFunc, userId string) StoreChannel {
storeChannel := make(StoreChannel) storeChannel := make(StoreChannel)
go func() { go func() {
@@ -176,7 +177,7 @@ func (me SqlSessionStore) PermanentDeleteSessionsByUser(userId string) StoreChan
return storeChannel return storeChannel
} }
func (me SqlSessionStore) CleanUpExpiredSessions(userId string) StoreChannel { func (me SqlSessionStore) CleanUpExpiredSessions(T goi18n.TranslateFunc, userId string) StoreChannel {
storeChannel := make(StoreChannel) storeChannel := make(StoreChannel)
go func() { go func() {
@@ -195,7 +196,7 @@ func (me SqlSessionStore) CleanUpExpiredSessions(userId string) StoreChannel {
return storeChannel return storeChannel
} }
func (me SqlSessionStore) UpdateLastActivityAt(sessionId string, time int64) StoreChannel { func (me SqlSessionStore) UpdateLastActivityAt(T goi18n.TranslateFunc, sessionId string, time int64) StoreChannel {
storeChannel := make(StoreChannel) storeChannel := make(StoreChannel)
go func() { go func() {
@@ -214,7 +215,7 @@ func (me SqlSessionStore) UpdateLastActivityAt(sessionId string, time int64) Sto
return storeChannel return storeChannel
} }
func (me SqlSessionStore) UpdateRoles(userId, roles string) StoreChannel { func (me SqlSessionStore) UpdateRoles(T goi18n.TranslateFunc, userId, roles string) StoreChannel {
storeChannel := make(StoreChannel) storeChannel := make(StoreChannel)
go func() { go func() {

Просмотреть файл

@@ -5,6 +5,7 @@ package store
import ( import (
"github.com/mattermost/platform/model" "github.com/mattermost/platform/model"
"github.com/mattermost/platform/utils"
"testing" "testing"
) )
@@ -15,7 +16,7 @@ func TestSessionStoreSave(t *testing.T) {
s1.UserId = model.NewId() s1.UserId = model.NewId()
s1.TeamId = model.NewId() s1.TeamId = model.NewId()
if err := (<-store.Session().Save(&s1)).Err; err != nil { if err := (<-store.Session().Save(utils.T, &s1)).Err; err != nil {
t.Fatal(err) t.Fatal(err)
} }
} }
@@ -26,20 +27,20 @@ func TestSessionGet(t *testing.T) {
s1 := model.Session{} s1 := model.Session{}
s1.UserId = model.NewId() s1.UserId = model.NewId()
s1.TeamId = model.NewId() s1.TeamId = model.NewId()
Must(store.Session().Save(&s1)) Must(store.Session().Save(utils.T, &s1))
s2 := model.Session{} s2 := model.Session{}
s2.UserId = s1.UserId s2.UserId = s1.UserId
s2.TeamId = s1.TeamId s2.TeamId = s1.TeamId
Must(store.Session().Save(&s2)) Must(store.Session().Save(utils.T, &s2))
s3 := model.Session{} s3 := model.Session{}
s3.UserId = s1.UserId s3.UserId = s1.UserId
s3.TeamId = s1.TeamId s3.TeamId = s1.TeamId
s3.ExpiresAt = 1 s3.ExpiresAt = 1
Must(store.Session().Save(&s3)) Must(store.Session().Save(utils.T, &s3))
if rs1 := (<-store.Session().Get(s1.Id)); rs1.Err != nil { if rs1 := (<-store.Session().Get(utils.T, s1.Id)); rs1.Err != nil {
t.Fatal(rs1.Err) t.Fatal(rs1.Err)
} else { } else {
if rs1.Data.(*model.Session).Id != s1.Id { if rs1.Data.(*model.Session).Id != s1.Id {
@@ -47,7 +48,7 @@ func TestSessionGet(t *testing.T) {
} }
} }
if rs2 := (<-store.Session().GetSessions(s1.UserId)); rs2.Err != nil { if rs2 := (<-store.Session().GetSessions(utils.T, s1.UserId)); rs2.Err != nil {
t.Fatal(rs2.Err) t.Fatal(rs2.Err)
} else { } else {
if len(rs2.Data.([]*model.Session)) != 2 { if len(rs2.Data.([]*model.Session)) != 2 {
@@ -63,9 +64,9 @@ func TestSessionRemove(t *testing.T) {
s1 := model.Session{} s1 := model.Session{}
s1.UserId = model.NewId() s1.UserId = model.NewId()
s1.TeamId = model.NewId() s1.TeamId = model.NewId()
Must(store.Session().Save(&s1)) Must(store.Session().Save(utils.T, &s1))
if rs1 := (<-store.Session().Get(s1.Id)); rs1.Err != nil { if rs1 := (<-store.Session().Get(utils.T, s1.Id)); rs1.Err != nil {
t.Fatal(rs1.Err) t.Fatal(rs1.Err)
} else { } else {
if rs1.Data.(*model.Session).Id != s1.Id { if rs1.Data.(*model.Session).Id != s1.Id {
@@ -73,9 +74,9 @@ func TestSessionRemove(t *testing.T) {
} }
} }
Must(store.Session().Remove(s1.Id)) Must(store.Session().Remove(utils.T, s1.Id))
if rs2 := (<-store.Session().Get(s1.Id)); rs2.Err == nil { if rs2 := (<-store.Session().Get(utils.T, s1.Id)); rs2.Err == nil {
t.Fatal("should have been removed") t.Fatal("should have been removed")
} }
} }
@@ -86,9 +87,9 @@ func TestSessionRemoveAll(t *testing.T) {
s1 := model.Session{} s1 := model.Session{}
s1.UserId = model.NewId() s1.UserId = model.NewId()
s1.TeamId = model.NewId() s1.TeamId = model.NewId()
Must(store.Session().Save(&s1)) Must(store.Session().Save(utils.T, &s1))
if rs1 := (<-store.Session().Get(s1.Id)); rs1.Err != nil { if rs1 := (<-store.Session().Get(utils.T, s1.Id)); rs1.Err != nil {
t.Fatal(rs1.Err) t.Fatal(rs1.Err)
} else { } else {
if rs1.Data.(*model.Session).Id != s1.Id { if rs1.Data.(*model.Session).Id != s1.Id {
@@ -96,9 +97,9 @@ func TestSessionRemoveAll(t *testing.T) {
} }
} }
Must(store.Session().RemoveAllSessionsForTeam(s1.TeamId)) Must(store.Session().RemoveAllSessionsForTeam(utils.T, s1.TeamId))
if rs2 := (<-store.Session().Get(s1.Id)); rs2.Err == nil { if rs2 := (<-store.Session().Get(utils.T, s1.Id)); rs2.Err == nil {
t.Fatal("should have been removed") t.Fatal("should have been removed")
} }
} }
@@ -109,9 +110,9 @@ func TestSessionRemoveByUser(t *testing.T) {
s1 := model.Session{} s1 := model.Session{}
s1.UserId = model.NewId() s1.UserId = model.NewId()
s1.TeamId = model.NewId() s1.TeamId = model.NewId()
Must(store.Session().Save(&s1)) Must(store.Session().Save(utils.T, &s1))
if rs1 := (<-store.Session().Get(s1.Id)); rs1.Err != nil { if rs1 := (<-store.Session().Get(utils.T, s1.Id)); rs1.Err != nil {
t.Fatal(rs1.Err) t.Fatal(rs1.Err)
} else { } else {
if rs1.Data.(*model.Session).Id != s1.Id { if rs1.Data.(*model.Session).Id != s1.Id {
@@ -119,9 +120,9 @@ func TestSessionRemoveByUser(t *testing.T) {
} }
} }
Must(store.Session().PermanentDeleteSessionsByUser(s1.UserId)) Must(store.Session().PermanentDeleteSessionsByUser(utils.T, s1.UserId))
if rs2 := (<-store.Session().Get(s1.Id)); rs2.Err == nil { if rs2 := (<-store.Session().Get(utils.T, s1.Id)); rs2.Err == nil {
t.Fatal("should have been removed") t.Fatal("should have been removed")
} }
} }
@@ -132,9 +133,9 @@ func TestSessionRemoveToken(t *testing.T) {
s1 := model.Session{} s1 := model.Session{}
s1.UserId = model.NewId() s1.UserId = model.NewId()
s1.TeamId = model.NewId() s1.TeamId = model.NewId()
Must(store.Session().Save(&s1)) Must(store.Session().Save(utils.T, &s1))
if rs1 := (<-store.Session().Get(s1.Id)); rs1.Err != nil { if rs1 := (<-store.Session().Get(utils.T, s1.Id)); rs1.Err != nil {
t.Fatal(rs1.Err) t.Fatal(rs1.Err)
} else { } else {
if rs1.Data.(*model.Session).Id != s1.Id { if rs1.Data.(*model.Session).Id != s1.Id {
@@ -142,13 +143,13 @@ func TestSessionRemoveToken(t *testing.T) {
} }
} }
Must(store.Session().Remove(s1.Token)) Must(store.Session().Remove(utils.T, s1.Token))
if rs2 := (<-store.Session().Get(s1.Id)); rs2.Err == nil { if rs2 := (<-store.Session().Get(utils.T, s1.Id)); rs2.Err == nil {
t.Fatal("should have been removed") t.Fatal("should have been removed")
} }
if rs3 := (<-store.Session().GetSessions(s1.UserId)); rs3.Err != nil { if rs3 := (<-store.Session().GetSessions(utils.T, s1.UserId)); rs3.Err != nil {
t.Fatal(rs3.Err) t.Fatal(rs3.Err)
} else { } else {
if len(rs3.Data.([]*model.Session)) != 0 { if len(rs3.Data.([]*model.Session)) != 0 {
@@ -163,13 +164,13 @@ func TestSessionStoreUpdateLastActivityAt(t *testing.T) {
s1 := model.Session{} s1 := model.Session{}
s1.UserId = model.NewId() s1.UserId = model.NewId()
s1.TeamId = model.NewId() s1.TeamId = model.NewId()
Must(store.Session().Save(&s1)) Must(store.Session().Save(utils.T, &s1))
if err := (<-store.Session().UpdateLastActivityAt(s1.Id, 1234567890)).Err; err != nil { if err := (<-store.Session().UpdateLastActivityAt(utils.T, s1.Id, 1234567890)).Err; err != nil {
t.Fatal(err) t.Fatal(err)
} }
if r1 := <-store.Session().Get(s1.Id); r1.Err != nil { if r1 := <-store.Session().Get(utils.T, s1.Id); r1.Err != nil {
t.Fatal(r1.Err) t.Fatal(r1.Err)
} else { } else {
if r1.Data.(*model.Session).LastActivityAt != 1234567890 { if r1.Data.(*model.Session).LastActivityAt != 1234567890 {

Просмотреть файл

@@ -5,6 +5,7 @@ package store
import ( import (
"github.com/mattermost/platform/model" "github.com/mattermost/platform/model"
"github.com/mattermost/platform/utils"
"strings" "strings"
"testing" "testing"
"time" "time"
@@ -161,7 +162,7 @@ func TestUserStoreUpdateUserAndSessionActivity(t *testing.T) {
s1 := model.Session{} s1 := model.Session{}
s1.UserId = u1.Id s1.UserId = u1.Id
s1.TeamId = u1.TeamId s1.TeamId = u1.TeamId
Must(store.Session().Save(&s1)) Must(store.Session().Save(utils.T, &s1))
if err := (<-store.User().UpdateUserAndSessionActivity(u1.Id, s1.Id, 1234567890)).Err; err != nil { if err := (<-store.User().UpdateUserAndSessionActivity(u1.Id, s1.Id, 1234567890)).Err; err != nil {
t.Fatal(err) t.Fatal(err)
@@ -175,7 +176,7 @@ func TestUserStoreUpdateUserAndSessionActivity(t *testing.T) {
} }
} }
if r2 := <-store.Session().Get(s1.Id); r2.Err != nil { if r2 := <-store.Session().Get(utils.T, s1.Id); r2.Err != nil {
t.Fatal(r2.Err) t.Fatal(r2.Err)
} else { } else {
if r2.Data.(*model.Session).LastActivityAt != 1234567890 { if r2.Data.(*model.Session).LastActivityAt != 1234567890 {

Просмотреть файл

@@ -130,14 +130,14 @@ type UserStore interface {
} }
type SessionStore interface { type SessionStore interface {
Save(session *model.Session) StoreChannel Save(T goi18n.TranslateFunc, session *model.Session) StoreChannel
Get(sessionIdOrToken string) StoreChannel Get(T goi18n.TranslateFunc, sessionIdOrToken string) StoreChannel
GetSessions(userId string) StoreChannel GetSessions(T goi18n.TranslateFunc, userId string) StoreChannel
Remove(sessionIdOrToken string) StoreChannel Remove(T goi18n.TranslateFunc, sessionIdOrToken string) StoreChannel
RemoveAllSessionsForTeam(teamId string) StoreChannel RemoveAllSessionsForTeam(T goi18n.TranslateFunc, teamId string) StoreChannel
PermanentDeleteSessionsByUser(teamId string) StoreChannel PermanentDeleteSessionsByUser(T goi18n.TranslateFunc, teamId string) StoreChannel
UpdateLastActivityAt(sessionId string, time int64) StoreChannel UpdateLastActivityAt(T goi18n.TranslateFunc, sessionId string, time int64) StoreChannel
UpdateRoles(userId string, roles string) StoreChannel UpdateRoles(T goi18n.TranslateFunc, userId string, roles string) StoreChannel
} }
type AuditStore interface { type AuditStore interface {

Просмотреть файл

@@ -238,7 +238,7 @@ func login(c *api.Context, w http.ResponseWriter, r *http.Request) {
} }
// We still might be able to switch to this team because we've logged in before // We still might be able to switch to this team because we've logged in before
_, session := api.FindMultiSessionForTeamId(r, team.Id) _, session := api.FindMultiSessionForTeamId(c.T, r, team.Id)
if session != nil { if session != nil {
w.Header().Set(model.HEADER_TOKEN, session.Token) w.Header().Set(model.HEADER_TOKEN, session.Token)
lastViewChannelName := "town-square" lastViewChannelName := "town-square"
@@ -496,7 +496,7 @@ func checkSessionSwitch(c *api.Context, w http.ResponseWriter, r *http.Request,
// We are logged into a different team. Lets see if we have another // We are logged into a different team. Lets see if we have another
// session in the cookie that will give us access. // session in the cookie that will give us access.
if c.Session.TeamId != team.Id { if c.Session.TeamId != team.Id {
index, session := api.FindMultiSessionForTeamId(r, team.Id) index, session := api.FindMultiSessionForTeamId(c.T, r, team.Id)
if session == nil { if session == nil {
// redirect to login // redirect to login
http.Redirect(w, r, c.GetSiteURL()+"/"+team.Name+"/?redirect="+url.QueryEscape(r.URL.Path), http.StatusTemporaryRedirect) http.Redirect(w, r, c.GetSiteURL()+"/"+team.Name+"/?redirect="+url.QueryEscape(r.URL.Path), http.StatusTemporaryRedirect)
@@ -985,7 +985,7 @@ func getAccessToken(c *api.Context, w http.ResponseWriter, r *http.Request) {
session := &model.Session{UserId: user.Id, TeamId: user.TeamId, Roles: user.Roles, IsOAuth: true} session := &model.Session{UserId: user.Id, TeamId: user.TeamId, Roles: user.Roles, IsOAuth: true}
if result := <-api.Srv.Store.Session().Save(session); result.Err != nil { if result := <-api.Srv.Store.Session().Save(c.T, session); result.Err != nil {
c.Err = model.NewAppError("getAccessToken", "server_error: Encountered internal server error while saving session to database", "") c.Err = model.NewAppError("getAccessToken", "server_error: Encountered internal server error while saving session to database", "")
return return
} else { } else {