Artifact 649d38a8c460ad6ff8371974aa534842f47c08c9005c732196a660d0aaaa34e9:
- File
backend/src/clock.gleam
— part of check-in
[1821522f51]
at
2026-10-23 05:51:23
on branch trunk
— RBAC 权限与多仓数据隔离
- 新增用户、角色、权限点、用户角色、用户授权仓库、登录会话、审计日志表(008_rbac) - 预设五个角色(超级管理员、仓库主管、制单/调度员、打包复核员、库内作业员),按角色限制登录终端 - 账号密码登录,PBKDF2-SHA256 加盐存储,令牌只存哈希,会话按配置过期,连续输错锁定 - 首个超级管理员从 SWIFTFLOW_ADMIN_USERNAME / SWIFTFLOW_ADMIN_PASSWORD 创建,仅在用户表为空时生效 - 除健康检查与登录外所有接口需登录并校验权限点 - 订单、采购单、库位、库存、批次码按授权仓库过滤;收货、上架、出库只能在当前作业仓库进行 - 用户管理、角色查询、审计日志接口;同步、库位、上架、收货、出库写操作记录审计 (user: pluto size: 481)
@external(erlang, "swiftflow_clock_ffi", "now_local") pub fn now_local() -> String @external(erlang, "swiftflow_clock_ffi", "today_local") pub fn today_local() -> String @external(erlang, "swiftflow_clock_ffi", "shift_days_local") pub fn shift_days_local(days: Int) -> String @external(erlang, "swiftflow_clock_ffi", "shift_seconds_local") pub fn shift_seconds_local(seconds: Int) -> String @external(erlang, "swiftflow_clock_ffi", "monotonic_ms") pub fn monotonic_ms() -> Int