func PermissionJob(perm *definitions.Permission, do *definitions.Do) (string, error) { // Process Variables perm.Source, _ = util.PreProcess(perm.Source, do) perm.Action, _ = util.PreProcess(perm.Action, do) perm.PermissionFlag, _ = util.PreProcess(perm.PermissionFlag, do) perm.Value, _ = util.PreProcess(perm.Value, do) perm.Target, _ = util.PreProcess(perm.Target, do) perm.Role, _ = util.PreProcess(perm.Role, do) // Set defaults perm.Source = useDefault(perm.Source, do.Package.Account) log.Debug("Target: ", perm.Target) log.Debug("Marmots Deny: ", perm.Role) log.Debug("Action: ", perm.Action) // Populate the transaction appropriately var args []string switch perm.Action { case "set_global": args = []string{perm.PermissionFlag, perm.Value} case "set_base": args = []string{perm.Target, perm.PermissionFlag, perm.Value} case "unset_base": args = []string{perm.Target, perm.PermissionFlag} case "add_role", "rm_role": args = []string{perm.Target, perm.Role} } // Don't use pubKey if account override var oldKey string if perm.Source != do.Package.Account { oldKey = do.PublicKey do.PublicKey = "" } // Formulate tx arg := fmt.Sprintf("%s:%s", args[0], args[1]) log.WithField(perm.Action, arg).Info("Setting Permissions") erisNodeClient := client.NewErisNodeClient(do.Chain) erisKeyClient := keys.NewErisKeyClient(do.Signer) tx, err := core.Permissions(erisNodeClient, erisKeyClient, do.PublicKey, perm.Source, perm.Nonce, perm.Action, args) if err != nil { return util.MintChainErrorHandler(do, err) } log.Debug("What are the args returned in transaction: ", tx.PermArgs) // Don't use pubKey if account override if perm.Source != do.Package.Account { do.PublicKey = oldKey } // Sign, broadcast, display return txFinalize(do, tx, perm.Wait) }
func PermissionJob(perm *definitions.Permission, do *definitions.Do) (string, error) { // Process Variables perm.Source, _ = util.PreProcess(perm.Source, do) perm.Action, _ = util.PreProcess(perm.Action, do) perm.PermissionFlag, _ = util.PreProcess(perm.PermissionFlag, do) perm.Value, _ = util.PreProcess(perm.Value, do) perm.Target, _ = util.PreProcess(perm.Target, do) perm.Role, _ = util.PreProcess(perm.Role, do) // Set defaults perm.Source = useDefault(perm.Source, do.Package.Account) // Populate the transaction appropriately var args []string switch perm.Action { case "set_global": args = []string{perm.PermissionFlag, perm.Value} case "set_base": args = []string{perm.Target, perm.PermissionFlag, perm.Value} case "unset_base": args = []string{perm.Target, perm.PermissionFlag} case "add_role", "rm_role": args = []string{perm.Target, perm.Role} } // Don't use pubKey if account override var oldKey string if perm.Source != do.Package.Account { oldKey = do.PublicKey do.PublicKey = "" } // Formulate tx logger.Infof("Setting Permissions =>\t\t%s:%v\n", perm.Action, args) tx, err := core.Permissions(do.Chain, do.Signer, do.PublicKey, perm.Source, perm.Nonce, perm.Action, args) if err != nil { logger.Errorf("ERROR =>\n") return "", err } // Don't use pubKey if account override if perm.Source != do.Package.Account { do.PublicKey = oldKey } // Sign, broadcast, display return txFinalize(do, tx, perm.Wait) }