func loginHandle(f *Config, s sessions.Session, w http.ResponseWriter, r *http.Request) { next := extractPath(r.URL.Query().Get(RedirectParam)) s.Set("_RedirectURL", next) // if len(f.ClientID) > 0 && len(f.ClientSecret) > 0 { // http.Redirect(w, r, f.authCodeURL(), 302) // }else { path := fmt.Sprintf("%s?redirect_uri=%s", f.Endpoint.LoginURL, f.RedirectURL) http.Redirect(w, r, path, 302) // } }
// UpdateUser updates the User object stored in the session. This is useful incase a change // is made to the user model that needs to persist across requests. func UpdateUser(s sessions.Session, user IUser) error { s.Set(SessionKey, user.UniqueId()) return nil }
func callbackhandle(f *Config, c martini.Context, s sessions.Session, w http.ResponseWriter, r *http.Request) { rurl, _ := s.Get("_RedirectURL").(string) rurl = extractPath(rurl) if len(r.URL.Query().Get("code")) > 0 { //获取token tk, error := f.authTokenURL(r.URL.Query().Get("code")) if error == nil && tk.Valid() { val, _ := json.Marshal(tk) s.Set(keyToken, val) fmt.Println("登陆成功") s.AddFlash("登陆成功") c.Invoke(oAuthUserLoginCallback) if len(rurl) == 0 { rurl = "/" } fmt.Println("rul:", rurl) http.Redirect(w, r, rurl, 302) return } else { s.AddFlash("登陆失败") http.Redirect(w, r, PathError, 302) return } } if len(r.URL.Query().Get("client_id")) > 0 { f.ClientID = r.URL.Query().Get("client_id") f.ClientSecret = r.URL.Query().Get("client_secret") http.Redirect(w, r, f.authCodeURL(), 302) return } // fmt.Println("call:",r) // if (len(r.URL.Query().Get("code"))>0) { // fmt.Println("callFUN:q token") // rurl,_:= s.Get("_RedirectURL").(string) // //获取token // tk, error := f.authTokenURL(r.URL.Query().Get("code")) // if error==nil && tk.Valid() { // val, _ := json.Marshal(tk) // s.Set(keyToken, val) // s.AddFlash("success","登陆成功") // c.Invoke(oAuthUserLogin) // // // http.RedirectHandler(rurl, 302) // return // }else{ // s.AddFlash("warning","登陆失败") // http.Redirect(w, r, PathError, 302) // return // } // }else{ // fmt.Println("callFUN:1111") // //获取code // if len(r.URL.Query().Get("client_id"))>0 { // fmt.Println("callFUN:q code") // f.ClientID = r.URL.Query().Get("client_id") // f.ClientSecret = r.URL.Query().Get("client_secret") // http.Redirect(w, r, f.authCodeURL(), 302) // return // } // http.Redirect(w, r, "/", 302) // } // fmt.Println("callFUN:sppp") }