diff --git a/modules/social/social.go b/modules/social/social.go index 8406cd52c..bdafae690 100644 --- a/modules/social/social.go +++ b/modules/social/social.go @@ -39,6 +39,8 @@ func NewOauthService() { return } + oauth2.AppSubUrl = setting.AppSubUrl + setting.OauthService = &setting.Oauther{} setting.OauthService.OauthInfos = make(map[string]*setting.OauthInfo) diff --git a/routers/user/social.go b/routers/user/social.go index 5d2f2027c..a8a94a5c4 100644 --- a/routers/user/social.go +++ b/routers/user/social.go @@ -8,36 +8,28 @@ import ( "encoding/json" "errors" "fmt" - "net/url" // "strings" - // "time" + "time" "github.com/macaron-contrib/oauth2" - // "github.com/gogits/gogs/models" + "github.com/gogits/gogs/models" "github.com/gogits/gogs/modules/log" "github.com/gogits/gogs/modules/middleware" "github.com/gogits/gogs/modules/setting" "github.com/gogits/gogs/modules/social" ) -func extractPath(next string) string { - n, err := url.Parse(next) - if err != nil { - return setting.AppSubUrl + "/" - } - return n.Path -} - func SocialSignIn(ctx *middleware.Context) { if setting.OauthService == nil { ctx.Handle(404, "OAuth2 service not enabled", nil) return } + next := setting.AppSubUrl + "/user/login" info := ctx.Session.Get(oauth2.KEY_TOKEN) if info == nil { - ctx.Redirect(setting.AppSubUrl + "/user/login") + ctx.Redirect(next) return } @@ -61,39 +53,39 @@ func SocialSignIn(ctx *middleware.Context) { } log.Info("social.SocialSignIn(social login): %s", ui) - // oa, err := models.GetOauth2(ui.Identity) - // switch err { - // case nil: - // ctx.Session.Set("uid", oa.User.Id) - // ctx.Session.Set("uname", oa.User.Name) - // case models.ErrOauth2RecordNotExist: - // raw, _ := json.Marshal(tk) - // oa = &models.Oauth2{ - // Uid: -1, - // Type: connect.Type(), - // Identity: ui.Identity, - // Token: string(raw), - // } - // log.Trace("social.SocialSignIn(oa): %v", oa) - // if err = models.AddOauth2(oa); err != nil { - // log.Error(4, "social.SocialSignIn(add oauth2): %v", err) // 501 - // return - // } - // case models.ErrOauth2NotAssociated: - // next = setting.AppSubUrl + "/user/sign_up" - // default: - // ctx.Handle(500, "social.SocialSignIn(GetOauth2)", err) - // return - // } + oa, err := models.GetOauth2(ui.Identity) + switch err { + case nil: + ctx.Session.Set("uid", oa.User.Id) + ctx.Session.Set("uname", oa.User.Name) + case models.ErrOauth2RecordNotExist: + raw, _ := json.Marshal(tk) + oa = &models.Oauth2{ + Uid: -1, + Type: connect.Type(), + Identity: ui.Identity, + Token: string(raw), + } + log.Trace("social.SocialSignIn(oa): %v", oa) + if err = models.AddOauth2(oa); err != nil { + log.Error(4, "social.SocialSignIn(add oauth2): %v", err) // 501 + return + } + case models.ErrOauth2NotAssociated: + next = setting.AppSubUrl + "/user/sign_up" + default: + ctx.Handle(500, "social.SocialSignIn(GetOauth2)", err) + return + } - // oa.Updated = time.Now() - // if err = models.UpdateOauth2(oa); err != nil { - // log.Error(4, "UpdateOauth2: %v", err) - // } + oa.Updated = time.Now() + if err = models.UpdateOauth2(oa); err != nil { + log.Error(4, "UpdateOauth2: %v", err) + } - // ctx.Session.Set("socialId", oa.Id) - // ctx.Session.Set("socialName", ui.Name) - // ctx.Session.Set("socialEmail", ui.Email) - // log.Trace("social.SocialSignIn(social ID): %v", oa.Id) - // ctx.Redirect(next) + ctx.Session.Set("socialId", oa.Id) + ctx.Session.Set("socialName", ui.Name) + ctx.Session.Set("socialEmail", ui.Email) + log.Trace("social.SocialSignIn(social ID): %v", oa.Id) + ctx.Redirect(next) } diff --git a/templates/user/auth/signin.tmpl b/templates/user/auth/signin.tmpl index 547480771..78d6febb8 100644 --- a/templates/user/auth/signin.tmpl +++ b/templates/user/auth/signin.tmpl @@ -26,18 +26,16 @@ {{if not .IsSocialLogin}}{{.i18n.Tr "auth.forget_password"}}{{end}} - {{if not .IsSocialLogin}}
- {{if .OauthEnabled}} + {{if and (not .IsSocialLogin) .OauthEnabled}}