[MM-40735] Add MattermostAppID to OAuth app (#19214)

Этот коммит содержится в:
Ben Schumacher
2022-03-15 18:00:27 +01:00
коммит произвёл GitHub
родитель 8d72cabee8
Коммит 7710a2fe37
11 изменённых файлов: 74 добавлений и 23 удалений

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

@@ -244,7 +244,7 @@ func (a *App) GetOAuthAccessTokenForImplicitFlow(userID string, authRequest *mod
return nil, err
}
session, err := a.newSession(oauthApp.Name, user)
session, err := a.newSession(oauthApp, user)
if err != nil {
return nil, err
}
@@ -306,7 +306,7 @@ func (a *App) GetOAuthAccessTokenForCodeFlow(clientId, grantType, redirectURI, c
if accessData != nil {
if accessData.IsExpired() {
var access *model.AccessResponse
access, err := a.newSessionUpdateToken(oauthApp.Name, accessData, user)
access, err := a.newSessionUpdateToken(oauthApp, accessData, user)
if err != nil {
return nil, err
}
@@ -323,7 +323,7 @@ func (a *App) GetOAuthAccessTokenForCodeFlow(clientId, grantType, redirectURI, c
} else {
var session *model.Session
// Create a new session and return new access token
session, err := a.newSession(oauthApp.Name, user)
session, err := a.newSession(oauthApp, user)
if err != nil {
return nil, err
}
@@ -357,7 +357,7 @@ func (a *App) GetOAuthAccessTokenForCodeFlow(clientId, grantType, redirectURI, c
return nil, model.NewAppError("GetOAuthAccessToken", "api.oauth.get_access_token.internal_user.app_error", nil, "", http.StatusNotFound)
}
access, err := a.newSessionUpdateToken(oauthApp.Name, accessData, user)
access, err := a.newSessionUpdateToken(oauthApp, accessData, user)
if err != nil {
return nil, err
}
@@ -367,12 +367,14 @@ func (a *App) GetOAuthAccessTokenForCodeFlow(clientId, grantType, redirectURI, c
return accessRsp, nil
}
func (a *App) newSession(appName string, user *model.User) (*model.Session, *model.AppError) {
func (a *App) newSession(app *model.OAuthApp, user *model.User) (*model.Session, *model.AppError) {
// Set new token an session
session := &model.Session{UserId: user.Id, Roles: user.Roles, IsOAuth: true}
session.GenerateCSRF()
a.ch.srv.userService.SetSessionExpireInDays(session, *a.Config().ServiceSettings.SessionLengthSSOInDays)
session.AddProp(model.SessionPropPlatform, appName)
session.AddProp(model.SessionPropPlatform, app.Name)
session.AddProp(model.SessionPropOAuthAppID, app.Id)
session.AddProp(model.SessionPropMattermostAppID, app.MattermostAppID)
session.AddProp(model.SessionPropOs, "OAuth2")
session.AddProp(model.SessionPropBrowser, "OAuth2")
@@ -386,13 +388,13 @@ func (a *App) newSession(appName string, user *model.User) (*model.Session, *mod
return session, nil
}
func (a *App) newSessionUpdateToken(appName string, accessData *model.AccessData, user *model.User) (*model.AccessResponse, *model.AppError) {
func (a *App) newSessionUpdateToken(app *model.OAuthApp, accessData *model.AccessData, user *model.User) (*model.AccessResponse, *model.AppError) {
// Remove the previous session
if err := a.Srv().Store.Session().Remove(accessData.Token); err != nil {
mlog.Warn("error removing access data token from session", mlog.Err(err))
}
session, err := a.newSession(appName, user)
session, err := a.newSession(app, user)
if err != nil {
return nil, err
}