mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-11-04 10:44:12 +01:00 
			
		
		
		
	split into social.go
This commit is contained in:
		
							parent
							
								
									b0e7dd6864
								
							
						
					
					
						commit
						5180506678
					
				
							
								
								
									
										49
									
								
								routers/user/social.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								routers/user/social.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,49 @@
 | 
				
			|||||||
 | 
					// Copyright 2014 The Gogs Authors. All rights reserved.
 | 
				
			||||||
 | 
					// Use of this source code is governed by a MIT-style
 | 
				
			||||||
 | 
					// license that can be found in the LICENSE file.
 | 
				
			||||||
 | 
					package user
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"encoding/json"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"code.google.com/p/goauth2/oauth"
 | 
				
			||||||
 | 
						"github.com/gogits/gogs/modules/log"
 | 
				
			||||||
 | 
						"github.com/martini-contrib/oauth2"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// github && google && ...
 | 
				
			||||||
 | 
					func SocialSignIn(tokens oauth2.Tokens) {
 | 
				
			||||||
 | 
						transport := &oauth.Transport{}
 | 
				
			||||||
 | 
						transport.Token = &oauth.Token{
 | 
				
			||||||
 | 
							AccessToken:  tokens.Access(),
 | 
				
			||||||
 | 
							RefreshToken: tokens.Refresh(),
 | 
				
			||||||
 | 
							Expiry:       tokens.ExpiryTime(),
 | 
				
			||||||
 | 
							Extra:        tokens.ExtraData(),
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Github API refer: https://developer.github.com/v3/users/
 | 
				
			||||||
 | 
						// FIXME: need to judge url
 | 
				
			||||||
 | 
						type GithubUser struct {
 | 
				
			||||||
 | 
							Id    int    `json:"id"`
 | 
				
			||||||
 | 
							Name  string `json:"login"`
 | 
				
			||||||
 | 
							Email string `json:"email"`
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Make the request.
 | 
				
			||||||
 | 
						scope := "https://api.github.com/user"
 | 
				
			||||||
 | 
						r, err := transport.Client().Get(scope)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							log.Error("connect with github error: %s", err)
 | 
				
			||||||
 | 
							// FIXME: handle error page
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						defer r.Body.Close()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						user := &GithubUser{}
 | 
				
			||||||
 | 
						err = json.NewDecoder(r.Body).Decode(user)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							log.Error("Get: %s", err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						log.Info("login: %s", user.Name)
 | 
				
			||||||
 | 
						// FIXME: login here, user email to check auth, if not registe, then generate a uniq username
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -5,14 +5,11 @@
 | 
				
			|||||||
package user
 | 
					package user
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"encoding/json"
 | 
					 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
	"net/url"
 | 
						"net/url"
 | 
				
			||||||
	"strings"
 | 
						"strings"
 | 
				
			||||||
	"code.google.com/p/goauth2/oauth"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/go-martini/martini"
 | 
						"github.com/go-martini/martini"
 | 
				
			||||||
	"github.com/martini-contrib/oauth2"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/gogits/gogs/models"
 | 
						"github.com/gogits/gogs/models"
 | 
				
			||||||
	"github.com/gogits/gogs/modules/auth"
 | 
						"github.com/gogits/gogs/modules/auth"
 | 
				
			||||||
@ -77,43 +74,6 @@ func Profile(ctx *middleware.Context, params martini.Params) {
 | 
				
			|||||||
	ctx.HTML(200, "user/profile")
 | 
						ctx.HTML(200, "user/profile")
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// github && google && ...
 | 
					 | 
				
			||||||
func SocialSignIn(tokens oauth2.Tokens) {
 | 
					 | 
				
			||||||
	transport := &oauth.Transport{}
 | 
					 | 
				
			||||||
	transport.Token = &oauth.Token{
 | 
					 | 
				
			||||||
		AccessToken:  tokens.Access(),
 | 
					 | 
				
			||||||
		RefreshToken: tokens.Refresh(),
 | 
					 | 
				
			||||||
		Expiry:       tokens.ExpiryTime(),
 | 
					 | 
				
			||||||
		Extra:        tokens.ExtraData(),
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// Github API refer: https://developer.github.com/v3/users/
 | 
					 | 
				
			||||||
	// FIXME: need to judge url
 | 
					 | 
				
			||||||
	type GithubUser struct {
 | 
					 | 
				
			||||||
		Id    int    `json:"id"`
 | 
					 | 
				
			||||||
		Name  string `json:"login"`
 | 
					 | 
				
			||||||
		Email string `json:"email"`
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// Make the request.
 | 
					 | 
				
			||||||
	scope := "https://api.github.com/user"
 | 
					 | 
				
			||||||
	r, err := transport.Client().Get(scope)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		log.Error("connect with github error: %s", err)
 | 
					 | 
				
			||||||
		// FIXME: handle error page
 | 
					 | 
				
			||||||
		return
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	defer r.Body.Close()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	user := &GithubUser{}
 | 
					 | 
				
			||||||
	err = json.NewDecoder(r.Body).Decode(user)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		log.Error("Get: %s", err)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	log.Info("login: %s", user.Name)
 | 
					 | 
				
			||||||
	// FIXME: login here, user email to check auth, if not registe, then generate a uniq username
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func SignIn(ctx *middleware.Context, form auth.LogInForm) {
 | 
					func SignIn(ctx *middleware.Context, form auth.LogInForm) {
 | 
				
			||||||
	ctx.Data["Title"] = "Log In"
 | 
						ctx.Data["Title"] = "Log In"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user