summaryrefslogtreecommitdiffstats
path: root/api/user.go
diff options
context:
space:
mode:
authorAsaad Mahmood <Unknowngi@live.com>2015-10-23 10:53:57 +0500
committerAsaad Mahmood <Unknowngi@live.com>2015-10-23 10:53:57 +0500
commitcc904a7ec73a44a337908c685bfc311bdbe1ff85 (patch)
tree6fb865bb734cad0389490e4add11f2e308fe473c /api/user.go
parent79ce0dd914713aac9d2f1332202a48e7e0d338a3 (diff)
parent02a6f6b2cd4c0a6bf32b23961557c385039ae2f2 (diff)
downloadchat-cc904a7ec73a44a337908c685bfc311bdbe1ff85.tar.gz
chat-cc904a7ec73a44a337908c685bfc311bdbe1ff85.tar.bz2
chat-cc904a7ec73a44a337908c685bfc311bdbe1ff85.zip
Merge branch 'master' of https://github.com/mattermost/platform into ui-improvements
Diffstat (limited to 'api/user.go')
-rw-r--r--api/user.go50
1 files changed, 20 insertions, 30 deletions
diff --git a/api/user.go b/api/user.go
index 0c7278711..3071e1b26 100644
--- a/api/user.go
+++ b/api/user.go
@@ -428,43 +428,23 @@ func Login(c *Context, w http.ResponseWriter, r *http.Request, user *model.User,
}
w.Header().Set(model.HEADER_TOKEN, session.Token)
- sessionCookie := &http.Cookie{
- Name: model.SESSION_TOKEN,
- Value: session.Token,
- Path: "/",
- MaxAge: maxAge,
- HttpOnly: true,
- }
-
- http.SetCookie(w, sessionCookie)
+ tokens := GetMultiSessionCookieTokens(r)
multiToken := ""
- if originalMultiSessionCookie, err := r.Cookie(model.MULTI_SESSION_TOKEN); err == nil {
- multiToken = originalMultiSessionCookie.Value
- }
-
- // Attempt to clean all the old tokens or duplicate tokens
- if len(multiToken) > 0 {
- tokens := strings.Split(multiToken, " ")
-
- 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
- }
- }
+ seen := make(map[string]string)
+ seen[session.TeamId] = session.TeamId
+ for _, token := range tokens {
+ s := GetSession(token)
+ if s != nil && !s.IsExpired() && seen[s.TeamId] == "" {
+ multiToken += " " + token
+ seen[s.TeamId] = s.TeamId
}
}
- multiToken = strings.TrimSpace(session.Token + " " + multiToken)
+ multiToken = strings.TrimSpace(multiToken + " " + session.Token)
multiSessionCookie := &http.Cookie{
- Name: model.MULTI_SESSION_TOKEN,
+ Name: model.SESSION_COOKIE_TOKEN,
Value: multiToken,
Path: "/",
MaxAge: maxAge,
@@ -1241,6 +1221,11 @@ func sendPasswordReset(c *Context, w http.ResponseWriter, r *http.Request) {
user = result.Data.(*model.User)
}
+ if len(user.AuthData) != 0 {
+ c.Err = model.NewAppError("sendPasswordReset", "Cannot reset password for SSO accounts", "userId="+user.Id+", teamId="+team.Id)
+ return
+ }
+
newProps := make(map[string]string)
newProps["user_id"] = user.Id
newProps["time"] = fmt.Sprintf("%v", model.GetMillis())
@@ -1325,6 +1310,11 @@ func resetPassword(c *Context, w http.ResponseWriter, r *http.Request) {
user = result.Data.(*model.User)
}
+ if len(user.AuthData) != 0 {
+ c.Err = model.NewAppError("resetPassword", "Cannot reset password for SSO accounts", "userId="+user.Id+", teamId="+team.Id)
+ return
+ }
+
if user.TeamId != team.Id {
c.Err = model.NewAppError("resetPassword", "Trying to reset password for user on wrong team.", "userId="+user.Id+", teamId="+team.Id)
c.Err.StatusCode = http.StatusForbidden