From 4c7714142ceb69a42af3559d5a6277855383dba3 Mon Sep 17 00:00:00 2001 From: Mohammed Modi Date: Mon, 10 May 2021 16:49:40 +0530 Subject: [PATCH] Fixed the bug in register command --- api/account.go | 2 +- api/auth.go | 93 +++++++++++++++++++++++++++++----------- api/deployment.go | 38 ---------------- cmd/delete/site/site.go | 2 +- cmd/get/domain/domain.go | 15 +++---- cmd/get/site/site.go | 2 +- cmd/get/social/social.go | 5 ++- cmd/login/login.go | 16 ++++--- cmd/logout/logout.go | 3 +- cmd/register/register.go | 30 ++++++++++--- cmd/set/site/site.go | 2 +- go.mod | 2 +- go.sum | 3 +- 13 files changed, 119 insertions(+), 94 deletions(-) diff --git a/api/account.go b/api/account.go index aeddef4..3009c42 100644 --- a/api/account.go +++ b/api/account.go @@ -11,7 +11,7 @@ import ( type SitesToken struct { APIVersion string `json:"ApiVersion"` - AppID int32 `json:"AppId"` + AppID int64 `json:"AppId"` AppName string `json:"AppName"` Authenticated bool `json:"authenticated"` XSign string `json:"xsign"` diff --git a/api/auth.go b/api/auth.go index af019f2..93eb3e3 100644 --- a/api/auth.go +++ b/api/auth.go @@ -17,7 +17,7 @@ var conf = config.GetInstance() type LoginResponse struct { APIVersion string `json:"api_Version"` - AppID int32 `json:"app_id"` + AppID int64 `json:"app_id"` AppName string `json:"app_name"` Authenticated bool `json:"authenticated"` NoOfLogins int32 `json:"no_of_logins"` @@ -26,15 +26,25 @@ type LoginResponse struct { XToken string `json:"xtoken"` } -func AuthLogin(accessToken string) (*LoginResponse, error) { +type LoginOpts struct { + AccessToken string `schema:"token" json:"accesstoken"` + AppName string `schema:"appName"` + Domain string `schema:"domain" json:"domain"` + DataCenter string `schema:"dataCenter" json:"dataCenter"` + Plan string `schema:"plan" json:"plan"` + Role string `schema:"role" json:"role"` + LookingFor string `schema:"lookingFor" json:"lookingFor"` +} + +func AuthLogin(params LoginOpts) (*LoginResponse, error) { - // Admin Console Backend API var resObj LoginResponse backendURL := conf.AdminConsoleAPIDomain + "/auth/login" - body, _ := json.Marshal(map[string]string{ - "accesstoken": accessToken, - }) + if params.AppName != "" { + backendURL += "?appName=" + params.AppName + } + body, _ := json.Marshal(params) resp, err := request.Rest(http.MethodPost, backendURL, nil, string(body)) if err != nil { return nil, err @@ -67,26 +77,6 @@ func AuthValidateToken() (*ValidateTokenResp, error) { return &resObj, nil } -type AppID struct { - CurrentAppId int64 `json:"currentAppId"` -} - -func CurrentID() (*AppID, error) { - conf := config.GetInstance() - config := conf.AdminConsoleAPIDomain + "/auth/config?" - var currentAppId AppID - resp, err := request.Rest(http.MethodGet, config, nil, "") - if err != nil { - return nil, err - } - err = json.Unmarshal(resp, ¤tAppId) - if err != nil { - return nil, err - } - - return ¤tAppId, nil -} - func SitesBasic(tokens *SitesToken) error { conf := config.GetInstance() var newToken SitesToken @@ -141,3 +131,54 @@ func SitesBasic(tokens *SitesToken) error { return nil } + +func GetAppsInfo() (map[int64]SitesReponse, error) { + var Apps CoreAppData + data, err := cmdutil.ReadFile("siteInfo.json") + if err != nil { + coreAppData := conf.AdminConsoleAPIDomain + "/auth/core-app-data?" + data, err = request.Rest(http.MethodGet, coreAppData, nil, "") + if err != nil { + return nil, err + } + err = json.Unmarshal(data, &Apps) + if err != nil { + return nil, err + } + return storeSiteInfo(Apps), nil + } + var siteInfo map[int64]SitesReponse + err = json.Unmarshal(data, &siteInfo) + return siteInfo, nil +} + +func CurrentID() (int64, error) { + var loginInfo LoginResponse + data, err := cmdutil.ReadFile("token.json") + if err != nil { + return 0, err + } + err = json.Unmarshal(data, &loginInfo) + if err != nil { + return 0, err + } + return loginInfo.AppID, nil +} + +func storeSiteInfo(data CoreAppData) map[int64]SitesReponse { + siteInfo := make(map[int64]SitesReponse, len(data.Apps.Data)) + for _, app := range data.Apps.Data { + siteInfo[app.Appid] = app + } + obj, _ := json.Marshal(siteInfo) + cmdutil.WriteFile("siteInfo.json", obj) + currentId, err := CurrentID() + if err == nil { + site, ok := siteInfo[currentId] + if ok { + obj, _ := json.Marshal(site) + cmdutil.WriteFile("currentSite.json", obj) + } + } + return siteInfo +} diff --git a/api/deployment.go b/api/deployment.go index f34d180..a60c239 100644 --- a/api/deployment.go +++ b/api/deployment.go @@ -129,44 +129,6 @@ func UpdateDomain(domains string) error { return nil } -func GetAppsInfo() (map[int64]SitesReponse, error) { - var Apps CoreAppData - data, err := cmdutil.ReadFile("siteInfo.json") - if err != nil { - coreAppData := conf.AdminConsoleAPIDomain + "/auth/core-app-data?" - data, err = request.Rest(http.MethodGet, coreAppData, nil, "") - if err != nil { - return nil, err - } - err = json.Unmarshal(data, &Apps) - if err != nil { - return nil, err - } - return storeSiteInfo(Apps), nil - } - var siteInfo map[int64]SitesReponse - err = json.Unmarshal(data, &siteInfo) - return siteInfo, nil -} - -func storeSiteInfo(data CoreAppData) map[int64]SitesReponse { - siteInfo := make(map[int64]SitesReponse, len(data.Apps.Data)) - for _, app := range data.Apps.Data { - siteInfo[app.Appid] = app - } - obj, _ := json.Marshal(siteInfo) - cmdutil.WriteFile("siteInfo.json", obj) - currentId, err := CurrentID() - if err == nil { - site, ok := siteInfo[currentId.CurrentAppId] - if ok { - obj, _ := json.Marshal(site) - cmdutil.WriteFile("currentSite.json", obj) - } - } - return siteInfo -} - func CurrentPlan() error { sitesResp, err := GetSites() if err != nil { diff --git a/cmd/delete/site/site.go b/cmd/delete/site/site.go index ff5e6b7..4d511ef 100644 --- a/cmd/delete/site/site.go +++ b/cmd/delete/site/site.go @@ -60,7 +60,7 @@ func deleteSite() error { if err != nil { return err } - if currentID.CurrentAppId == appid { + if currentID == appid { fmt.Println("This is the current active site. Please switch to another site before deleting.") return nil } diff --git a/cmd/get/domain/domain.go b/cmd/get/domain/domain.go index 5d81fd5..169d07b 100644 --- a/cmd/get/domain/domain.go +++ b/cmd/get/domain/domain.go @@ -2,20 +2,13 @@ package domain import ( "fmt" + "strings" "github.com/MakeNowJust/heredoc" "github.com/loginradius/lr-cli/api" "github.com/spf13/cobra" ) -var fileName string - -type domainManagement struct { - CallbackUrl string `json:"CallbackUrl"` -} - -var url string - func NewdomainCmd() *cobra.Command { cmd := &cobra.Command{ @@ -29,7 +22,11 @@ func NewdomainCmd() *cobra.Command { if err != nil { return err } - fmt.Println(resp.Callbackurl) + res1 := strings.Split(resp.Callbackurl, ";") + for i := 0; i < len(res1); i++ { + fmt.Print(fmt.Sprint(i+1) + ".") + fmt.Println(res1[i]) + } return nil }, diff --git a/cmd/get/site/site.go b/cmd/get/site/site.go index b255121..e9a15b2 100644 --- a/cmd/get/site/site.go +++ b/cmd/get/site/site.go @@ -60,7 +60,7 @@ func getSite() error { return err } fmt.Println("Active site: ") - val, _ := AppInfo[currentID.CurrentAppId] + val, _ := AppInfo[currentID] Output(val) } else if *all && (!*active && *appid == -1) { fmt.Println("All sites: ") diff --git a/cmd/get/social/social.go b/cmd/get/social/social.go index f1e9365..249e8f2 100644 --- a/cmd/get/social/social.go +++ b/cmd/get/social/social.go @@ -54,6 +54,9 @@ func get() error { if err != nil { return err } - fmt.Println(resultResp) + for i := 0; i < len(resultResp.Data); i++ { + fmt.Print(fmt.Sprint(i+1) + ".") + fmt.Println(resultResp.Data[i].Provider) + } return nil } diff --git a/cmd/login/login.go b/cmd/login/login.go index a55c738..834b304 100644 --- a/cmd/login/login.go +++ b/cmd/login/login.go @@ -3,7 +3,6 @@ package login import ( "encoding/json" "fmt" - "log" "net/http" "time" @@ -43,7 +42,7 @@ func NewLoginCmd() *cobra.Command { if err != nil { return err } else if isValid { - log.Printf("%s", "You are already been logged in") + fmt.Printf("%s", "You are already been logged in") return nil } cmdutil.Openbrowser(conf.HubPageDomain + "/auth.aspx?return_url=http://localhost:8089/postLogin") @@ -68,17 +67,24 @@ func getAccessToken(w http.ResponseWriter, r *http.Request) { func doLogin(accessToken string) error { - resObj, err := api.AuthLogin(accessToken) + params := api.LoginOpts{ + AccessToken: accessToken, + } + resObj, err := api.AuthLogin(params) if err != nil { return err } creds, _ := json.Marshal(resObj) - cmdutil.WriteFile("token.json", creds) + err = cmdutil.WriteFile("token.json", creds) + if err != nil { + return err + } + fmt.Println("Successfully Authenticated, Fetching Your Site(s)...") _, err = api.GetAppsInfo() if err != nil { return err } - log.Println("Successfully Logged In") + fmt.Println("Successfully Logged In") return nil } diff --git a/cmd/logout/logout.go b/cmd/logout/logout.go index b668c7d..9cc7942 100644 --- a/cmd/logout/logout.go +++ b/cmd/logout/logout.go @@ -2,7 +2,6 @@ package logout import ( "fmt" - "log" "net/http" "os" "os/user" @@ -50,7 +49,7 @@ func logout() error { } } - log.Println("You are successfully Logged Out") + fmt.Println("You are successfully Logged Out") return nil } diff --git a/cmd/register/register.go b/cmd/register/register.go index 5d3666d..d408d87 100644 --- a/cmd/register/register.go +++ b/cmd/register/register.go @@ -6,6 +6,7 @@ import ( "net/http" "time" + "github.com/gorilla/schema" "github.com/loginradius/lr-cli/api" "github.com/loginradius/lr-cli/cmdutil" "github.com/loginradius/lr-cli/config" @@ -13,7 +14,11 @@ import ( ) var tempServer *cmdutil.TempServer -var tempToken string + +var loginparams api.LoginOpts + +type ResigterOpts struct { +} func NewRegisterCmd() *cobra.Command { @@ -30,24 +35,35 @@ func NewRegisterCmd() *cobra.Command { RouteName: "/postLogin", }) tempServer.Server.ListenAndServe() - return register(tempToken) + return register() }, } return cmd } -func register(token string) error { - resObj, err := api.AuthLogin(token) +func register() error { + resObj, err := api.AuthLogin(loginparams) if err != nil { return err } - fmt.Println("Successfully Registered") creds, _ := json.Marshal(resObj) - return cmdutil.WriteFile("token.json", creds) + err = cmdutil.WriteFile("token.json", creds) + if err != nil { + return err + } + fmt.Println("Successfully Authenticated, Fetching Your Site(s)...") + _, err = api.GetAppsInfo() + if err != nil { + return err + } + fmt.Println("Successfully Registered") + return nil } func getAccessToken(w http.ResponseWriter, r *http.Request) { - tempToken = r.URL.Query().Get("token") + if err := schema.NewDecoder().Decode(&loginparams, r.URL.Query()); err != nil { + fmt.Fprintf(w, err.Error()) + } fmt.Fprintf(w, "You are Successfully Authenticated, Kindly Close this browser window and go back to CLI") time.AfterFunc(1*time.Second, tempServer.CloseServer) } diff --git a/cmd/set/site/site.go b/cmd/set/site/site.go index ddadbd7..49fc84d 100644 --- a/cmd/set/site/site.go +++ b/cmd/set/site/site.go @@ -47,7 +47,7 @@ func setSite() error { return err } currentID, err := api.CurrentID() - if currentID.CurrentAppId == appid { + if currentID == appid { fmt.Println("You are already using this site") return nil } diff --git a/go.mod b/go.mod index a6df970..ce9e169 100644 --- a/go.mod +++ b/go.mod @@ -6,10 +6,10 @@ require ( github.com/MakeNowJust/heredoc v1.0.0 github.com/cli/safeexec v1.0.0 github.com/gorilla/mux v1.8.0 + github.com/gorilla/schema v1.2.0 github.com/kr/text v0.2.0 github.com/rs/cors v1.7.0 github.com/spf13/cobra v1.1.3 - golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc ) replace github.com/loginradius/lr-cli => ../lr-cli diff --git a/go.sum b/go.sum index 7244a5f..67e4390 100644 --- a/go.sum +++ b/go.sum @@ -71,6 +71,8 @@ github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5m github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= +github.com/gorilla/schema v1.2.0 h1:YufUaxZYCKGFuAq3c96BOhjgd5nmXiOY9NGzF247Tsc= +github.com/gorilla/schema v1.2.0/go.mod h1:kgLaKoK1FELgZqMAVxx/5cbj0kT+57qxUrAlIO2eleU= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= @@ -257,7 +259,6 @@ golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgw golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc h1:NCy3Ohtk6Iny5V/reW2Ktypo4zIpWBdRJ1uFMjBxdg8= golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=