release: PicHost v1.0.0
Publish Docker image / build-and-push (push) Canceled after 0s
ci / ci (22, ubuntu-latest) (push) Canceled after 0s

Multi-user image hosting with RBAC, upload preferences, and admin settings.
This commit is contained in:
O96u committed 2026-08-22 14:36:57 +08:00
commit bc4cba7e52
115 files changed
+26508

No files matched your search

+20
View File
@@ -0,0 +1,20 @@
import { requireUserAuth } from '../../utils/access'
import { ensureUserApiToken } from '../../utils/db'
import { getImageBaseUrl } from '../../utils/env'
export default defineEventHandler(async (event) => {
const user = await requireUserAuth(event)
const config = useRuntimeConfig(event)
return {
apiUploadToken: ensureUserApiToken(user.id),
tokenSource: 'db' as const,
envTokenOverride: false,
env: {
webpQuality: 80,
refererConfigured: false,
imageBaseUrl: getImageBaseUrl(event),
appVersion: config.appVersion as string
}
}
})
@@ -0,0 +1,10 @@
import { requireUserAuth } from '../../../utils/access'
import { generateApiUploadToken, setUserApiToken } from '../../../utils/db'
export default defineEventHandler(async (event) => {
const user = await requireUserAuth(event)
const token = generateApiUploadToken()
setUserApiToken(user.id, token)
return { apiUploadToken: token }
})
+11
View File
@@ -0,0 +1,11 @@
import { requireUserAuth } from '../../utils/access'
import { getUserAutoDeletePolicy } from '../../utils/db'
export default defineEventHandler(async (event) => {
const user = await requireUserAuth(event)
const policy = getUserAutoDeletePolicy(user.id)
return {
autoDeleteDays: policy.days
}
})
+34
View File
@@ -0,0 +1,34 @@
import { requireUserAuth } from '../../utils/access'
import { createApiError } from '../../utils/api-error'
import { getUserAutoDeletePolicy, setUserAutoDeletePolicy } from '../../utils/db'
import { MAX_AUTO_DELETE_DAYS, parseAutoDeleteDays } from '../../utils/env'
interface UserSettingsPatchBody {
autoDeleteDays?: unknown
}
export default defineEventHandler(async (event) => {
const user = await requireUserAuth(event)
const body = await readBody<UserSettingsPatchBody>(event).catch(
(): UserSettingsPatchBody => ({})
)
if (body.autoDeleteDays !== undefined) {
const days = parseAutoDeleteDays(String(body.autoDeleteDays))
if (days === null) {
createApiError(
event,
'INVALID_REQUEST',
`自动删除天数需为 0–${MAX_AUTO_DELETE_DAYS} 的整数(0 表示关闭)`,
400
)
}
setUserAutoDeletePolicy(user.id, days)
}
const policy = getUserAutoDeletePolicy(user.id)
return {
autoDeleteDays: policy.days
}
})