auth

Paddy 2014-07-18 Child:7b9e0fc20256

0:7a6f64db7246 Go to Latest

auth/info.go

Start rewriting the repo. This code originally was a carbon copy of https://github.com/RangelReale/osin, but I am methodically stripping out the extensible nature of it for a simpler interface, while simultaneously bringing the style into line with the Ducky style.

History
paddy@0 1 package oauth2
paddy@0 2
paddy@0 3 import "net/http"
paddy@0 4
paddy@0 5 // InfoRequest is a request for information about some AccessData
paddy@0 6 type InfoRequest struct {
paddy@0 7 Code string // Code to look up
paddy@0 8 AccessData AccessData // AccessData associated with Code
paddy@0 9 }
paddy@0 10
paddy@0 11 // HandleInfoRequest is an http.HandlerFunc for server information
paddy@0 12 // NOT an RFC specification.
paddy@0 13 func HandleInfoRequest(w http.ResponseWriter, r *http.Request, ctx Context) {
paddy@0 14 r.ParseForm()
paddy@0 15
paddy@0 16 // generate info request
paddy@0 17 ret := InfoRequest{
paddy@0 18 Code: r.Form.Get("code"),
paddy@0 19 }
paddy@0 20
paddy@0 21 if ret.Code == "" {
paddy@0 22 // TODO: return error
paddy@0 23 return
paddy@0 24 }
paddy@0 25
paddy@0 26 var err error
paddy@0 27
paddy@0 28 // load access data
paddy@0 29 ret.AccessData, err = loadAccess(ret.Code, ctx)
paddy@0 30 if err != nil {
paddy@0 31 // TODO: return error
paddy@0 32 return
paddy@0 33 }
paddy@0 34 if ret.AccessData.Client.RedirectURI == "" {
paddy@0 35 // TODO: return error
paddy@0 36 return
paddy@0 37 }
paddy@0 38 if ret.AccessData.IsExpired() {
paddy@0 39 // TODO: return error
paddy@0 40 return
paddy@0 41 }
paddy@0 42 // TODO: write ret
paddy@0 43 }
paddy@0 44
paddy@0 45 // FinishInfoRequest finalizes the request handled by HandleInfoRequest
paddy@0 46 func FinishInfoRequest(w http.ResponseWriter, r *http.Request, ir *InfoRequest, ctx Context) {
paddy@0 47 // output data
paddy@0 48 //w.Output["client_id"] = ir.AccessData.Client.Id
paddy@0 49 //w.Output["access_token"] = ir.AccessData.AccessToken
paddy@0 50 //w.Output["token_type"] = s.Config.TokenType
paddy@0 51 //w.Output["expires_in"] = ir.AccessData.CreatedAt.Add(time.Duration(ir.AccessData.ExpiresIn)*time.Second).Sub(time.Now()) / time.Second
paddy@0 52 //if ir.AccessData.RefreshToken != "" {
paddy@0 53 // w.Output["refresh_token"] = ir.AccessData.RefreshToken
paddy@0 54 //}
paddy@0 55 //if ir.AccessData.Scope != "" {
paddy@0 56 // w.Output["scope"] = ir.AccessData.Scope
paddy@0 57 //}
paddy@0 58 // TODO: write output
paddy@0 59 }