后台新增 /admin/account 一页,四块:公开资料、密码、第三方账号、Passkey。 - schema:users 加 role(默认 reader),新表 user_identities、passkeys。 user_identities 上双 UNIQUE —— (provider, extern_uid) 防一个外部账号顶两个身份, (user_id, provider) 防一站主绑两个同平台号,绑错也劫持不了。 extern_uid 存平台稳定 ID,不存用户名(用户名可改)。 - 头像存 files 里的 key 而非 URL,换存储/CDN 不失效;单 key SetSetting 写入, 避开 UpdateSettings 的整表替换会把它抹掉。站主名/简介从设置页挪到账户页, 一个字段只留一个编辑入口。 - OAuth 绑定要求先有后台会话(绑定动作本身是提权路径);已绑的站主身份登录后 直接发 one_session,读者身份仍发 one_reader。 - passkey 走 go-webauthn v0.15.0(最后一条吃 go 1.24 的版本线),可发现凭据登录。 必须显式设 ONE_WEBAUTHN_ORIGINS 才启用,不配就安静关掉。 签名计数只记克隆警告、不硬拦 —— 云同步 passkey 的计数本就不单调。 - 密码故意留在 ONE_ADMIN_PASSWORD,不做哈希入库:这是「解绑一切、删光 passkey 也还能进门」的保底,比 env 明文更值得守。memos 那个 SSO 建号随机密码无重置 入口的坑,从设计上绕开。 已知限制:会话仍是有状态无关的 HMAC cookie,删 passkey / 解绑不会让已发出的 7 天后台会话失效 —— 要修得加一张吊销表。
50 lines
2.1 KiB
AMPL
50 lines
2.1 KiB
AMPL
module oneblog
|
|
|
|
go 1.24.0
|
|
|
|
require (
|
|
github.com/aws/aws-sdk-go-v2 v1.47.1
|
|
github.com/aws/aws-sdk-go-v2/config v1.33.6
|
|
github.com/aws/aws-sdk-go-v2/credentials v1.20.6
|
|
github.com/aws/aws-sdk-go-v2/service/s3 v1.113.4
|
|
github.com/go-webauthn/webauthn v0.15.0
|
|
github.com/lib/pq v1.10.9
|
|
github.com/yuin/goldmark v1.7.13
|
|
golang.org/x/text v0.30.0
|
|
modernc.org/sqlite v1.39.0
|
|
)
|
|
|
|
require (
|
|
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.20 // indirect
|
|
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.20.1 // indirect
|
|
github.com/aws/aws-sdk-go-v2/internal/configsources v1.5.4 // indirect
|
|
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.8.4 // indirect
|
|
github.com/aws/aws-sdk-go-v2/internal/v4a v1.5.4 // indirect
|
|
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.19 // indirect
|
|
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.11.5 // indirect
|
|
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.14.4 // indirect
|
|
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.20.4 // indirect
|
|
github.com/aws/aws-sdk-go-v2/service/signin v1.10.1 // indirect
|
|
github.com/aws/aws-sdk-go-v2/service/sso v1.38.1 // indirect
|
|
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.43.1 // indirect
|
|
github.com/aws/aws-sdk-go-v2/service/sts v1.51.1 // indirect
|
|
github.com/aws/smithy-go v1.28.1 // indirect
|
|
github.com/dustin/go-humanize v1.0.1 // indirect
|
|
github.com/fxamacker/cbor/v2 v2.9.0 // indirect
|
|
github.com/go-viper/mapstructure/v2 v2.4.0 // indirect
|
|
github.com/go-webauthn/x v0.1.26 // indirect
|
|
github.com/golang-jwt/jwt/v5 v5.3.0 // indirect
|
|
github.com/google/go-tpm v0.9.6 // indirect
|
|
github.com/google/uuid v1.6.0 // indirect
|
|
github.com/mattn/go-isatty v0.0.20 // indirect
|
|
github.com/ncruces/go-strftime v0.1.9 // indirect
|
|
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect
|
|
github.com/x448/float16 v0.8.4 // indirect
|
|
golang.org/x/crypto v0.43.0 // indirect
|
|
golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b // indirect
|
|
golang.org/x/sys v0.37.0 // indirect
|
|
modernc.org/libc v1.66.3 // indirect
|
|
modernc.org/mathutil v1.7.1 // indirect
|
|
modernc.org/memory v1.11.0 // indirect
|
|
)
|