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	vec![
13		Permission::Struct::New("file.read".to_string(), "Read file operations".to_string(), "file".to_string()),
14		Permission::Struct::New(
15			"file.write".to_string(),
16			"Write file operations".to_string(),
17			"file".to_string(),
18		),
19		Permission::Struct::New(
20			"file.delete".to_string(),
21			"Delete file operations".to_string(),
22			"file".to_string(),
23		),
24		Permission::Struct::New(
25			"config.read".to_string(),
26			"Read configuration".to_string(),
27			"config".to_string(),
28		),
29		Permission::Struct::NewSensitive(
30			"config.update".to_string(),
31			"Update configuration".to_string(),
32			"config".to_string(),
33		)
34		.SetSensitive(),
35		Permission::Struct::New("storage.read".to_string(), "Read storage".to_string(), "storage".to_string()),
36		Permission::Struct::New("storage.write".to_string(), "Write storage".to_string(), "storage".to_string()),
37		Permission::Struct::New(
38			"storage.delete".to_string(),
39			"Delete from storage".to_string(),
40			"storage".to_string(),
41		),
42		Permission::Struct::NewSensitive(
43			"system.external".to_string(),
44			"Access external system resources".to_string(),
45			"system".to_string(),
46		)
47		.SetSensitive(),
48		Permission::Struct::NewSensitive(
49			"system.execute".to_string(),
50			"Execute system commands".to_string(),
51			"system".to_string(),
52		)
53		.SetSensitive(),
54		Permission::Struct::NewSensitive(
55			"admin.manage".to_string(),
56			"Administrative management operations".to_string(),
57			"admin".to_string(),
58		)
59		.SetSensitive(),
60		Permission::Struct::NewSensitive(
61			"role.manage".to_string(),
62			"Manage roles and permissions".to_string(),
63			"admin".to_string(),
64		)
65		.SetSensitive(),
66	]
67}