github.com/wanliu/go-oauth2-server@v0.0.0-20180817021415-f928fa1580df/cmd/setup.go (about) 1 package cmd 2 3 import ( 4 "fmt" 5 "log" 6 "net/url" 7 8 "github.com/tcnksm/go-input" 9 "github.com/wanliu/go-oauth2-server/services" 10 ) 11 12 // LoadData loads fixtures 13 func Setup(configBackend string) error { 14 cnf, db, err := initConfigDB(true, false, configBackend) 15 if err != nil { 16 return err 17 } 18 defer db.Close() 19 20 // start the services 21 if err := services.Init(cnf, db); err != nil { 22 return err 23 } 24 defer services.Close() 25 26 ui := &input.UI{} 27 28 query := "What is Admin email?" 29 name, err := ui.Ask(query, &input.Options{ 30 // Read the default val from env var 31 Default: "admin@admin", 32 Required: true, 33 Loop: true, 34 }) 35 if err != nil { 36 log.Fatal(err) 37 } 38 39 query = "What is Admin password?" 40 pass, err := ui.Ask(query, &input.Options{ 41 Required: true, 42 Mask: true, 43 MaskDefault: true, 44 }) 45 if err != nil { 46 log.Fatal(err) 47 } 48 49 services.OauthService.CreateRole("superuser", "Superuser") 50 services.OauthService.CreateRole("user", "User") 51 services.OauthService.CreateUser("superuser", name, pass) 52 log.Printf("Create superuser %s is success.\n", name) 53 54 // create default client for normal signin 55 query = "What is login domain?" 56 domain, err := ui.Ask(query, &input.Options{ 57 Default: "http://localhost:8080/web/", 58 Required: true, 59 Loop: true, 60 ValidateFunc: func(s string) error { 61 _, err = url.Parse(s) 62 if err != nil { 63 return fmt.Errorf("input must a valid url or domain") 64 } 65 return nil 66 }, 67 }) 68 69 if err != nil { 70 log.Fatal(err) 71 } 72 73 redirectUri, err := url.Parse(domain) 74 if err != nil { 75 log.Fatal(err) 76 } 77 78 services.OauthService.CreateScope("read", true) 79 services.OauthService.CreateScope("read_write", false) 80 services.OauthService.CreateClient("normal-client", "normal-client-secret", redirectUri.String()) 81 services.OauthService.CreateClient("admin-client", "admin-client-secret", redirectUri.String()) 82 83 return nil 84 }