Skip to main content

Mountain/IPC/Permission/Role/ManageRole/
CreateStandardPermissions.rs

1#![allow(non_snake_case)]
2
3//! Build the standard `Permission::Struct` set covering file,
4//! config, storage, system, and admin categories. Sensitive
5//! permissions (`config.update`, `system.*`, `admin.*`,
6//! `role.manage`) are flagged so audit logging picks them up.
7
8use crate::{IPC::Permission::Role::ManageRole::Permission, dev_log};
9
10pub fn Fn() -> Vec<Permission::Struct> {
11	dev_log!("ipc", "[ManageRole] Creating standard permissions");
12
13	vec![
14		Permission::Struct::New("file.read".to_string(), "Read file operations".to_string(), "file".to_string()),
15		Permission::Struct::New(
16			"file.write".to_string(),
17			"Write file operations".to_string(),
18			"file".to_string(),
19		),
20		Permission::Struct::New(
21			"file.delete".to_string(),
22			"Delete file operations".to_string(),
23			"file".to_string(),
24		),
25		Permission::Struct::New(
26			"config.read".to_string(),
27			"Read configuration".to_string(),
28			"config".to_string(),
29		),
30		Permission::Struct::NewSensitive(
31			"config.update".to_string(),
32			"Update configuration".to_string(),
33			"config".to_string(),
34		)
35		.SetSensitive(),
36		Permission::Struct::New("storage.read".to_string(), "Read storage".to_string(), "storage".to_string()),
37		Permission::Struct::New("storage.write".to_string(), "Write storage".to_string(), "storage".to_string()),
38		Permission::Struct::New(
39			"storage.delete".to_string(),
40			"Delete from storage".to_string(),
41			"storage".to_string(),
42		),
43		Permission::Struct::NewSensitive(
44			"system.external".to_string(),
45			"Access external system resources".to_string(),
46			"system".to_string(),
47		)
48		.SetSensitive(),
49		Permission::Struct::NewSensitive(
50			"system.execute".to_string(),
51			"Execute system commands".to_string(),
52			"system".to_string(),
53		)
54		.SetSensitive(),
55		Permission::Struct::NewSensitive(
56			"admin.manage".to_string(),
57			"Administrative management operations".to_string(),
58			"admin".to_string(),
59		)
60		.SetSensitive(),
61		Permission::Struct::NewSensitive(
62			"role.manage".to_string(),
63			"Manage roles and permissions".to_string(),
64			"admin".to_string(),
65		)
66		.SetSensitive(),
67	]
68}