diff --git a/wwwroot/index.ui b/wwwroot/index.ui
new file mode 100644
index 0000000..f161450
--- /dev/null
+++ b/wwwroot/index.ui
@@ -0,0 +1,212 @@
+{% set roles = get_user_roles(get_user()) %}
+{
+ "widgettype": "VBox",
+ "options": {
+ "width": "100%",
+ "height": "100%",
+ "padding": "0",
+ "bgcolor": "#0B1120"
+ },
+ "subwidgets": [
+ {
+ "widgettype": "HBox",
+ "options": {
+ "width": "100%",
+ "alignItems": "center",
+ "marginBottom": "24px"
+ },
+ "subwidgets": [
+ {
+ "widgettype": "Title2",
+ "options": {
+ "text": "用户与权限",
+ "color": "#F1F5F9",
+ "fontWeight": "700"
+ }
+ },
+ {
+ "widgettype": "Filler"
+ },
+ {
+ "widgettype": "Text",
+ "options": {
+ "text": "用户管理、角色权限与安全审计",
+ "fontSize": "14px",
+ "color": "#64748B"
+ }
+ }
+ ]
+ },
+{% if 'reseller.admin' in roles or 'owner.superuser' in roles %}
+ {
+ "widgettype": "ResponsableBox",
+ "options": {
+ "gap": "16px",
+ "minWidth": "250px",
+ "marginBottom": "24px"
+ },
+ "subwidgets": [
+ {
+ "widgettype": "VBox",
+ "options": {
+ "bgcolor": "#1E293B",
+ "padding": "24px",
+ "borderRadius": "12px",
+ "border": "1px solid #334155",
+ "cursor": "pointer"
+ },
+ "binds": [
+ {
+ "wid": "self",
+ "event": "click",
+ "actiontype": "urlwidget",
+ "target": "app.rbac_content",
+ "options": {
+ "url": "{{entire_url('/rbac/users')}}"
+ },
+ "mode": "replace"
+ }
+ ],
+ "subwidgets": [
+ {
+ "widgettype": "Svg",
+ "options": {
+ "svg": "",
+ "width": "36px",
+ "height": "36px",
+ "marginBottom": "16px"
+ }
+ },
+ {
+ "widgettype": "Title4",
+ "options": {
+ "text": "用户管理",
+ "color": "#F1F5F9",
+ "fontWeight": "600",
+ "marginBottom": "8px"
+ }
+ },
+ {
+ "widgettype": "Text",
+ "options": {
+ "text": "管理系统用户、角色分配与账户信息",
+ "fontSize": "14px",
+ "color": "#94A3B8"
+ }
+ }
+ ]
+ },
+ {
+ "widgettype": "VBox",
+ "options": {
+ "bgcolor": "#1E293B",
+ "padding": "24px",
+ "borderRadius": "12px",
+ "border": "1px solid #334155",
+ "cursor": "pointer"
+ },
+ "binds": [
+ {
+ "wid": "self",
+ "event": "click",
+ "actiontype": "urlwidget",
+ "target": "app.rbac_content",
+ "options": {
+ "url": "{{entire_url('/rbac/list_path_roles.ui')}}"
+ },
+ "mode": "replace"
+ }
+ ],
+ "subwidgets": [
+ {
+ "widgettype": "Svg",
+ "options": {
+ "svg": "",
+ "width": "36px",
+ "height": "36px",
+ "marginBottom": "16px"
+ }
+ },
+ {
+ "widgettype": "Title4",
+ "options": {
+ "text": "路径权限角色",
+ "color": "#F1F5F9",
+ "fontWeight": "600",
+ "marginBottom": "8px"
+ }
+ },
+ {
+ "widgettype": "Text",
+ "options": {
+ "text": "查询各路径绑定的角色与权限配置",
+ "fontSize": "14px",
+ "color": "#94A3B8"
+ }
+ }
+ ]
+ },
+ {
+ "widgettype": "VBox",
+ "options": {
+ "bgcolor": "#1E293B",
+ "padding": "24px",
+ "borderRadius": "12px",
+ "border": "1px solid #334155",
+ "cursor": "pointer"
+ },
+ "binds": [
+ {
+ "wid": "self",
+ "event": "click",
+ "actiontype": "urlwidget",
+ "target": "app.rbac_content",
+ "options": {
+ "url": "{{entire_url('/rbac/find_unauth_files.dspy')}}"
+ },
+ "mode": "replace"
+ }
+ ],
+ "subwidgets": [
+ {
+ "widgettype": "Svg",
+ "options": {
+ "svg": "",
+ "width": "36px",
+ "height": "36px",
+ "marginBottom": "16px"
+ }
+ },
+ {
+ "widgettype": "Title4",
+ "options": {
+ "text": "扫描未授权文件",
+ "color": "#F1F5F9",
+ "fontWeight": "600",
+ "marginBottom": "8px"
+ }
+ },
+ {
+ "widgettype": "Text",
+ "options": {
+ "text": "检测未配置RBAC权限的页面文件",
+ "fontSize": "14px",
+ "color": "#94A3B8"
+ }
+ }
+ ]
+ }
+ ]
+ },
+{% endif %}
+ {
+ "widgettype": "VBox",
+ "id": "rbac_content",
+ "options": {
+ "width": "100%",
+ "flex": "1",
+ "marginTop": "20px"
+ }
+ }
+ ]
+}