Skip to main content

better_auth_api/plugins/organization/
config.rs

1use std::collections::HashMap;
2
3/// Configuration for the Organization plugin
4#[derive(Debug, Clone)]
5pub struct OrganizationConfig {
6    /// Allow users to create organizations (default: true)
7    pub allow_user_to_create_organization: bool,
8    /// Maximum organizations per user (None = unlimited)
9    pub organization_limit: Option<usize>,
10    /// Maximum members per organization (None = unlimited)
11    pub membership_limit: Option<usize>,
12    /// Role assigned to organization creator (default: "owner")
13    pub creator_role: String,
14    /// Invitation expiration in seconds (default: 48 hours)
15    pub invitation_expires_in: u64,
16    /// Maximum pending invitations per organization (None = unlimited)
17    pub invitation_limit: Option<usize>,
18    /// Disable organization deletion (default: false)
19    pub disable_organization_deletion: bool,
20    /// Custom role definitions (extending default roles)
21    pub roles: HashMap<String, RolePermissions>,
22}
23
24/// Permission definitions for a role
25#[derive(Debug, Clone, Default)]
26pub struct RolePermissions {
27    pub organization: Vec<String>,
28    pub member: Vec<String>,
29    pub invitation: Vec<String>,
30}
31
32impl Default for OrganizationConfig {
33    fn default() -> Self {
34        Self {
35            allow_user_to_create_organization: true,
36            organization_limit: None,
37            membership_limit: Some(100),
38            creator_role: "owner".to_string(),
39            invitation_expires_in: 60 * 60 * 48, // 48 hours
40            invitation_limit: Some(100),
41            disable_organization_deletion: false,
42            roles: HashMap::new(),
43        }
44    }
45}
46
47impl OrganizationConfig {
48    pub fn new() -> Self {
49        Self::default()
50    }
51}