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  }