Trait Whitelist

Source
pub trait Whitelist {
    type Address: AsRef<[u8]> + Zero;

    // Required methods
    fn user_is_whitelisted(
        &self,
        service_id: &Bytes32,
        user: &Self::Address,
    ) -> bool;
    fn extend_whitelist_expiration(
        &mut self,
        service_id: &Bytes32,
        user: &Self::Address,
        expiration_timestamp: u64,
    );
    fn set_whitelist_expiration(
        &mut self,
        service_id: &Bytes32,
        user: &Self::Address,
        expiration_timestamp: u64,
    );
    fn set_indefinite_whitelist_status(
        &mut self,
        service_id: &Bytes32,
        user: &Self::Address,
        status: bool,
    ) -> U256;
    fn revoke_indefinite_whitelist_status(
        &mut self,
        service_id: &Bytes32,
        user: &Self::Address,
        setter: &Self::Address,
    ) -> (bool, U256);
}
Expand description

Trait that implements temporary and permanent whitelists for multiple services identified with a hash

This trait implements two kinds of whitelisting: (1) Temporary, ends when the expiration timestamp is in the past (2) Indefinite, ends when the indefinite whitelist count is zero Multiple senders can indefinitely whitelist/unwhitelist independently. The user will be considered whitelisted as long as there is at least one active indefinite whitelisting.

The interface of this contract is not implemented. It should be inherited and its functions should be exposed with a sort of an authorization scheme.

Required Associated Types§

Source

type Address: AsRef<[u8]> + Zero

The address type for the chain

Required Methods§

Source

fn user_is_whitelisted( &self, service_id: &Bytes32, user: &Self::Address, ) -> bool

Returns if the user is whitelised to use the service

§Argument
  • service_id Service ID
  • user User address
Source

fn extend_whitelist_expiration( &mut self, service_id: &Bytes32, user: &Self::Address, expiration_timestamp: u64, )

Extends the expiration of the temporary whitelist of the user for the service

§Argument
  • service_id Service ID
  • user User address
  • expiration_timestamp Timestamp at which the temporary whitelist will expire
Source

fn set_whitelist_expiration( &mut self, service_id: &Bytes32, user: &Self::Address, expiration_timestamp: u64, )

Sets the expiration of the temporary whitelist of user to be able to use the service with serviceId if the sender has the whitelist expiration setter role

§Argument
  • service_id Service ID
  • user User address
  • expiration_timestamp Timestamp at which the temporary whitelist will expire
Source

fn set_indefinite_whitelist_status( &mut self, service_id: &Bytes32, user: &Self::Address, status: bool, ) -> U256

Sets the indefinite whitelist status of user to be able to use the service with serviceId if the sender has the indefinite whitelister role

§Argument

service_id Service ID user User address status Indefinite whitelist status

Source

fn revoke_indefinite_whitelist_status( &mut self, service_id: &Bytes32, user: &Self::Address, setter: &Self::Address, ) -> (bool, U256)

Revokes the indefinite whitelist status granted to the user for the service by a specific account

§Argument

service_id Service ID user User address setter Setter of the indefinite whitelist status

Implementors§

Source§

impl<Address> Whitelist for DummyWhitelist<Address>
where Address: AsRef<[u8]> + Zero + Default + PartialEq,

Source§

type Address = Address