Browse Source

clean oauth2 code

skyblue 11 years ago
parent
commit
5c1312f38e
6 changed files with 21 additions and 29 deletions
  1. 1 5
      models/oauth2.go
  2. 5 3
      routers/user/social.go
  3. 3 3
      routers/user/user.go
  4. 11 3
      templates/user/signin.tmpl
  5. 1 3
      templates/user/signup.tmpl
  6. 0 12
      web.go

+ 1 - 5
models/oauth2.go

@@ -6,8 +6,6 @@ package models
 
 import (
 	"errors"
-
-	"github.com/gogits/gogs/modules/log"
 )
 
 // OT: Oauth2 Type
@@ -20,7 +18,6 @@ const (
 var (
 	ErrOauth2RecordNotExists       = errors.New("not exists oauth2 record")
 	ErrOauth2NotAssociatedWithUser = errors.New("not associated with user")
-	ErrOauth2NotExist              = errors.New("not exist oauth2")
 )
 
 type Oauth2 struct {
@@ -61,12 +58,11 @@ func GetOauth2(identity string) (oa *Oauth2, err error) {
 func GetOauth2ById(id int64) (oa *Oauth2, err error) {
 	oa = new(Oauth2)
 	has, err := orm.Id(id).Get(oa)
-	log.Info("oa: %v", oa)
 	if err != nil {
 		return nil, err
 	}
 	if !has {
-		return nil, ErrOauth2NotExist
+		return nil, ErrOauth2RecordNotExists
 	}
 	return oa, nil
 }

+ 5 - 3
routers/user/social.go

@@ -17,7 +17,6 @@ import (
 	"github.com/gogits/gogs/modules/base"
 	"github.com/gogits/gogs/modules/log"
 	"github.com/gogits/gogs/modules/middleware"
-	"github.com/gogits/gogs/modules/oauth2"
 )
 
 type SocialConnector interface {
@@ -77,7 +76,10 @@ func extractPath(next string) string {
 }
 
 // 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 ok bool
 	next := extractPath(ctx.Query("next"))
@@ -142,9 +144,9 @@ func SocialSignIn(ctx *middleware.Context, tokens oauth2.Tokens) {
 			return
 		}
 	case models.ErrOauth2NotAssociatedWithUser:
+		ctx.Session.Set("socialId", oa.Id)
 		ctx.Session.Set("socialName", soc.Name())
 		ctx.Session.Set("socialEmail", soc.Email())
-		ctx.Session.Set("socialId", oa.Id)
 		ctx.Redirect("/user/sign_up")
 		return
 	default:

+ 3 - 3
routers/user/user.go

@@ -82,7 +82,6 @@ func SignIn(ctx *middleware.Context) {
 		ctx.Data["OauthGitHubEnabled"] = base.OauthService.GitHub.Enabled
 	}
 
-	var user *models.User
 	// Check auto-login.
 	userName := ctx.GetCookie(base.CookieUserName)
 	if len(userName) == 0 {
@@ -91,7 +90,6 @@ func SignIn(ctx *middleware.Context) {
 	}
 
 	isSucceed := false
-	var err error
 	defer func() {
 		if !isSucceed {
 			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 {
 		ctx.HTML(500, "user/signin")
 		return
@@ -181,6 +179,8 @@ func SignOut(ctx *middleware.Context) {
 	ctx.Session.Delete("userId")
 	ctx.Session.Delete("userName")
 	ctx.Session.Delete("socialId")
+	ctx.Session.Delete("socialName")
+	ctx.Session.Delete("socialEmail")
 	ctx.SetCookie(base.CookieUserName, "", -1)
 	ctx.SetCookie(base.CookieRememberName, "", -1)
 	ctx.Redirect("/")

+ 11 - 3
templates/user/signin.tmpl

@@ -3,7 +3,15 @@
 <div class="container" id="body" data-page="user-signin">
     <form action="/user/login" method="post" class="form-horizontal card" id="login-card">
         {{.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" .}}
         <div class="form-group {{if .Err_UserName}}has-error has-feedback{{end}}">
             <label class="col-md-4 control-label">Username: </label>
@@ -43,12 +51,12 @@
             </div>
         </div>
 
-        {{if .OauthEnabled}}
+      <!--   {{if .OauthEnabled}}
         <div class="form-group text-center" id="social-login">
             <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}}
         </div>
-        {{end}}
+        {{end}} -->
     </form>
 </div>
 {{template "base/footer" .}}

+ 1 - 3
templates/user/signup.tmpl

@@ -12,8 +12,6 @@
 			<h3>Sign Up</h3>
 		{{end}}
 	    {{template "base/alert" .}}
-		{{if .IsSocialLogin}}
-		{{end}}
 		<div class="form-group {{if .Err_UserName}}has-error has-feedback{{end}}">
 			<label class="col-md-4 control-label">Username: </label>
 			<div class="col-md-6">
@@ -23,7 +21,7 @@
 		<div class="form-group {{if .Err_Email}}has-error has-feedback{{end}}">
 			<label class="col-md-4 control-label">Email: </label>
 			<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>
 

+ 0 - 12
web.go

@@ -20,7 +20,6 @@ import (
 	"github.com/gogits/gogs/modules/base"
 	"github.com/gogits/gogs/modules/log"
 	"github.com/gogits/gogs/modules/middleware"
-	"github.com/gogits/gogs/modules/oauth2"
 	"github.com/gogits/gogs/routers"
 	"github.com/gogits/gogs/routers/admin"
 	"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.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})
 	ignSignIn := middleware.Toggle(&middleware.ToggleOptions{SignInRequire: base.Service.RequireSignInView})
 	ignSignInAndCsrf := middleware.Toggle(&middleware.ToggleOptions{