diff --git a/cmd/http/oraclebuilder/account.go b/cmd/http/oraclebuilder/account.go index 0126922ed..12a75cd35 100644 --- a/cmd/http/oraclebuilder/account.go +++ b/cmd/http/oraclebuilder/account.go @@ -25,6 +25,7 @@ type RemoveWalletInput struct { type UpdateAccessInput struct { WalletPublicKey string `form:"wallet_public_key"` AccessLevel string `form:"access_level" binding:"required,oneof=read read_write"` + UserName string `form:"username"` } type ViewInput struct { @@ -88,17 +89,19 @@ func (ob *Env) AddWallet(context *gin.Context) { } func (ob *Env) UpdateAccess(context *gin.Context) { + requestId := context.GetString(REQUEST_ID) + var input UpdateAccessInput if err := context.ShouldBind(&input); err != nil { context.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) return } //TODO check permission, remove self key, check should not be self, min one key has to me read_write - log.Errorln("input", input) + log.Infoln("Request ID: %s, UpdateAccess input err %v ", requestId, input) - err := ob.RelDB.UpdateAccessLevel(input.AccessLevel, input.WalletPublicKey) + err := ob.RelDB.UpdateAccessLevel(input.UserName, input.AccessLevel, input.WalletPublicKey) if err != nil { - log.Errorln("UpdateAccessLevel", err) + log.Errorf("Request ID: %s, UpdateAccessLevel %v ", requestId, err) context.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) return diff --git a/pkg/model/oracle.go b/pkg/model/oracle.go index d4b0f0cc1..faff13b87 100644 --- a/pkg/model/oracle.go +++ b/pkg/model/oracle.go @@ -1166,7 +1166,7 @@ func (reldb *RelDB) AddWalletKeys(owner, username, accessLevel string, publicKey return nil } -func (reldb *RelDB) UpdateAccessLevel(accessLevel, publicKey string) error { +func (reldb *RelDB) UpdateAccessLevel(username, accessLevel, publicKey string) error { var err error tx, err := reldb.postgresClient.BeginTx(context.Background(), pgx.TxOptions{}) @@ -1178,9 +1178,12 @@ func (reldb *RelDB) UpdateAccessLevel(accessLevel, publicKey string) error { _, err = tx.Exec(context.Background(), ` UPDATE wallet_public_keys - SET access_level = $1 + SET access_level = $1, + username = $3 WHERE public_key = $2 - `, accessLevel, publicKey) + AND ($1 IS NOT NULL AND $1 != '' OR $3 IS NOT NULL AND $3 != ''); + + `, accessLevel, publicKey, username) if err != nil { return err } diff --git a/pkg/model/relDB.go b/pkg/model/relDB.go index 17b98a2a0..e1c610a09 100644 --- a/pkg/model/relDB.go +++ b/pkg/model/relDB.go @@ -191,7 +191,7 @@ type RelDatastore interface { CreateCustomer(email string, customerPlan int, paymentStatus string, paymentSource string, numberOfDataFeeds int, walletPublicKeys []string) error AddWalletKeys(owner, username, accessLevel string, publicKey []string) error - UpdateAccessLevel(accessLevel, publicKey string) error + UpdateAccessLevel(username, accessLevel, publicKey string) error RemoveWalletKeys(publicKey []string) error GetCustomerIDByWalletPublicKey(publicKey string) (int, error) GetCustomerByPublicKey(publicKey string) (*Customer, error)