feat(auth): implement user and device authentication
This commit is contained in:
@@ -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: "管理员取消",
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user