mirror of
https://github.com/absmach/supermq.git
synced 2026-06-23 07:00:25 +00:00
NOISSUE - Add Domains to the SDK (#45)
* add: domains sdk Signed-off-by: Arvindh <arvindh91@gmail.com> * fix: error Signed-off-by: Arvindh <arvindh91@gmail.com> * fix: cli users token and refresh Signed-off-by: Arvindh <arvindh91@gmail.com> * fix: cli provision Signed-off-by: Arvindh <arvindh91@gmail.com> * add domains cli Signed-off-by: Arvindh <arvindh91@gmail.com> * remove test program Signed-off-by: Arvindh <arvindh91@gmail.com> * update cli command for list domains Signed-off-by: Arvindh <arvindh91@gmail.com> * add list user domain cli cmd Signed-off-by: Arvindh <arvindh91@gmail.com> * fix varaible naming Signed-off-by: Arvindh <arvindh91@gmail.com> * fix: comments grammar & varabile; add package headers Signed-off-by: Arvindh <arvindh91@gmail.com> --------- Signed-off-by: Arvindh <arvindh91@gmail.com>
This commit is contained in:
+236
@@ -0,0 +1,236 @@
|
||||
// Copyright (c) Magistrala
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
package cli
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
|
||||
mgxsdk "github.com/absmach/magistrala/pkg/sdk/go"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
var cmdDomains = []cobra.Command{
|
||||
{
|
||||
Use: "create <name> <alias> <token>",
|
||||
Short: "Create Domain",
|
||||
Long: "Create Domain with provided name and alias. \n" +
|
||||
"For example:\n" +
|
||||
"\tmagistrala-cli domains create domain_1 domain_1_alias $TOKEN\n",
|
||||
Run: func(cmd *cobra.Command, args []string) {
|
||||
if len(args) != 3 {
|
||||
logUsage(cmd.Use)
|
||||
return
|
||||
}
|
||||
|
||||
user := mgxsdk.Domain{
|
||||
Name: args[0],
|
||||
Alias: args[1],
|
||||
}
|
||||
user, err := sdk.CreateDomain(user, args[2])
|
||||
if err != nil {
|
||||
logError(err)
|
||||
return
|
||||
}
|
||||
logJSON(user)
|
||||
},
|
||||
},
|
||||
{
|
||||
Use: "get [all | <domain_id> ] <token>",
|
||||
Short: "Get Domains",
|
||||
Long: "Get all domains. Users can be filtered by name or metadata or status",
|
||||
Run: func(cmd *cobra.Command, args []string) {
|
||||
if len(args) != 2 {
|
||||
logUsage(cmd.Use)
|
||||
return
|
||||
}
|
||||
metadata, err := convertMetadata(Metadata)
|
||||
if err != nil {
|
||||
logError(err)
|
||||
return
|
||||
}
|
||||
pageMetadata := mgxsdk.PageMetadata{
|
||||
Name: Name,
|
||||
Offset: Offset,
|
||||
Limit: Limit,
|
||||
Metadata: metadata,
|
||||
Status: Status,
|
||||
}
|
||||
if args[0] == all {
|
||||
l, err := sdk.Domains(pageMetadata, args[1])
|
||||
if err != nil {
|
||||
logError(err)
|
||||
return
|
||||
}
|
||||
logJSON(l)
|
||||
return
|
||||
}
|
||||
d, err := sdk.Domain(args[0], args[1])
|
||||
if err != nil {
|
||||
logError(err)
|
||||
return
|
||||
}
|
||||
|
||||
logJSON(d)
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
Use: "users <domain_id> <token>",
|
||||
Short: "List Domain users",
|
||||
Long: "List Domain users",
|
||||
Run: func(cmd *cobra.Command, args []string) {
|
||||
if len(args) != 2 {
|
||||
logUsage(cmd.Use)
|
||||
return
|
||||
}
|
||||
metadata, err := convertMetadata(Metadata)
|
||||
if err != nil {
|
||||
logError(err)
|
||||
return
|
||||
}
|
||||
pageMetadata := mgxsdk.PageMetadata{
|
||||
Offset: Offset,
|
||||
Limit: Limit,
|
||||
Metadata: metadata,
|
||||
Status: Status,
|
||||
}
|
||||
|
||||
l, err := sdk.ListDomainUsers(args[0], pageMetadata, args[1])
|
||||
if err != nil {
|
||||
logError(err)
|
||||
return
|
||||
}
|
||||
logJSON(l)
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
Use: "update <domain_id> <JSON_string> <user_auth_token>",
|
||||
Short: "Update domains",
|
||||
Long: "Updates domains name, alias and metadata \n" +
|
||||
"Usage:\n" +
|
||||
"\tmagistrala-cli domains update <domain_id> '{\"name\":\"new name\", \"alias\":\"new_alias\", \"metadata\":{\"key\": \"value\"}}' $TOKEN \n",
|
||||
Run: func(cmd *cobra.Command, args []string) {
|
||||
if len(args) != 4 && len(args) != 3 {
|
||||
logUsage(cmd.Use)
|
||||
return
|
||||
}
|
||||
|
||||
var d mgxsdk.Domain
|
||||
|
||||
if err := json.Unmarshal([]byte(args[1]), &d); err != nil {
|
||||
logError(err)
|
||||
return
|
||||
}
|
||||
d.ID = args[0]
|
||||
d, err := sdk.UpdateDomain(d, args[2])
|
||||
if err != nil {
|
||||
logError(err)
|
||||
return
|
||||
}
|
||||
logJSON(d)
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
Use: "enable <domain_id> <token>",
|
||||
Short: "Change domain status to enabled",
|
||||
Long: "Change domain status to enabled\n" +
|
||||
"Usage:\n" +
|
||||
"\tmagistrala-cli domains enable <domain_id> <token>\n",
|
||||
Run: func(cmd *cobra.Command, args []string) {
|
||||
if len(args) != 2 {
|
||||
logUsage(cmd.Use)
|
||||
return
|
||||
}
|
||||
|
||||
if err := sdk.EnableDomain(args[0], args[1]); err != nil {
|
||||
logError(err)
|
||||
return
|
||||
}
|
||||
logOK()
|
||||
},
|
||||
},
|
||||
{
|
||||
Use: "disable <domain_id> <token>",
|
||||
Short: "Change domain status to disabled",
|
||||
Long: "Change domain status to disabled\n" +
|
||||
"Usage:\n" +
|
||||
"\tmagistrala-cli domains disable <domain_id> <token>\n",
|
||||
Run: func(cmd *cobra.Command, args []string) {
|
||||
if len(args) != 2 {
|
||||
logUsage(cmd.Use)
|
||||
return
|
||||
}
|
||||
|
||||
if err := sdk.DisableDomain(args[0], args[1]); err != nil {
|
||||
logError(err)
|
||||
return
|
||||
}
|
||||
logOK()
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
Use: "assign user <relation> <user_ids> <domain_id> <token>",
|
||||
Short: "Assign user",
|
||||
Long: "Assign user to a domain\n" +
|
||||
"Usage:\n" +
|
||||
"\tmagistrala-cli groups assign user <relation> '[\"<user_id_1>\", \"<user_id_2>\"]' <domain_id> $TOKEN\n",
|
||||
Run: func(cmd *cobra.Command, args []string) {
|
||||
if len(args) != 5 {
|
||||
logUsage(cmd.Use)
|
||||
return
|
||||
}
|
||||
var userIDs []string
|
||||
if err := json.Unmarshal([]byte(args[2]), &userIDs); err != nil {
|
||||
logError(err)
|
||||
return
|
||||
}
|
||||
if err := sdk.AddUserToDomain(args[3], mgxsdk.UsersRelationRequest{Relation: args[1], UserIDs: userIDs}, args[4]); err != nil {
|
||||
logError(err)
|
||||
return
|
||||
}
|
||||
logOK()
|
||||
},
|
||||
},
|
||||
{
|
||||
Use: "unassign user <relation> <user_ids> <domain_id> <token>",
|
||||
Short: "Unassign user",
|
||||
Long: "Unassign user from a domain\n" +
|
||||
"Usage:\n" +
|
||||
"\tmagistrala-cli groups unassign user <relation> '[\"<user_id_1>\", \"<user_id_2>\"]' <domain_id> $TOKEN\n",
|
||||
Run: func(cmd *cobra.Command, args []string) {
|
||||
if len(args) != 5 {
|
||||
logUsage(cmd.Use)
|
||||
return
|
||||
}
|
||||
var userIDs []string
|
||||
if err := json.Unmarshal([]byte(args[2]), &userIDs); err != nil {
|
||||
logError(err)
|
||||
return
|
||||
}
|
||||
if err := sdk.RemoveUserFromDomain(args[3], mgxsdk.UsersRelationRequest{Relation: args[1], UserIDs: userIDs}, args[4]); err != nil {
|
||||
logError(err)
|
||||
return
|
||||
}
|
||||
logOK()
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
// NewDomainsCmd returns domains command.
|
||||
func NewDomainsCmd() *cobra.Command {
|
||||
cmd := cobra.Command{
|
||||
Use: "domains [create | get | update | enable | disable | enable | users | assign | unassign]",
|
||||
Short: "Domains management",
|
||||
Long: `Domains management: create, update, retrieve domains , assign/unassign users to domains and list users of domain"`,
|
||||
}
|
||||
|
||||
for i := range cmdDomains {
|
||||
cmd.AddCommand(&cmdDomains[i])
|
||||
}
|
||||
|
||||
return &cmd
|
||||
}
|
||||
+1
-1
@@ -140,7 +140,7 @@ var cmdProvision = []cobra.Command{
|
||||
}
|
||||
|
||||
user.Credentials.Secret = "12345678"
|
||||
ut, err := sdk.CreateToken(user)
|
||||
ut, err := sdk.CreateToken(mgxsdk.Login{Identity: user.Credentials.Identity, Secret: user.Credentials.Secret})
|
||||
if err != nil {
|
||||
logError(err)
|
||||
return
|
||||
|
||||
+49
-15
@@ -88,24 +88,26 @@ var cmdUsers = []cobra.Command{
|
||||
},
|
||||
},
|
||||
{
|
||||
Use: "token <username> <password>",
|
||||
Use: "token <username> <password> [<domainID>]",
|
||||
Short: "Get token",
|
||||
Long: "Generate new token from username and password\n" +
|
||||
"For example:\n" +
|
||||
"\tmagistrala-cli users token user@example.com 12345678\n",
|
||||
Run: func(cmd *cobra.Command, args []string) {
|
||||
if len(args) != 2 {
|
||||
if len(args) != 3 && len(args) != 2 {
|
||||
logUsage(cmd.Use)
|
||||
return
|
||||
}
|
||||
|
||||
user := mgxsdk.User{
|
||||
Credentials: mgxsdk.Credentials{
|
||||
Identity: args[0],
|
||||
Secret: args[1],
|
||||
},
|
||||
lg := mgxsdk.Login{
|
||||
Identity: args[0],
|
||||
Secret: args[1],
|
||||
}
|
||||
token, err := sdk.CreateToken(user)
|
||||
if len(args) == 3 {
|
||||
lg.DomainID = args[2]
|
||||
}
|
||||
|
||||
token, err := sdk.CreateToken(lg)
|
||||
if err != nil {
|
||||
logError(err)
|
||||
return
|
||||
@@ -115,18 +117,22 @@ var cmdUsers = []cobra.Command{
|
||||
},
|
||||
},
|
||||
{
|
||||
Use: "refreshtoken <token>",
|
||||
Use: "refreshtoken <token> [<domainID>]",
|
||||
Short: "Get token",
|
||||
Long: "Generate new token from refresh token\n" +
|
||||
"For example:\n" +
|
||||
"\tmagistrala-cli users refreshtoken <refresh_token>\n",
|
||||
Run: func(cmd *cobra.Command, args []string) {
|
||||
if len(args) != 1 {
|
||||
if len(args) != 2 && len(args) != 1 {
|
||||
logUsage(cmd.Use)
|
||||
return
|
||||
}
|
||||
|
||||
token, err := sdk.RefreshToken(args[0])
|
||||
lg := mgxsdk.Login{}
|
||||
if len(args) == 2 {
|
||||
lg.DomainID = args[1]
|
||||
}
|
||||
token, err := sdk.RefreshToken(lg, args[0])
|
||||
if err != nil {
|
||||
logError(err)
|
||||
return
|
||||
@@ -351,13 +357,13 @@ var cmdUsers = []cobra.Command{
|
||||
Limit: Limit,
|
||||
}
|
||||
|
||||
users, err := sdk.ListUserChannels(args[0], pm, args[1])
|
||||
cp, err := sdk.ListUserChannels(args[0], pm, args[1])
|
||||
if err != nil {
|
||||
logError(err)
|
||||
return
|
||||
}
|
||||
|
||||
logJSON(users)
|
||||
logJSON(cp)
|
||||
},
|
||||
},
|
||||
|
||||
@@ -378,15 +384,43 @@ var cmdUsers = []cobra.Command{
|
||||
Limit: Limit,
|
||||
}
|
||||
|
||||
users, err := sdk.ListUserThings(args[0], pm, args[1])
|
||||
tp, err := sdk.ListUserThings(args[0], pm, args[1])
|
||||
if err != nil {
|
||||
logError(err)
|
||||
return
|
||||
}
|
||||
|
||||
logJSON(users)
|
||||
logJSON(tp)
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
Use: "domains <user_id> <user_auth_token>",
|
||||
Short: "List domains",
|
||||
Long: "List user's domains\n" +
|
||||
"Usage:\n" +
|
||||
"\tmagistrala-cli users domains <user_id> <user_auth_token>\n",
|
||||
Run: func(cmd *cobra.Command, args []string) {
|
||||
if len(args) != 2 {
|
||||
logUsage(cmd.Use)
|
||||
return
|
||||
}
|
||||
|
||||
pm := mgxsdk.PageMetadata{
|
||||
Offset: Offset,
|
||||
Limit: Limit,
|
||||
}
|
||||
|
||||
dp, err := sdk.ListUserDomains(args[0], pm, args[1])
|
||||
if err != nil {
|
||||
logError(err)
|
||||
return
|
||||
}
|
||||
|
||||
logJSON(dp)
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
Use: "groups <user_id> <user_auth_token>",
|
||||
Short: "List groups",
|
||||
|
||||
Reference in New Issue
Block a user