Skip to content

Commit

Permalink
feat: login-with-signature in cli
Browse files Browse the repository at this point in the history
  • Loading branch information
asabya committed May 13, 2024
1 parent 7b9b0cd commit 30ec757
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 4 deletions.
22 changes: 18 additions & 4 deletions cmd/dfs-cli/cmd/prompt.go
Original file line number Diff line number Diff line change
Expand Up @@ -96,10 +96,11 @@ const (
apiDocLoadJson = apiVersion + "/doc/loadjson"
apiDocIndexJson = apiVersion + "/doc/indexjson"

apiUserSignupV2 = apiVersionV2 + "/user/signup"
apiUserLoginV2 = apiVersionV2 + "/user/login"
apiUserPresentV2 = apiVersionV2 + "/user/present"
apiUserDeleteV2 = apiVersionV2 + "/user/delete"
apiUserSignupV2 = apiVersionV2 + "/user/signup"
apiUserLoginV2 = apiVersionV2 + "/user/login"
apiUserSignatureLogin = apiVersionV2 + "/user/login-with-signature"
apiUserPresentV2 = apiVersionV2 + "/user/present"
apiUserDeleteV2 = apiVersionV2 + "/user/delete"
)

func newPrompt() {
Expand Down Expand Up @@ -144,6 +145,7 @@ var userSuggestions = []prompt.Suggest{
{Text: "new", Description: "create a new user (v2)"},
{Text: "del", Description: "delete a existing user (v2)"},
{Text: "login", Description: "login to a existing user (v2)"},
{Text: "signatureLogin", Description: "login with signature"},
{Text: "logout", Description: "logout from a logged-in user"},
{Text: "present", Description: "is user present (v2)"},
{Text: "stat", Description: "shows information about a user"},
Expand Down Expand Up @@ -308,6 +310,17 @@ func executor(in string) {
currentPod = ""
currentDirectory = ""
currentPrompt = getCurrentPrompt()
case "signatureLogin":
if len(blocks) < 3 {
fmt.Println("invalid command. Missing \"signature\" argument")
return
}
signature := blocks[2]
fmt.Println("signatureLogin", signature)
signatureLogin(signature, apiUserSignatureLogin)
currentPod = ""
currentDirectory = ""
currentPrompt = getCurrentPrompt()
case "present":
if len(blocks) < 3 {
fmt.Println("invalid command. Missing \"userName\" argument")
Expand Down Expand Up @@ -1023,6 +1036,7 @@ func help() {
fmt.Println(" - user <new> (user-name) (mnemonic) - create a new user and login as that user")
fmt.Println(" - user <del> - deletes a logged-in user")
fmt.Println(" - user <login> (user-name) - login as a given user")
fmt.Println(" - user <signatureLogin> (signature) - login with signature")
fmt.Println(" - user <logout> - logout a logged-in user")
fmt.Println(" - user <present> (user-name) - returns true if the user is present, false otherwise")
fmt.Println(" - user <stat> - shows information about a user")
Expand Down
30 changes: 30 additions & 0 deletions cmd/dfs-cli/cmd/user.go
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,36 @@ func userLogin(userName, apiEndpoint string) {
fmt.Println(message)
}

func signatureLogin(signature, apiEndpoint string) {
password := getPassword()
loginUser := common.UserSignatureLoginRequest{
Signature: signature,
Password: password,
}
jsonData, err := json.Marshal(loginUser)
if err != nil {
fmt.Println("login user: error marshalling request")
return
}
data, err := fdfsAPI.postReq(http.MethodPost, apiEndpoint, jsonData)
if err != nil {
fmt.Println("login user: ", err)
return
}
var resp api.UserSignupResponse
err = json.Unmarshal(data, &resp)
if err != nil {
fmt.Println("create user: ", err)
return
}

currentUser = resp.Address
message := strings.ReplaceAll(string(data), "\n", "")
fdfsAPI.setAccessToken(resp.AccessToken)

fmt.Println(message)
}

func deleteUser(apiEndpoint string) {
password := getPassword()
delUser := common.UserSignupRequest{
Expand Down

0 comments on commit 30ec757

Please sign in to comment.