Addressing issues from group code review
Этот коммит содержится в:
29
api/user.go
29
api/user.go
@@ -429,26 +429,15 @@ func Login(c *Context, w http.ResponseWriter, r *http.Request, user *model.User,
|
|||||||
|
|
||||||
w.Header().Set(model.HEADER_TOKEN, session.Token)
|
w.Header().Set(model.HEADER_TOKEN, session.Token)
|
||||||
|
|
||||||
multiToken := ""
|
tokens := GetMultiSessionCookie(r)
|
||||||
if originalMultiSessionCookie, err := r.Cookie(model.SESSION_COOKIE_TOKEN); err == nil {
|
multiToken = ""
|
||||||
multiToken = originalMultiSessionCookie.Value
|
seen := make(map[string]string)
|
||||||
}
|
seen[session.TeamId] = session.TeamId
|
||||||
|
for _, token := range tokens {
|
||||||
// Attempt to clean all the old tokens or duplicate tokens
|
s := GetSession(token)
|
||||||
if len(multiToken) > 0 {
|
if s != nil && !s.IsExpired() && seen[s.TeamId] == "" {
|
||||||
tokens := strings.Split(multiToken, " ")
|
multiToken += " " + token
|
||||||
|
seen[s.TeamId] = s.TeamId
|
||||||
multiToken = ""
|
|
||||||
seen := make(map[string]string)
|
|
||||||
seen[session.TeamId] = session.TeamId
|
|
||||||
for _, token := range tokens {
|
|
||||||
if sr := <-Srv.Store.Session().Get(token); sr.Err == nil {
|
|
||||||
s := sr.Data.(*model.Session)
|
|
||||||
if !s.IsExpired() && seen[s.TeamId] == "" {
|
|
||||||
multiToken += " " + token
|
|
||||||
seen[s.TeamId] = s.TeamId
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ class BrowserStoreClass {
|
|||||||
this.getLastServerVersion = this.getLastServerVersion.bind(this);
|
this.getLastServerVersion = this.getLastServerVersion.bind(this);
|
||||||
this.setLastServerVersion = this.setLastServerVersion.bind(this);
|
this.setLastServerVersion = this.setLastServerVersion.bind(this);
|
||||||
this.clear = this.clear.bind(this);
|
this.clear = this.clear.bind(this);
|
||||||
|
this.clearAll = this.clearAll.bind(this);
|
||||||
|
|
||||||
var currentVersion = sessionStorage.getItem('storage_version');
|
var currentVersion = sessionStorage.getItem('storage_version');
|
||||||
if (currentVersion !== global.window.mm_config.Version) {
|
if (currentVersion !== global.window.mm_config.Version) {
|
||||||
@@ -57,13 +58,14 @@ class BrowserStoreClass {
|
|||||||
setGlobalItem(name, value) {
|
setGlobalItem(name, value) {
|
||||||
try {
|
try {
|
||||||
if (this.isLocalStorageSupported()) {
|
if (this.isLocalStorageSupported()) {
|
||||||
localStorage.setItem(name, JSON.stringify(value));
|
localStorage.setItem(getPrefix() + name, JSON.stringify(value));
|
||||||
} else {
|
} else {
|
||||||
sessionStorage.setItem(name, JSON.stringify(value));
|
sessionStorage.setItem(getPrefix() + name, JSON.stringify(value));
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.log('An error occurred while setting local storage, clearing all props'); //eslint-disable-line no-console
|
console.log('An error occurred while setting local storage, clearing all props'); //eslint-disable-line no-console
|
||||||
localStorage.clear();
|
localStorage.clear();
|
||||||
|
sessionStorage.clear();
|
||||||
window.location.href = window.location.href;
|
window.location.href = window.location.href;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -72,9 +74,9 @@ class BrowserStoreClass {
|
|||||||
var result = null;
|
var result = null;
|
||||||
try {
|
try {
|
||||||
if (this.isLocalStorageSupported()) {
|
if (this.isLocalStorageSupported()) {
|
||||||
result = JSON.parse(localStorage.getItem(name));
|
result = JSON.parse(getPrefix() + localStorage.getItem(name));
|
||||||
} else {
|
} else {
|
||||||
result = JSON.parse(sessionStorage.getItem(name));
|
result = JSON.parse(getPrefix() + sessionStorage.getItem(name));
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
result = null;
|
result = null;
|
||||||
@@ -89,9 +91,9 @@ class BrowserStoreClass {
|
|||||||
|
|
||||||
removeGlobalItem(name) {
|
removeGlobalItem(name) {
|
||||||
if (this.isLocalStorageSupported()) {
|
if (this.isLocalStorageSupported()) {
|
||||||
localStorage.removeItem(name);
|
localStorage.removeItem(getPrefix() + name);
|
||||||
} else {
|
} else {
|
||||||
sessionStorage.removeItem(name);
|
sessionStorage.removeItem(getPrefix() + name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -110,7 +112,13 @@ class BrowserStoreClass {
|
|||||||
actionOnGlobalItemsWithPrefix(prefix, action) {
|
actionOnGlobalItemsWithPrefix(prefix, action) {
|
||||||
var globalPrefix = getPrefix();
|
var globalPrefix = getPrefix();
|
||||||
var globalPrefixiLen = globalPrefix.length;
|
var globalPrefixiLen = globalPrefix.length;
|
||||||
for (var key in localStorage) {
|
|
||||||
|
var storage = sessionStorage;
|
||||||
|
if (this.isLocalStorageSupported()) {
|
||||||
|
storage = localStorage;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var key in storage) {
|
||||||
if (key.lastIndexOf(globalPrefix + prefix, 0) === 0) {
|
if (key.lastIndexOf(globalPrefix + prefix, 0) === 0) {
|
||||||
var userkey = key.substring(globalPrefixiLen);
|
var userkey = key.substring(globalPrefixiLen);
|
||||||
action(userkey, this.getGlobalItem(key));
|
action(userkey, this.getGlobalItem(key));
|
||||||
@@ -133,6 +141,11 @@ class BrowserStoreClass {
|
|||||||
sessionStorage.clear();
|
sessionStorage.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
clearAll() {
|
||||||
|
sessionStorage.clear();
|
||||||
|
localStorage.clear();
|
||||||
|
}
|
||||||
|
|
||||||
isLocalStorageSupported() {
|
isLocalStorageSupported() {
|
||||||
try {
|
try {
|
||||||
sessionStorage.setItem('testSession', '1');
|
sessionStorage.setItem('testSession', '1');
|
||||||
|
|||||||
@@ -1026,7 +1026,6 @@ func incomingWebhook(c *api.Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
|
|
||||||
// create a mock session
|
// create a mock session
|
||||||
c.Session = model.Session{UserId: hook.UserId, TeamId: hook.TeamId, IsOAuth: false}
|
c.Session = model.Session{UserId: hook.UserId, TeamId: hook.TeamId, IsOAuth: false}
|
||||||
c.SessionTokenIndex = 0
|
|
||||||
|
|
||||||
if !c.HasPermissionsToChannel(pchan, "createIncomingHook") && channel.Type != model.CHANNEL_OPEN {
|
if !c.HasPermissionsToChannel(pchan, "createIncomingHook") && channel.Type != model.CHANNEL_OPEN {
|
||||||
c.Err = model.NewAppError("incomingWebhook", "Inappropriate channel permissions", "")
|
c.Err = model.NewAppError("incomingWebhook", "Inappropriate channel permissions", "")
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user