Documentation ¶
Overview ¶
Package user_access_manager is an interface for high-level user access control functions.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type UserAccessManager ¶
type UserAccessManager interface { // GetStub returns the stub, which provides functions for accessing and modifying the ledger. GetStub() shim.ChaincodeStubInterface // GetCaller returns the caller. GetCaller() data_model.User // AddAccess adds read or write access from user to asset. // Read access is given by adding access from user's public key to asset key. // Write access is given by adding read access and setting its access type of access graph edge data to "write". // Adding write access will give both read and write access. // If the asset already exists, there is no need to provide accessControl.AssetKey. This function will retrieve it. AddAccess(accessControl data_model.AccessControl) error // AddAccessByKey adds read access from startKey to targetKey. // startKey must be a sym key, private key, or public key. // targetKey cannot be a public key. // Encrypts targetKey with startKey and creates an edge in the key graph representing this access. AddAccessByKey(startKey data_model.Key, targetKey data_model.Key) error // RemoveAccess removes access read or write access from user to asset. // Write access is removed by removing user as an asset owner. // Removing read access will remove both read and write access. // Removing write access will keep read access. // Caller must be asset owner. RemoveAccess(accessControl data_model.AccessControl) error // RemoveAccessByKey removes read access from startKey to targetKey. RemoveAccessByKey(startKeyID string, targetKeyID string) error // CheckAccess returns true if the specified access has been given from user to asset. // You can only check your (caller's) own access if you are not the asset owner. // To check access of another user, get access control manager as that user and check access. // It only checks direct access, for the following cases: // // For Write Access, it returns true if: // 1. user is owner of the asset (or direct admin of owner) // 2. user has write access given by the owner of the asset // 3. user has write only access given by the owner of the asset // 4. user has a write consent for the asset // 5. user has a write consent for a datatype of the asset // 6. user is a direct admin of a group that has write access // // For Write Only Access, it returns true if: // 1. user has write only access given by the owner of the asset // // For Read Access, it returns true if: // 1. user is owner of the asset (or direct admin of owner) // 2. user has read or write access given by the owner of the asset // 3. user has a read or write consent for the asset // 4. user has a read or write consent for a datatype of the asset // 5. user is a direct admin of a group that has read or write access // // For Read Only Access, it returns true if: // 1. user has read access given by the owner of the asset // 2. user has a read consent for the asset // 3. user has a read consent for a datatype of the asset // 5. user is a direct admin of a group that has read access CheckAccess(accessControl data_model.AccessControl) (bool, error) // GetAccessData returns an access control object for the userId and assetId. // Returns nil if the user has no access to the asset. GetAccessData(userId string, assetId string) (*data_model.AccessControl, error) // SlowCheckAccessToKey traverses the path from caller to targetKey in the key graph. // Returns an access path and filters. SlowCheckAccessToKey(targetKeyID string) ([]string, data_model.AccessControlFilters, error) // GetKey returns a key given keyID. // The first items in keyPath must be the caller's key's ID, and the last key in keyPath must be target keyID. // If keyPath is nil or empty, key path is assumed to be [caller's key's ID, keyID]. GetKey(keyID string, keyPath []string) (data_model.Key, error) }
UserAccessManager is an interface for user access control functions.
Click to show internal directories.
Click to hide internal directories.