github.com/gnolang/gno@v0.0.0-20240520182011-228e9d0192ce/examples/gno.land/r/gnoland/faucet/admin.gno (about)

     1  package faucet
     2  
     3  import (
     4  	"errors"
     5  	"std"
     6  )
     7  
     8  func AdminSetInPause(inPause bool) string {
     9  	if err := assertIsAdmin(); err != nil {
    10  		return err.Error()
    11  	}
    12  	gInPause = inPause
    13  	return ""
    14  }
    15  
    16  func AdminSetMessage(message string) string {
    17  	if err := assertIsAdmin(); err != nil {
    18  		return err.Error()
    19  	}
    20  	gMessage = message
    21  	return ""
    22  }
    23  
    24  func AdminSetTransferLimit(amount int64) string {
    25  	if err := assertIsAdmin(); err != nil {
    26  		return err.Error()
    27  	}
    28  	gLimit = std.Coin{Denom: "ugnot", Amount: amount}
    29  	return ""
    30  }
    31  
    32  func AdminSetAdminAddr(addr std.Address) string {
    33  	if err := assertIsAdmin(); err != nil {
    34  		return err.Error()
    35  	}
    36  	gAdminAddr = addr
    37  	return ""
    38  }
    39  
    40  func AdminAddController(addr std.Address) string {
    41  	if err := assertIsAdmin(); err != nil {
    42  		return err.Error()
    43  	}
    44  
    45  	size := gControllers.Size()
    46  
    47  	if size >= gControllersMaxSize {
    48  		return "can not add more controllers than allowed"
    49  	}
    50  
    51  	if gControllers.Has(addr.String()) {
    52  		return addr.String() + " exists, no need to add."
    53  	}
    54  
    55  	gControllers.Set(addr.String(), addr)
    56  
    57  	return ""
    58  }
    59  
    60  func AdminRemoveController(addr std.Address) string {
    61  	if err := assertIsAdmin(); err != nil {
    62  		return err.Error()
    63  	}
    64  
    65  	if !gControllers.Has(addr.String()) {
    66  		return addr.String() + " is not on the controller list"
    67  	}
    68  
    69  	_, ok := gControllers.Remove(addr.String())
    70  
    71  	// it not should happen.
    72  	// we will check anyway to prevent issues in the underline implementation.
    73  
    74  	if !ok {
    75  		return addr.String() + " is not on the controller list"
    76  	}
    77  
    78  	return ""
    79  }
    80  
    81  func assertIsAdmin() error {
    82  	caller := std.GetOrigCaller()
    83  	if caller != gAdminAddr {
    84  		return errors.New("restricted for admin")
    85  	}
    86  	return nil
    87  }