<?php

return [
    /*
     * 模型
     */
    'models' => [
        'permission' => \Kylin\Rbac\Models\Permission::class,
        'role' => \Kylin\Rbac\Models\Role::class,
    ],

    /*
     * 表名
     */
    'table_names' => [
        'roles' => 'kylin_roles',
        'permissions' => 'kylin_permissions',
        'role_has_permissions' => 'kylin_role_has_permissions',
        'model_has_roles' => 'kylin_model_has_roles',
        'model_has_permissions' => 'kylin_model_has_permissions',
    ],

    /*
     * 默认守卫
     */
    'guard' => env('KYLIN_RBAC_GUARD', 'web'),

    /*
     * 缓存
     */
    'cache' => [
        'enabled' => env('KYLIN_RBAC_CACHE', true),
        'ttl' => env('KYLIN_RBAC_CACHE_TTL', 86400),
        'key' => 'kylin.rbac',
    ],

    /*
     * 显示名称字段
     */
    'display_name_attribute' => 'display_name',

    /*
     * 法律合规 - 权限变更审计
     *
     * 依据等保 2.0 (GB/T 22239) 8.1.4.6：
     * 所有权限变更操作（角色分配、权限变更）需记录审计日志。
     */
    'audit' => [
        'enabled' => env('KYLIN_RBAC_AUDIT', true),
        'log_role_assign' => true,
        'log_permission_change' => true,
    ],

    /*
     * 法律合规 - 最小权限原则
     *
     * 依据等保 2.0 (GB/T 22239) 8.1.4.1：
     * 遵循最小权限原则，仅授予完成任务所需的最小权限集。
     */
    'least_privilege' => [
        'enforce' => env('KYLIN_RBAC_LEAST_PRIVILEGE', true),
        'default_role' => null,  // 新用户默认无角色
    ],
];
