| @@ -6,8 +6,6 @@ package models | |||||
| import ( | import ( | ||||
| "errors" | "errors" | ||||
| "github.com/gogits/gogs/modules/log" | |||||
| ) | ) | ||||
| // OT: Oauth2 Type | // OT: Oauth2 Type | ||||
| @@ -20,7 +18,6 @@ const ( | |||||
| var ( | var ( | ||||
| ErrOauth2RecordNotExists = errors.New("not exists oauth2 record") | ErrOauth2RecordNotExists = errors.New("not exists oauth2 record") | ||||
| ErrOauth2NotAssociatedWithUser = errors.New("not associated with user") | ErrOauth2NotAssociatedWithUser = errors.New("not associated with user") | ||||
| ErrOauth2NotExist = errors.New("not exist oauth2") | |||||
| ) | ) | ||||
| type Oauth2 struct { | type Oauth2 struct { | ||||
| @@ -61,12 +58,11 @@ func GetOauth2(identity string) (oa *Oauth2, err error) { | |||||
| func GetOauth2ById(id int64) (oa *Oauth2, err error) { | func GetOauth2ById(id int64) (oa *Oauth2, err error) { | ||||
| oa = new(Oauth2) | oa = new(Oauth2) | ||||
| has, err := orm.Id(id).Get(oa) | has, err := orm.Id(id).Get(oa) | ||||
| log.Info("oa: %v", oa) | |||||
| if err != nil { | if err != nil { | ||||
| return nil, err | return nil, err | ||||
| } | } | ||||
| if !has { | if !has { | ||||
| return nil, ErrOauth2NotExist | |||||
| return nil, ErrOauth2RecordNotExists | |||||
| } | } | ||||
| return oa, nil | return oa, nil | ||||
| } | } | ||||
| @@ -17,7 +17,6 @@ import ( | |||||
| "github.com/gogits/gogs/modules/base" | "github.com/gogits/gogs/modules/base" | ||||
| "github.com/gogits/gogs/modules/log" | "github.com/gogits/gogs/modules/log" | ||||
| "github.com/gogits/gogs/modules/middleware" | "github.com/gogits/gogs/modules/middleware" | ||||
| "github.com/gogits/gogs/modules/oauth2" | |||||
| ) | ) | ||||
| type SocialConnector interface { | type SocialConnector interface { | ||||
| @@ -77,7 +76,10 @@ func extractPath(next string) string { | |||||
| } | } | ||||
| // github && google && ... | // github && google && ... | ||||
| func SocialSignIn(ctx *middleware.Context, tokens oauth2.Tokens) { | |||||
| func SocialSignIn(ctx *middleware.Context) { | |||||
| //if base.OauthService != nil && base.OauthService.GitHub.Enabled { | |||||
| //} | |||||
| var socid int64 | var socid int64 | ||||
| var ok bool | var ok bool | ||||
| next := extractPath(ctx.Query("next")) | next := extractPath(ctx.Query("next")) | ||||
| @@ -142,9 +144,9 @@ func SocialSignIn(ctx *middleware.Context, tokens oauth2.Tokens) { | |||||
| return | return | ||||
| } | } | ||||
| case models.ErrOauth2NotAssociatedWithUser: | case models.ErrOauth2NotAssociatedWithUser: | ||||
| ctx.Session.Set("socialId", oa.Id) | |||||
| ctx.Session.Set("socialName", soc.Name()) | ctx.Session.Set("socialName", soc.Name()) | ||||
| ctx.Session.Set("socialEmail", soc.Email()) | ctx.Session.Set("socialEmail", soc.Email()) | ||||
| ctx.Session.Set("socialId", oa.Id) | |||||
| ctx.Redirect("/user/sign_up") | ctx.Redirect("/user/sign_up") | ||||
| return | return | ||||
| default: | default: | ||||
| @@ -82,7 +82,6 @@ func SignIn(ctx *middleware.Context) { | |||||
| ctx.Data["OauthGitHubEnabled"] = base.OauthService.GitHub.Enabled | ctx.Data["OauthGitHubEnabled"] = base.OauthService.GitHub.Enabled | ||||
| } | } | ||||
| var user *models.User | |||||
| // Check auto-login. | // Check auto-login. | ||||
| userName := ctx.GetCookie(base.CookieUserName) | userName := ctx.GetCookie(base.CookieUserName) | ||||
| if len(userName) == 0 { | if len(userName) == 0 { | ||||
| @@ -91,7 +90,6 @@ func SignIn(ctx *middleware.Context) { | |||||
| } | } | ||||
| isSucceed := false | isSucceed := false | ||||
| var err error | |||||
| defer func() { | defer func() { | ||||
| if !isSucceed { | if !isSucceed { | ||||
| log.Trace("%s auto-login cookie cleared: %s", ctx.Req.RequestURI, userName) | log.Trace("%s auto-login cookie cleared: %s", ctx.Req.RequestURI, userName) | ||||
| @@ -101,7 +99,7 @@ func SignIn(ctx *middleware.Context) { | |||||
| } | } | ||||
| }() | }() | ||||
| user, err = models.GetUserByName(userName) | |||||
| user, err := models.GetUserByName(userName) | |||||
| if err != nil { | if err != nil { | ||||
| ctx.HTML(500, "user/signin") | ctx.HTML(500, "user/signin") | ||||
| return | return | ||||
| @@ -181,6 +179,8 @@ func SignOut(ctx *middleware.Context) { | |||||
| ctx.Session.Delete("userId") | ctx.Session.Delete("userId") | ||||
| ctx.Session.Delete("userName") | ctx.Session.Delete("userName") | ||||
| ctx.Session.Delete("socialId") | ctx.Session.Delete("socialId") | ||||
| ctx.Session.Delete("socialName") | |||||
| ctx.Session.Delete("socialEmail") | |||||
| ctx.SetCookie(base.CookieUserName, "", -1) | ctx.SetCookie(base.CookieUserName, "", -1) | ||||
| ctx.SetCookie(base.CookieRememberName, "", -1) | ctx.SetCookie(base.CookieRememberName, "", -1) | ||||
| ctx.Redirect("/") | ctx.Redirect("/") | ||||
| @@ -3,7 +3,15 @@ | |||||
| <div class="container" id="body" data-page="user-signin"> | <div class="container" id="body" data-page="user-signin"> | ||||
| <form action="/user/login" method="post" class="form-horizontal card" id="login-card"> | <form action="/user/login" method="post" class="form-horizontal card" id="login-card"> | ||||
| {{.CsrfTokenHtml}} | {{.CsrfTokenHtml}} | ||||
| <h3>Log in</h3> | |||||
| <h3>Log in | |||||
| {{if .OauthEnabled}} | |||||
| <small class="pull-right">social login: | |||||
| {{if .OauthGitHubEnabled}} | |||||
| <a href="/user/login/github?next=/user/sign_up"><i class="fa fa-github-square fa-2x"></i></a> | |||||
| {{end}} | |||||
| </small> | |||||
| {{end}} | |||||
| </h3> | |||||
| {{template "base/alert" .}} | {{template "base/alert" .}} | ||||
| <div class="form-group {{if .Err_UserName}}has-error has-feedback{{end}}"> | <div class="form-group {{if .Err_UserName}}has-error has-feedback{{end}}"> | ||||
| <label class="col-md-4 control-label">Username: </label> | <label class="col-md-4 control-label">Username: </label> | ||||
| @@ -43,12 +51,12 @@ | |||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| {{if .OauthEnabled}} | |||||
| <!-- {{if .OauthEnabled}} | |||||
| <div class="form-group text-center" id="social-login"> | <div class="form-group text-center" id="social-login"> | ||||
| <h4>Log In with Social Accounts</h4> | <h4>Log In with Social Accounts</h4> | ||||
| {{if .OauthGitHubEnabled}}<a href="/user/login/github?next=/user/sign_up"><i class="fa fa-github-square fa-3x"></i></a>{{end}} | {{if .OauthGitHubEnabled}}<a href="/user/login/github?next=/user/sign_up"><i class="fa fa-github-square fa-3x"></i></a>{{end}} | ||||
| </div> | </div> | ||||
| {{end}} | |||||
| {{end}} --> | |||||
| </form> | </form> | ||||
| </div> | </div> | ||||
| {{template "base/footer" .}} | {{template "base/footer" .}} | ||||
| @@ -12,8 +12,6 @@ | |||||
| <h3>Sign Up</h3> | <h3>Sign Up</h3> | ||||
| {{end}} | {{end}} | ||||
| {{template "base/alert" .}} | {{template "base/alert" .}} | ||||
| {{if .IsSocialLogin}} | |||||
| {{end}} | |||||
| <div class="form-group {{if .Err_UserName}}has-error has-feedback{{end}}"> | <div class="form-group {{if .Err_UserName}}has-error has-feedback{{end}}"> | ||||
| <label class="col-md-4 control-label">Username: </label> | <label class="col-md-4 control-label">Username: </label> | ||||
| <div class="col-md-6"> | <div class="col-md-6"> | ||||
| @@ -23,7 +21,7 @@ | |||||
| <div class="form-group {{if .Err_Email}}has-error has-feedback{{end}}"> | <div class="form-group {{if .Err_Email}}has-error has-feedback{{end}}"> | ||||
| <label class="col-md-4 control-label">Email: </label> | <label class="col-md-4 control-label">Email: </label> | ||||
| <div class="col-md-6"> | <div class="col-md-6"> | ||||
| <input name="email" class="form-control" placeholder="Type your e-mail address" value="{{.email}}{{.socialEmail}}" required="required" title="Email is not valid"> | |||||
| <input name="email" class="form-control" placeholder="Type your e-mail address" value="{{.email}}" required="required" title="Email is not valid"> | |||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| @@ -20,7 +20,6 @@ import ( | |||||
| "github.com/gogits/gogs/modules/base" | "github.com/gogits/gogs/modules/base" | ||||
| "github.com/gogits/gogs/modules/log" | "github.com/gogits/gogs/modules/log" | ||||
| "github.com/gogits/gogs/modules/middleware" | "github.com/gogits/gogs/modules/middleware" | ||||
| "github.com/gogits/gogs/modules/oauth2" | |||||
| "github.com/gogits/gogs/routers" | "github.com/gogits/gogs/routers" | ||||
| "github.com/gogits/gogs/routers/admin" | "github.com/gogits/gogs/routers/admin" | ||||
| "github.com/gogits/gogs/routers/api/v1" | "github.com/gogits/gogs/routers/api/v1" | ||||
| @@ -59,17 +58,6 @@ func runWeb(*cli.Context) { | |||||
| m.Use(middleware.Renderer(middleware.RenderOptions{Funcs: []template.FuncMap{base.TemplateFuncs}})) | m.Use(middleware.Renderer(middleware.RenderOptions{Funcs: []template.FuncMap{base.TemplateFuncs}})) | ||||
| m.Use(middleware.InitContext()) | m.Use(middleware.InitContext()) | ||||
| if base.OauthService != nil { | |||||
| if base.OauthService.GitHub.Enabled { | |||||
| m.Use(oauth2.Github(&oauth2.Options{ | |||||
| ClientId: base.OauthService.GitHub.ClientId, | |||||
| ClientSecret: base.OauthService.GitHub.ClientSecret, | |||||
| RedirectURL: base.AppUrl + oauth2.PathCallback[1:], | |||||
| Scopes: []string{base.OauthService.GitHub.Scopes}, | |||||
| })) | |||||
| } | |||||
| } | |||||
| reqSignIn := middleware.Toggle(&middleware.ToggleOptions{SignInRequire: true}) | reqSignIn := middleware.Toggle(&middleware.ToggleOptions{SignInRequire: true}) | ||||
| ignSignIn := middleware.Toggle(&middleware.ToggleOptions{SignInRequire: base.Service.RequireSignInView}) | ignSignIn := middleware.Toggle(&middleware.ToggleOptions{SignInRequire: base.Service.RequireSignInView}) | ||||
| ignSignInAndCsrf := middleware.Toggle(&middleware.ToggleOptions{ | ignSignInAndCsrf := middleware.Toggle(&middleware.ToggleOptions{ | ||||