auth
auth/config.go
Add request helpers. Fix a typo in the requestErrConflict constant. Create a response type that is used to build responses before sending them down the wire. Create vars for a few common types of error responses that never change. Create a negotiate middleware function that will respond with a 406 error if the client requests an encoding that we can't support. Create an encode helper that determines the requested encoding and uses it to send the data down the wire. Move our wrap middleware from the oauth2.go file to the request.go file, where it's more likely to be looked for.
| paddy@96 | 1 package auth |
| paddy@96 | 2 |
| paddy@96 | 3 import ( |
| paddy@96 | 4 "errors" |
| paddy@96 | 5 "html/template" |
| paddy@101 | 6 "log" |
| paddy@96 | 7 ) |
| paddy@96 | 8 |
| paddy@96 | 9 var ( |
| paddy@96 | 10 // ErrInvalidLoginURI is returned when a Context is instantiated with a Config object that specifies a LoginURI that can't be parsed as a URL. |
| paddy@96 | 11 ErrInvalidLoginURI = errors.New("invalid login URI") |
| paddy@102 | 12 // ErrConfigNotInitialized is returned when a Context is instantiated with a Config object that hasn't had its Init function called. |
| paddy@102 | 13 ErrConfigNotInitialized = errors.New("config not initialized") |
| paddy@96 | 14 ) |
| paddy@96 | 15 |
| paddy@96 | 16 // Config holds the configuration values necessary to run a server. A Config |
| paddy@96 | 17 // instance is the only way to instantiate a Context variable. |
| paddy@96 | 18 type Config struct { |
| paddy@96 | 19 ClientStore clientStore |
| paddy@96 | 20 AuthCodeStore authorizationCodeStore |
| paddy@96 | 21 ProfileStore profileStore |
| paddy@96 | 22 TokenStore tokenStore |
| paddy@96 | 23 SessionStore sessionStore |
| paddy@96 | 24 Template *template.Template |
| paddy@96 | 25 LoginURI string |
| paddy@96 | 26 iterations int |
| paddy@96 | 27 } |
| paddy@101 | 28 |
| paddy@102 | 29 // Init is a function that preps the Config object to be used for Context creation, setting variables |
| paddy@102 | 30 // that are determined at the beginning of program execution. |
| paddy@101 | 31 func (c *Config) Init() error { |
| paddy@101 | 32 scheme, ok := passphraseSchemes[CurPassphraseScheme] |
| paddy@101 | 33 if !ok { |
| paddy@101 | 34 return ErrInvalidPassphraseScheme |
| paddy@101 | 35 } |
| paddy@101 | 36 var err error |
| paddy@101 | 37 c.iterations, err = scheme.calculateIterations() |
| paddy@101 | 38 if err != nil { |
| paddy@101 | 39 return err |
| paddy@101 | 40 } |
| paddy@101 | 41 log.Printf("Generating passphrases with %d iterations...\n", c.iterations) |
| paddy@101 | 42 return nil |
| paddy@101 | 43 } |