auth
auth/authd/server.go
Wire up the postgres database for authd. Have authd use the AUTH_PG_DB environment variable to detect support for the postgres *Stores, and if postgres is supported, use it. If postgres isn't supported, fall back on the in-memory store. Also create-if-not-exists the test scopes, instead of panicking when the scope already exists.
| paddy@100 | 1 package main |
| paddy@100 | 2 |
| paddy@100 | 3 import ( |
| paddy@100 | 4 "html/template" |
| paddy@100 | 5 "log" |
| paddy@100 | 6 "net/http" |
| paddy@157 | 7 "os" |
| paddy@100 | 8 |
| paddy@107 | 9 "code.secondbit.org/auth.hg" |
| paddy@100 | 10 "github.com/gorilla/mux" |
| paddy@100 | 11 ) |
| paddy@100 | 12 |
| paddy@100 | 13 func main() { |
| paddy@151 | 14 log.SetFlags(log.LstdFlags | log.Llongfile) |
| paddy@157 | 15 var config auth.Config |
| paddy@157 | 16 if os.Getenv("AUTH_PG_DB") != "" { |
| paddy@157 | 17 p, err := auth.NewPostgres(os.Getenv("AUTH_PG_DB")) |
| paddy@157 | 18 if err != nil { |
| paddy@157 | 19 panic(err) |
| paddy@157 | 20 } |
| paddy@157 | 21 config.ClientStore = &p |
| paddy@157 | 22 config.AuthCodeStore = &p |
| paddy@157 | 23 config.ProfileStore = &p |
| paddy@157 | 24 config.TokenStore = &p |
| paddy@157 | 25 config.SessionStore = &p |
| paddy@157 | 26 config.ScopeStore = &p |
| paddy@157 | 27 } else { |
| paddy@157 | 28 store := auth.NewMemstore() |
| paddy@157 | 29 config.ClientStore = store |
| paddy@157 | 30 config.AuthCodeStore = store |
| paddy@157 | 31 config.ProfileStore = store |
| paddy@157 | 32 config.TokenStore = store |
| paddy@157 | 33 config.SessionStore = store |
| paddy@157 | 34 config.ScopeStore = store |
| paddy@149 | 35 } |
| paddy@157 | 36 config.Template = template.Must(template.New("base").ParseGlob("./templates/*.gotmpl")) |
| paddy@157 | 37 config.LoginURI = "/login" |
| paddy@157 | 38 err := config.Init() |
| paddy@106 | 39 if err != nil { |
| paddy@106 | 40 log.Fatal(err) |
| paddy@106 | 41 } |
| paddy@100 | 42 context, err := auth.NewContext(config) |
| paddy@100 | 43 if err != nil { |
| paddy@100 | 44 panic(err) |
| paddy@100 | 45 } |
| paddy@149 | 46 err = context.CreateScopes([]auth.Scope{ |
| paddy@149 | 47 {ID: "testscope", Name: "Test Scope"}, |
| paddy@149 | 48 }) |
| paddy@157 | 49 if err != nil && err != auth.ErrScopeAlreadyExists { |
| paddy@157 | 50 log.Fatal(err) |
| paddy@152 | 51 } |
| paddy@100 | 52 |
| paddy@100 | 53 router := mux.NewRouter() |
| paddy@100 | 54 auth.RegisterOAuth2(router, context) |
| paddy@100 | 55 auth.RegisterSessionHandlers(router, context) |
| paddy@106 | 56 auth.RegisterProfileHandlers(router, context) |
| paddy@108 | 57 auth.RegisterClientHandlers(router, context) |
| paddy@100 | 58 http.Handle("/", router) |
| paddy@100 | 59 log.Fatal(http.ListenAndServe(":8080", nil)) |
| paddy@100 | 60 } |