Ability to use OAuth login from mobile (#6432)

Этот коммит содержится в:
enahum
2017-05-17 17:33:44 -04:00
коммит произвёл Joram Wilander
родитель d103ed6ca9
Коммит 5f9a28ed6f
3 изменённых файлов: 31 добавлений и 8 удалений

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

@@ -35,6 +35,7 @@ func InitOAuth() {
// API version independent OAuth as a client endpoints
BaseRoutes.Root.Handle("/oauth/{service:[A-Za-z0-9]+}/complete", ApiHandler(completeOAuth)).Methods("GET")
BaseRoutes.Root.Handle("/oauth/{service:[A-Za-z0-9]+}/login", ApiHandler(loginWithOAuth)).Methods("GET")
BaseRoutes.Root.Handle("/oauth/{service:[A-Za-z0-9]+}/mobile_login", ApiHandler(mobileLoginWithOAuth)).Methods("GET")
BaseRoutes.Root.Handle("/oauth/{service:[A-Za-z0-9]+}/signup", ApiHandler(signupWithOAuth)).Methods("GET")
// Old endpoints for backwards compatibility, needed to not break SSO for any old setups
@@ -417,9 +418,6 @@ func completeOAuth(c *Context, w http.ResponseWriter, r *http.Request) {
} else if action == model.OAUTH_ACTION_SSO_TO_EMAIL {
redirectUrl = app.GetProtocol(r) + "://" + r.Host + "/claim?email=" + url.QueryEscape(props["email"])
} else if action == model.OAUTH_ACTION_MOBILE {
ReturnStatusOK(w)
return
} else {
session, err := app.DoLogin(w, r, user, "")
if err != nil {
@@ -432,7 +430,12 @@ func completeOAuth(c *Context, w http.ResponseWriter, r *http.Request) {
redirectUrl = c.GetSiteURLHeader()
}
http.Redirect(w, r, redirectUrl, http.StatusTemporaryRedirect)
if action == model.OAUTH_ACTION_MOBILE {
ReturnStatusOK(w)
return
} else {
http.Redirect(w, r, redirectUrl, http.StatusTemporaryRedirect)
}
}
func loginWithOAuth(c *Context, w http.ResponseWriter, r *http.Request) {
@@ -450,7 +453,27 @@ func loginWithOAuth(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
if authUrl, err := app.GetOAuthLoginEndpoint(c.Params.Service, teamId, redirectTo, loginHint); err != nil {
if authUrl, err := app.GetOAuthLoginEndpoint(c.Params.Service, teamId, model.OAUTH_ACTION_LOGIN, redirectTo, loginHint); err != nil {
c.Err = err
return
} else {
http.Redirect(w, r, authUrl, http.StatusFound)
}
}
func mobileLoginWithOAuth(c *Context, w http.ResponseWriter, r *http.Request) {
c.RequireService()
if c.Err != nil {
return
}
teamId, err := app.GetTeamIdFromQuery(r.URL.Query())
if err != nil {
c.Err = err
return
}
if authUrl, err := app.GetOAuthLoginEndpoint(c.Params.Service, teamId, model.OAUTH_ACTION_MOBILE, "", ""); err != nil {
c.Err = err
return
} else {