1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
use crateSTATE;
use ;
use SetController;
use ;
// ---------------------------------------------------------
// Controllers
// ---------------------------------------------------------
/// Retrieve the controllers of the Satellite.
///
/// This function retrieves the list of controllers currently set for the application.
/// A controller is represented as a key-value pair where the key is the `ControllerId`
/// (a `Principal`) and the value is a `Controller` struct containing metadata and scope
/// details about the controller.
///
/// # Returns
/// - `Controllers`: A `HashMap` where:
/// - The key is a `ControllerId` (type alias for `Principal`).
/// - The value is a `Controller` struct that includes:
/// - `metadata`: Additional metadata about the controller, such as name or description.
/// - `created_at`: The timestamp when the controller was created.
/// - `updated_at`: The timestamp when the controller was last updated.
/// - `expires_at`: An optional timestamp indicating when the controller expires.
/// - `scope`: The `ControllerScope`, which specifies the access level (`Write` or `Admin`).
///
/// # Example
/// ```
/// let controllers = get_controllers();
/// for (controller_id, controller) in controllers.iter() {
/// println!("Controller ID: {}", controller_id);
/// println!("Scope: {:?}", controller.scope);
/// if let Some(expires_at) = controller.expires_at {
/// println!("Expires at: {}", expires_at);
/// }
/// }
/// ```
///
/// This function is useful for checking the current permissions.
/// Retrieve the current admin controllers for a Satellite.
///
/// This function filters the list of controllers to include only those with the `Admin` scope.
///
/// # Returns
/// - `Controllers`: A `HashMap` where:
/// - The key is a `ControllerId` (type alias for `Principal`).
/// - The value is a `Controller` struct that includes:
/// - `metadata`: Additional metadata about the controller.
/// - `created_at`: The timestamp when the controller was created.
/// - `updated_at`: The timestamp when the controller was last updated.
/// - `expires_at`: An optional timestamp indicating when the controller expires.
/// - `scope`: Always `ControllerScope::Admin` for admin controllers.
///
/// # Example
/// ```
/// let admin_controllers = get_admin_controllers();
/// for (controller_id, controller) in admin_controllers.iter() {
/// println!("Admin Controller ID: {}", controller_id);
/// println!("Created at: {}", controller.created_at);
/// }
/// ```
///
/// This function is useful for auditing or managing permissions for admin-level access.