diff --git a/cmd/baseline/participants/participants_list.go b/cmd/baseline/participants/participants_list.go index 0fc4c59..367444b 100644 --- a/cmd/baseline/participants/participants_list.go +++ b/cmd/baseline/participants/participants_list.go @@ -60,7 +60,7 @@ func listParticipantsRun(cmd *cobra.Command, args []string) { if msgEndpoint, msgEndpointOk := participant.Metadata["messaging_endpoint"].(string); msgEndpointOk { endpoint = msgEndpoint } - result := fmt.Sprintf("%s\t%s\t%s\t%s\n", participant.ID.String(), *participant.Name, address, endpoint) + result := fmt.Sprintf("%s\t%s\t%s\t%s\n", *participant.ID, *participant.Name, address, endpoint) fmt.Print(result) } @@ -70,7 +70,7 @@ func listParticipantsRun(cmd *cobra.Command, args []string) { for i := range invitations { invitedParticipant := invitations[i] - result := fmt.Sprintf("%s\t%s\n", invitedParticipant.ID.String(), invitedParticipant.Email) + result := fmt.Sprintf("%s\t%s\n", *invitedParticipant.ID, invitedParticipant.Email) fmt.Print(result) } } diff --git a/cmd/common/baseline.go b/cmd/common/baseline.go index 21f949e..9675ff4 100644 --- a/cmd/common/baseline.go +++ b/cmd/common/baseline.go @@ -192,11 +192,11 @@ func RegisterWorkgroupOrganization(applicationID string) { if err == nil { // FIXME-- for _, org := range orgs { - if org.ID.String() == OrganizationID { + if *org.ID == OrganizationID { return } } - if len(orgs) > 0 && orgs[0].ID.String() == OrganizationID { + if len(orgs) > 0 && *orgs[0].ID == OrganizationID { return } } diff --git a/cmd/common/prompt.go b/cmd/common/prompt.go index cd20cf8..3f669b5 100644 --- a/cmd/common/prompt.go +++ b/cmd/common/prompt.go @@ -11,6 +11,7 @@ import ( "strings" "github.com/manifoldco/promptui" + "github.com/ockam-network/did" "github.com/provideplatform/provide-go/api/ident" "github.com/provideplatform/provide-go/api/nchain" "github.com/provideplatform/provide-go/api/vault" @@ -229,7 +230,7 @@ func RequireOrganization() error { } Organization = orgs[i] - OrganizationID = orgs[i].ID.String() + OrganizationID = *orgs[i].ID return nil } @@ -318,6 +319,17 @@ var MandatoryValidation = func(input string) error { return nil } +var MandatoryDIDValidation = func(input string) error { + if len(input) < 1 { + return errors.New("field can't be nil") + } + _, err := did.Parse(input) + if err != nil { + return errors.New("invalid DID") + } + return nil +} + var MandatoryNumberValidation = func(input string) error { if len(input) < 1 { return errors.New("field cant be nil") diff --git a/cmd/networks/networks_list.go b/cmd/networks/networks_list.go index 6e4b54a..922359e 100644 --- a/cmd/networks/networks_list.go +++ b/cmd/networks/networks_list.go @@ -1,6 +1,7 @@ package networks import ( + "encoding/json" "fmt" "log" "os" @@ -39,6 +40,35 @@ func listNetworks(cmd *cobra.Command, args []string) { } for i := range networks { network := networks[i] + + log.Println() + log.Printf("Network %s", network.ID.String()) + if network.ApplicationID != nil { + log.Printf(" appId: %s", network.ApplicationID.String()) + } + if network.UserID != nil { + log.Printf(" userId: %s", network.UserID) + } + if network.Name != nil { + log.Printf(" name: %s", *network.Name) + } + if network.Description != nil { + log.Printf(" desc: %s", *network.Description) + } + log.Printf(" enab: %v", network.Enabled) + if network.ChainID != nil { + log.Printf(" chainId: %s", *network.ChainID) + } + if network.NetworkID != nil { + log.Printf(" netId: %s", network.NetworkID.String()) + } + pretty, err := json.MarshalIndent(network.Config, "", " ") + if err == nil { + log.Printf(" config: %s", pretty) + + } + log.Println() + result := fmt.Sprintf("%s\t%s\n", network.ID.String(), *network.Name) fmt.Print(result) } diff --git a/cmd/organizations/organizations_init.go b/cmd/organizations/organizations_init.go index 908a511..f07debf 100644 --- a/cmd/organizations/organizations_init.go +++ b/cmd/organizations/organizations_init.go @@ -10,6 +10,7 @@ import ( "github.com/spf13/cobra" ) +var organizationDID string var organizationName string var paginate bool @@ -34,6 +35,7 @@ func createOrganization(cmd *cobra.Command, args []string) { func createOrganizationRun(cmd *cobra.Command, args []string) { token := common.RequireAPIToken() params := map[string]interface{}{ + "id": organizationDID, "name": organizationName, "config": organizationConfigFactory(), } @@ -43,11 +45,13 @@ func createOrganizationRun(cmd *cobra.Command, args []string) { os.Exit(1) } - common.OrganizationID = organization.ID.String() + common.OrganizationID = *organization.ID log.Printf("initialized organization: %s\t%s\n", organizationName, common.OrganizationID) } func init() { + organizationsInitCmd.Flags().StringVar(&organizationDID, "did", "", "DID of the organization") + // organizationsInitCmd.MarkFlagRequired("did") organizationsInitCmd.Flags().StringVar(&organizationName, "name", "", "name of the organization") // organizationsInitCmd.MarkFlagRequired("name") } diff --git a/cmd/organizations/organizations_list.go b/cmd/organizations/organizations_list.go index 31faad1..99981f3 100644 --- a/cmd/organizations/organizations_list.go +++ b/cmd/organizations/organizations_list.go @@ -42,7 +42,7 @@ func listOrganizationsRun(cmd *cobra.Command, args []string) { if addr, addrOk := organization.Metadata["address"].(string); addrOk { address = addr } - result := fmt.Sprintf("%s\t%s\t%s\n", organization.ID.String(), *organization.Name, address) + result := fmt.Sprintf("%s\t%s\t%s\n", *organization.ID, *organization.Name, address) fmt.Print(result) } } diff --git a/cmd/organizations/organizations_prompt.go b/cmd/organizations/organizations_prompt.go index 1bec48c..a99d727 100644 --- a/cmd/organizations/organizations_prompt.go +++ b/cmd/organizations/organizations_prompt.go @@ -16,6 +16,7 @@ var emptyPromptLabel = "What would you like to do" func generalPrompt(cmd *cobra.Command, args []string, step string) { switch step { case promptStepInit: + organizationDID = common.FreeInput("Organization DID", "", common.MandatoryDIDValidation) organizationName = common.FreeInput("Organization Name", "", common.MandatoryValidation) createOrganizationRun(cmd, args) case promptStepList: diff --git a/cmd/users/create.go b/cmd/users/create.go index fba4d20..20e8864 100644 --- a/cmd/users/create.go +++ b/cmd/users/create.go @@ -19,18 +19,21 @@ var createCmd = &cobra.Command{ Run: create, } +var did string var firstName string var lastName string var email string var passwd string func create(cmd *cobra.Command, args []string) { + did = common.FreeInput("DID", "", common.MandatoryDIDValidation) firstName = common.FreeInput("First Name", "", common.MandatoryValidation) lastName = common.FreeInput("Last Name", "", common.MandatoryValidation) email = common.FreeInput("Email", "", common.MandatoryValidation) passwd = common.FreeInput("Password", "", common.MandatoryValidation) resp, err := provide.CreateUser("", map[string]interface{}{ + "id": did, "email": email, "password": passwd, "first_name": firstName, @@ -47,5 +50,5 @@ func create(cmd *cobra.Command, args []string) { os.Exit(1) } - fmt.Printf("created user: %s", resp.ID.String()) + fmt.Printf("created user: %s", *resp.ID) } diff --git a/go.mod b/go.mod index d995ab4..f6821ec 100644 --- a/go.mod +++ b/go.mod @@ -19,6 +19,7 @@ require ( github.com/mattn/go-colorable v0.1.8 // indirect github.com/mattn/go-runewidth v0.0.12 // indirect github.com/mitchellh/go-homedir v1.1.0 + github.com/ockam-network/did v0.1.3 github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/image-spec v1.0.1 // indirect github.com/ory/viper v1.7.5 @@ -30,3 +31,5 @@ require ( golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2 golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57 // indirect ) + +replace github.com/provideplatform/provide-go => ../provide-go diff --git a/go.sum b/go.sum index ca43e5f..ba3c5ce 100644 --- a/go.sum +++ b/go.sum @@ -364,6 +364,8 @@ github.com/naoina/go-stringutil v0.1.0/go.mod h1:XJ2SJL9jCtBh+P9q5btrd/Ylo8XwT/h github.com/naoina/toml v0.1.2-0.20170918210437-9fafd6967416/go.mod h1:NBIhNtsFMo3G2szEBne+bO4gS192HuIYRqfvOWb4i1E= github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= +github.com/ockam-network/did v0.1.3 h1:qJGdccOV4bLfsS/eFM+Aj+CdCRJKNMxbmJevQclw44k= +github.com/ockam-network/did v0.1.3/go.mod h1:ZsbTIuVGt8OrQEbqWrSztUISN4joeMabdsinbLubbzw= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/olekukonko/tablewriter v0.0.1/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/olekukonko/tablewriter v0.0.2-0.20190409134802-7e037d187b0c h1:1RHs3tNxjXGHeul8z2t6H2N2TlAqpKe5yryJztRx4Jk= @@ -412,8 +414,6 @@ github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7z github.com/prometheus/tsdb v0.6.2-0.20190402121629-4f204dcbc150/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/prometheus/tsdb v0.7.1 h1:YZcsG11NqnK4czYLrWd9mpEuAJIHVQLwdrleYfszMAA= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= -github.com/provideplatform/provide-go v0.0.0-20210823052255-cc727526a9b7 h1:BGU3eCEsPdEQ9OOcwlyPtNRW+V6l07lInGizLcymT5I= -github.com/provideplatform/provide-go v0.0.0-20210823052255-cc727526a9b7/go.mod h1:q0/Q8KaZxYg84rdwBIIE7ZwHluzM5zw7zJJoJOqAbzg= github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=