feat(auth): implement user and device authentication

This commit is contained in:
QiuSW
2026-07-26 15:18:48 +08:00
parent c5d3b215ff
commit 49db5b8305
66 changed files with 6216 additions and 271 deletions
@@ -5,6 +5,7 @@ import (
"errors"
"cmroubao/backend-api/internal/domain"
"cmroubao/backend-api/internal/transport/authcommon"
"cmroubao/backend-api/internal/usecase"
)
@@ -104,6 +105,7 @@ func (adapter *UsecaseAdapter) CreateTask(
}
result, err := adapter.tasks.Create(ctx, usecase.CreateTaskCommand{
CreatorSubject: localAdminSubject,
ActorUserID: actorUserID(ctx),
IdempotencyKey: input.IdempotencyKey,
Title: input.Title,
Description: input.Description,
@@ -118,12 +120,21 @@ func (adapter *UsecaseAdapter) CreateTask(
return taskFromPurchase(result.Task), nil
}
func actorUserID(ctx context.Context) string {
principal, ok := authcommon.Principal(ctx)
if !ok || principal.Role != domain.UserRoleAdmin {
return ""
}
return principal.UserID
}
func (adapter *UsecaseAdapter) CancelPending(
ctx context.Context,
input CancelPendingInput,
) (Task, error) {
task, err := adapter.tasks.Cancel(ctx, usecase.CancelTaskCommand{
CreatorSubject: localAdminSubject,
ActorUserID: actorUserID(ctx),
TaskID: input.TaskID,
Reason: "管理员取消",
})