Skip to content

feat(duely): send internal auth in service requests - #340

Open
DIvanCode wants to merge 1 commit into
masterfrom
codex/322-duely-internal-auth
Open

feat(duely): send internal auth in service requests#340
DIvanCode wants to merge 1 commit into
masterfrom
codex/322-duely-internal-auth

Conversation

@DIvanCode

Copy link
Copy Markdown
Owner

Closes#322

Duely now reads InternalAuthKey and sends it with every request to Taski, Exesh, and Analyzer. The configured header is redacted from HTTP client logs. Local configuration uses INTERNAL_AUTH_KEY_LOCAL_VALUE; the deployment playbook reads internal_auth_key from the encrypted credentials file and validates it before any deployment work begins.

Operator action before Ready for review: add the same non-local internal_auth_key to the encrypted credentials for Duely, Taski, Exesh, and later Analyzer. Do not commit the plaintext value.

Validation:

  • dotnet test --configuration Release — 447 passed
  • ansible-playbook --syntax-check with temporary non-secret test variables

@DIvanCode
DIvanCodeforce-pushed the codex/322-duely-internal-auth branch from 36ac571 to 8434880CompareSeptember 7, 2026 17:58
@DIvanCode
DIvanCodeforce-pushed the codex/322-duely-internal-auth branch from 8434880 to 9c869d6CompareSeptember 7, 2026 18:02
@DIvanCode
DIvanCode marked this pull request as ready for review September 7, 2026 18:03
@github-actions

Copy link
Copy Markdown

Summary

Summary
Generated on:09/07/2026 - 18:04:24
Coverage date:09/07/2026 - 18:03:37 - 09/07/2026 - 18:04:21
Parser:MultiReport (3x Cobertura)
Assemblies:4
Classes:252
Files:169
Line coverage:92.2% (4058 of 4399)
Covered lines:4058
Uncovered lines:341
Coverable lines:4399
Total lines:8949
Branch coverage:84.8% (848 of 999)
Covered branches:848
Total branches:999
Method coverage:Feature is only available for sponsors
Tag:162_34150065704

Coverage

Duely.Application.Services - 88.3%
NameLineBranch
Duely.Application.Services88.3%100%
Duely.Application.Services.Errors.AuthenticationError100%
Duely.Application.Services.Errors.EntityAlreadyExistsError33.3%
Duely.Application.Services.Errors.EntityNotFoundError33.3%
Duely.Application.Services.Errors.ForbiddenError66.6%
Duely.Application.Services.Errors.RateLimitExceededError100%
Duely.Application.Services.Outbox.ExecuteOutboxMessageCommand100%
Duely.Application.Services.Outbox.ExecuteOutboxMessageHandler100%
Duely.Application.Services.Outbox.Handlers.RunCodeOutboxHandler100%100%
Duely.Application.Services.Outbox.Handlers.SendMessageOutboxHandler100%
Duely.Application.Services.Outbox.Handlers.TestSolutionHandler100%
Duely.Application.Services.Outbox.Relay.OutboxDispatcher100%100%
Duely.Application.Services.RateLimiting.RateLimitingOptions100%
Duely.Application.Services.RateLimiting.RunUserCodeLimiter100%
Duely.Application.Services.RateLimiting.SubmissionRateLimiter100%
Duely.Application.UseCases - 92.4%
NameLineBranch
Duely.Application.UseCases92.4%85.3%
Duely.Application.UseCases.Dtos.AdminSubmissionListItemDto100%
Duely.Application.UseCases.Dtos.CodeRunDto100%
Duely.Application.UseCases.Dtos.DuelConfigurationDto100%
Duely.Application.UseCases.Dtos.DuelDto100%
Duely.Application.UseCases.Dtos.DuelInvitationDto100%
Duely.Application.UseCases.Dtos.DuelTaskConfigurationDto100%
Duely.Application.UseCases.Dtos.DuelTaskDto100%
Duely.Application.UseCases.Dtos.DuelTaskSolutionDto100%
Duely.Application.UseCases.Dtos.GroupDto100%
Duely.Application.UseCases.Dtos.GroupDuelDto100%
Duely.Application.UseCases.Dtos.GroupDuelInvitationDto100%
Duely.Application.UseCases.Dtos.GroupInvitationDto100%
Duely.Application.UseCases.Dtos.GroupListItemDto100%
Duely.Application.UseCases.Dtos.GroupStageDto0%
Duely.Application.UseCases.Dtos.GroupStageDuelDto0%
Duely.Application.UseCases.Dtos.GroupStageStandingDto0%
Duely.Application.UseCases.Dtos.GroupUserDto100%
Duely.Application.UseCases.Dtos.PendingDuelDto100%
Duely.Application.UseCases.Dtos.RankedDuelSearcherDto100%
Duely.Application.UseCases.Dtos.SingleEliminationBracketDto100%
Duely.Application.UseCases.Dtos.SingleEliminationBracketNodeDto100%
Duely.Application.UseCases.Dtos.SubmissionDto100%
Duely.Application.UseCases.Dtos.SubmissionListItemDto100%
Duely.Application.UseCases.Dtos.TicketDto100%
Duely.Application.UseCases.Dtos.TokenDto100%
Duely.Application.UseCases.Dtos.TournamentDetailsDto66.6%
Duely.Application.UseCases.Dtos.TournamentDto100%
Duely.Application.UseCases.Dtos.TournamentDuelInvitationDto100%
Duely.Application.UseCases.Dtos.UserDto100%
Duely.Application.UseCases.Features.CodeRuns.CreateCodeRunCommand100%
Duely.Application.UseCases.Features.CodeRuns.CreateCodeRunCommandValidator0%0%
Duely.Application.UseCases.Features.CodeRuns.CreateCodeRunHandler100%100%
Duely.Application.UseCases.Features.CodeRuns.GetCodeRunHandler100%100%
Duely.Application.UseCases.Features.CodeRuns.GetCodeRunQuery100%
Duely.Application.UseCases.Features.CodeRuns.UpdateCodeRunCommand100%
Duely.Application.UseCases.Features.CodeRuns.UpdateCodeRunHandler98.1%94.7%
Duely.Application.UseCases.Features.DuelConfigurations.CreateDuelConfigurat
ionCommand
100%
Duely.Application.UseCases.Features.DuelConfigurations.CreateDuelConfigurat
ionCommandValidator
96.7%66.6%
Duely.Application.UseCases.Features.DuelConfigurations.CreateDuelConfigurat
ionHandler
100%100%
Duely.Application.UseCases.Features.DuelConfigurations.DeleteDuelConfigurat
ionCommand
100%
Duely.Application.UseCases.Features.DuelConfigurations.DeleteDuelConfigurat
ionHandler
100%100%
Duely.Application.UseCases.Features.DuelConfigurations.GetDuelConfiguration
Handler
100%100%
Duely.Application.UseCases.Features.DuelConfigurations.GetDuelConfiguration
Query
100%
Duely.Application.UseCases.Features.DuelConfigurations.GetUserDuelConfigura
tionsHandler
100%
Duely.Application.UseCases.Features.DuelConfigurations.GetUserDuelConfigura
tionsQuery
100%
Duely.Application.UseCases.Features.DuelConfigurations.UpdateDuelConfigurat
ionCommand
100%
Duely.Application.UseCases.Features.DuelConfigurations.UpdateDuelConfigurat
ionCommandValidator
96.7%50%
Duely.Application.UseCases.Features.DuelConfigurations.UpdateDuelConfigurat
ionHandler
100%100%
Duely.Application.UseCases.Features.Duels.CancelPendingDuelsCommand100%
Duely.Application.UseCases.Features.Duels.CancelPendingDuelsHandler97.3%80%
Duely.Application.UseCases.Features.Duels.CheckDuelsForAnticheatCommand100%
Duely.Application.UseCases.Features.Duels.CheckDuelsForAnticheatHandler89.7%75%
Duely.Application.UseCases.Features.Duels.CheckDuelsForFinishHandler100%89.2%
Duely.Application.UseCases.Features.Duels.GetActiveDuelHandler100%100%
Duely.Application.UseCases.Features.Duels.GetActiveDuelQuery100%
Duely.Application.UseCases.Features.Duels.GetDuelHandler95%77.2%
Duely.Application.UseCases.Features.Duels.GetDuelQuery100%
Duely.Application.UseCases.Features.Duels.GetDuelsByStatusHandler100%
Duely.Application.UseCases.Features.Duels.GetDuelsByStatusQuery100%
Duely.Application.UseCases.Features.Duels.GetDuelsHistoryHandler100%100%
Duely.Application.UseCases.Features.Duels.GetDuelsHistoryQuery100%
Duely.Application.UseCases.Features.Duels.GetGroupDuelsHandler98.3%75%
Duely.Application.UseCases.Features.Duels.GetGroupDuelsQuery100%
Duely.Application.UseCases.Features.Duels.GetPendingDuelsHandler100%
Duely.Application.UseCases.Features.Duels.GetRankedDuelSearchersHandler100%
Duely.Application.UseCases.Features.Duels.Invitations.AcceptDuelInvitationC
ommand
100%
Duely.Application.UseCases.Features.Duels.Invitations.AcceptDuelInvitationH
andler
100%92.8%
Duely.Application.UseCases.Features.Duels.Invitations.AcceptGroupDuelInvita
tionCommand
100%
Duely.Application.UseCases.Features.Duels.Invitations.AcceptGroupDuelInvita
tionHandler
100%92.8%
Duely.Application.UseCases.Features.Duels.Invitations.CancelDuelInvitationC
ommand
100%
Duely.Application.UseCases.Features.Duels.Invitations.CancelDuelInvitationH
andler
100%100%
Duely.Application.UseCases.Features.Duels.Invitations.CancelGroupDuelInvita
tionCommand
100%
Duely.Application.UseCases.Features.Duels.Invitations.CancelGroupDuelInvita
tionHandler
100%100%
Duely.Application.UseCases.Features.Duels.Invitations.CreateDuelInvitationC
ommand
100%
Duely.Application.UseCases.Features.Duels.Invitations.CreateDuelInvitationH
andler
100%91.6%
Duely.Application.UseCases.Features.Duels.Invitations.CreateGroupDuelInvita
tionCommand
100%
Duely.Application.UseCases.Features.Duels.Invitations.CreateGroupDuelInvita
tionHandler
100%100%
Duely.Application.UseCases.Features.Duels.Invitations.DenyDuelInvitationCom
mand
100%
Duely.Application.UseCases.Features.Duels.Invitations.DenyDuelInvitationHan
dler
100%100%
Duely.Application.UseCases.Features.Duels.Invitations.GetIncomingDuelInvita
tionsHandler
100%
Duely.Application.UseCases.Features.Duels.Invitations.GetIncomingDuelInvita
tionsQuery
100%
Duely.Application.UseCases.Features.Duels.Invitations.GetIncomingGroupDuelI
nvitationsHandler
100%
Duely.Application.UseCases.Features.Duels.Invitations.GetIncomingGroupDuelI
nvitationsQuery
100%
Duely.Application.UseCases.Features.Duels.Search.AddInactiveBotsToRankedSea
rchHandler
0%0%
Duely.Application.UseCases.Features.Duels.Search.StartDuelSearchCommand100%
Duely.Application.UseCases.Features.Duels.Search.StartDuelSearchHandler100%83.3%
Duely.Application.UseCases.Features.Duels.TryCreateDuelHandler94.6%90.9%
Duely.Application.UseCases.Features.Duels.UpdateDuelTaskSolutionCommand100%
Duely.Application.UseCases.Features.Duels.UpdateDuelTaskSolutionCommandVali
dator
0%
Duely.Application.UseCases.Features.Duels.UpdateDuelTaskSolutionHandler83.6%85.7%
Duely.Application.UseCases.Features.Groups.AcceptInviteCommand100%
Duely.Application.UseCases.Features.Groups.AcceptInviteHandler100%100%
Duely.Application.UseCases.Features.Groups.CancelInviteCommand100%
Duely.Application.UseCases.Features.Groups.CancelInviteHandler96.6%75%
Duely.Application.UseCases.Features.Groups.ChangeRoleCommand100%
Duely.Application.UseCases.Features.Groups.ChangeRoleHandler90.4%78.5%
Duely.Application.UseCases.Features.Groups.CreateGroupCommand100%
Duely.Application.UseCases.Features.Groups.CreateGroupCommandValidator0%
Duely.Application.UseCases.Features.Groups.CreateGroupHandler100%100%
Duely.Application.UseCases.Features.Groups.DenyInviteCommand100%
Duely.Application.UseCases.Features.Groups.DenyInviteHandler100%100%
Duely.Application.UseCases.Features.Groups.ExcludeUserCommand100%
Duely.Application.UseCases.Features.Groups.ExcludeUserHandler88.8%75%
Duely.Application.UseCases.Features.Groups.GetAllGroupsHandler100%
Duely.Application.UseCases.Features.Groups.GetGroupHandler100%100%
Duely.Application.UseCases.Features.Groups.GetGroupInvitationsHandler100%
Duely.Application.UseCases.Features.Groups.GetGroupInvitationsQuery100%
Duely.Application.UseCases.Features.Groups.GetGroupQuery100%
Duely.Application.UseCases.Features.Groups.GetGroupUsersHandler97.6%91.6%
Duely.Application.UseCases.Features.Groups.GetGroupUsersQuery100%
Duely.Application.UseCases.Features.Groups.GetUserGroupsHandler100%
Duely.Application.UseCases.Features.Groups.GetUserGroupsQuery100%
Duely.Application.UseCases.Features.Groups.InviteUserCommand100%
Duely.Application.UseCases.Features.Groups.InviteUserHandler95.9%83.3%
Duely.Application.UseCases.Features.Groups.LeaveGroupCommand100%
Duely.Application.UseCases.Features.Groups.LeaveGroupHandler100%100%
Duely.Application.UseCases.Features.Groups.UpdateGroupCommand100%
Duely.Application.UseCases.Features.Groups.UpdateGroupCommandValidator0%
Duely.Application.UseCases.Features.Groups.UpdateGroupHandler100%100%
Duely.Application.UseCases.Features.Submissions.GetAllSubmissionsHandler100%100%
Duely.Application.UseCases.Features.Submissions.GetAllSubmissionsQuery100%
Duely.Application.UseCases.Features.Submissions.GetSubmissionHandler95.2%87.5%
Duely.Application.UseCases.Features.Submissions.GetSubmissionQuery100%
Duely.Application.UseCases.Features.Submissions.GetUserSubmissionsHandler100%94.4%
Duely.Application.UseCases.Features.Submissions.GetUserSubmissionsQuery100%
Duely.Application.UseCases.Features.Submissions.SendSubmissionCommand83.3%
Duely.Application.UseCases.Features.Submissions.SendSubmissionHandler92.8%56.2%
Duely.Application.UseCases.Features.Submissions.UpdateSubmissionStatusComma
nd
100%
Duely.Application.UseCases.Features.Submissions.UpdateSubmissionStatusHandl
er
96%80%
Duely.Application.UseCases.Features.Tournaments.AcceptTournamentDuelCommand100%
Duely.Application.UseCases.Features.Tournaments.AcceptTournamentDuelHandler100%92.8%
Duely.Application.UseCases.Features.Tournaments.CreateTournamentCommand100%
Duely.Application.UseCases.Features.Tournaments.CreateTournamentCommandVali
dator
100%
Duely.Application.UseCases.Features.Tournaments.CreateTournamentHandler87.8%81.2%
Duely.Application.UseCases.Features.Tournaments.GetGroupTournamentsHandler96.2%90%
Duely.Application.UseCases.Features.Tournaments.GetGroupTournamentsQuery100%
Duely.Application.UseCases.Features.Tournaments.GetIncomingTournamentDuelIn
vitationsHandler
100%
Duely.Application.UseCases.Features.Tournaments.GetIncomingTournamentDuelIn
vitationsQuery
100%
Duely.Application.UseCases.Features.Tournaments.GetTournamentHandler94.2%62.5%
Duely.Application.UseCases.Features.Tournaments.GetTournamentQuery100%
Duely.Application.UseCases.Features.Tournaments.GetTournamentsByStateHandle
r
100%100%
Duely.Application.UseCases.Features.Tournaments.GetTournamentsByStateQuery100%
Duely.Application.UseCases.Features.Tournaments.StartTournamentCommand100%
Duely.Application.UseCases.Features.Tournaments.StartTournamentHandler95%87.5%
Duely.Application.UseCases.Features.Tournaments.SyncActiveTournamentsHandle
r
99.3%83.3%
Duely.Application.UseCases.Features.UserActions.GetUserActionsHandler100%
Duely.Application.UseCases.Features.UserActions.GetUserActionsQuery75%
Duely.Application.UseCases.Features.UserActions.GetUserActionsQueryValidato
r
0%
Duely.Application.UseCases.Features.UserActions.SaveUserActionsCommand66.6%
Duely.Application.UseCases.Features.UserActions.SaveUserActionsCommandValid
ator
0%
Duely.Application.UseCases.Features.UserActions.SaveUserActionsHandler100%100%
Duely.Application.UseCases.Features.UserActions.UserActionValidator0%
Duely.Application.UseCases.Features.Users.CreateTicketCommand100%
Duely.Application.UseCases.Features.Users.CreateTicketHandler94.7%66.6%
Duely.Application.UseCases.Features.Users.GetByNicknameHandler100%100%
Duely.Application.UseCases.Features.Users.GetHandler100%100%
Duely.Application.UseCases.Features.Users.GetUserByNicknameQuery100%
Duely.Application.UseCases.Features.Users.GetUserByTicketCommand100%
Duely.Application.UseCases.Features.Users.GetUserByTicketCommandValidator100%
Duely.Application.UseCases.Features.Users.GetUserByTicketHandler100%100%
Duely.Application.UseCases.Features.Users.GetUserQuery100%
Duely.Application.UseCases.Features.Users.GetUsersHandler100%100%
Duely.Application.UseCases.Features.Users.GetUsersQuery100%
Duely.Application.UseCases.Features.Users.LoginCommand100%
Duely.Application.UseCases.Features.Users.LoginHandler100%100%
Duely.Application.UseCases.Features.Users.RefreshTokenCommand100%
Duely.Application.UseCases.Features.Users.RefreshTokenHandler100%100%
Duely.Application.UseCases.Features.Users.RegisterCommand100%
Duely.Application.UseCases.Features.Users.RegisterCommandValidator100%
Duely.Application.UseCases.Features.Users.RegisterHandler100%100%
Duely.Application.UseCases.Helpers.DuelDtoMapper96%87.5%
Duely.Application.UseCases.Helpers.GroupStageTournamentDetailsMapper0%0%
Duely.Application.UseCases.Helpers.SingleEliminationBracketTournamentDetail
sMapper
100%100%
Duely.Application.UseCases.Helpers.TournamentDetailsMapperResolver100%
Duely.Application.UseCases.Helpers.TournamentDtoMapper100%100%
Duely.Domain.Models - 89%
NameLineBranch
Duely.Domain.Models89%****
Duely.Domain.Models.AnticheatScore100%
Duely.Domain.Models.CodeRun100%
Duely.Domain.Models.Duels.Duel100%
Duely.Domain.Models.Duels.DuelConfiguration100%
Duely.Domain.Models.Duels.DuelTask100%
Duely.Domain.Models.Duels.DuelTaskConfiguration100%
Duely.Domain.Models.Duels.DuelTaskSolution100%
Duely.Domain.Models.Duels.Pending.FriendlyPendingDuel100%
Duely.Domain.Models.Duels.Pending.GroupPendingDuel100%
Duely.Domain.Models.Duels.Pending.PendingDuel100%
Duely.Domain.Models.Duels.Pending.RankedPendingDuel100%
Duely.Domain.Models.Duels.Pending.TournamentPendingDuel100%
Duely.Domain.Models.Groups.Group100%
Duely.Domain.Models.Groups.GroupDuel100%
Duely.Domain.Models.Groups.GroupMembership100%
Duely.Domain.Models.Messages.CodeRunStatusUpdatedMessage100%
Duely.Domain.Models.Messages.DuelChangedMessage100%
Duely.Domain.Models.Messages.DuelFinishedMessage100%
Duely.Domain.Models.Messages.DuelInvitationCanceledMessage100%
Duely.Domain.Models.Messages.DuelInvitationDeniedMessage100%
Duely.Domain.Models.Messages.DuelInvitationMessage100%
Duely.Domain.Models.Messages.DuelStartedMessage100%
Duely.Domain.Models.Messages.GroupDuelInvitationCanceledMessage100%
Duely.Domain.Models.Messages.GroupDuelInvitationMessage100%
Duely.Domain.Models.Messages.GroupInvitationCanceledMessage100%
Duely.Domain.Models.Messages.GroupInvitationMessage100%
Duely.Domain.Models.Messages.OpponentSolutionUpdatedMessage100%
Duely.Domain.Models.Messages.SubmissionStatusUpdatedMessage100%
Duely.Domain.Models.Messages.TournamentDuelInvitationMessage100%
Duely.Domain.Models.Outbox.OutboxMessage71.4%
Duely.Domain.Models.Outbox.Payloads.RunCodePayload100%
Duely.Domain.Models.Outbox.Payloads.SendMessagePayload100%
Duely.Domain.Models.Outbox.Payloads.TestSolutionPayload100%
Duely.Domain.Models.Submission100%
Duely.Domain.Models.Tournaments.GroupStageTournament100%
Duely.Domain.Models.Tournaments.SingleEliminationBracketNode100%
Duely.Domain.Models.Tournaments.SingleEliminationBracketTournament100%
Duely.Domain.Models.Tournaments.Tournament100%
Duely.Domain.Models.Tournaments.TournamentParticipant100%
Duely.Domain.Models.User100%
Duely.Domain.Models.UserActions.ChooseLanguageUserAction50%
Duely.Domain.Models.UserActions.CutCodeUserAction0%
Duely.Domain.Models.UserActions.DeleteCodeUserAction0%
Duely.Domain.Models.UserActions.MoveCursorUserAction75%
Duely.Domain.Models.UserActions.PasteCodeUserAction0%
Duely.Domain.Models.UserActions.RunCustomTestUserAction0%
Duely.Domain.Models.UserActions.RunSampleTestUserAction0%
Duely.Domain.Models.UserActions.SubmitSolutionUserAction0%
Duely.Domain.Models.UserActions.UserAction85.7%
Duely.Domain.Models.UserActions.WriteCodeUserAction66.6%
Duely.Domain.Services - 93.1%
NameLineBranch
Duely.Domain.Services93.1%83.5%
Duely.Domain.Services.Duels.DuelManager95.9%91.3%
Duely.Domain.Services.Duels.DuelOptions100%
Duely.Domain.Services.Duels.DuelPair100%
Duely.Domain.Services.Duels.RatingManager96.3%86.3%
Duely.Domain.Services.Duels.RatingToTaskLevelMappingItem100%
Duely.Domain.Services.Duels.TaskService84.5%86.7%
Duely.Domain.Services.Groups.GroupPermissionsService97.1%82.6%
Duely.Domain.Services.Tournaments.GroupStageMatchmakingStrategy95.1%80%
Duely.Domain.Services.Tournaments.SingleEliminationBracketMatchmakingStrate
gy
93.6%77.4%
Duely.Domain.Services.Tournaments.TournamentMatchmakingStrategyResolver100%
Duely.Domain.Services.Tournaments.TournamentPendingDuelCandidate100%
Duely.Domain.Services.Users.JwtTokenOptions100%
Duely.Domain.Services.Users.TokenService100%

@chatgpt-codex-connectorchatgpt-codex-connectorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:9c869d6abf

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

- "5001:5001"
env:
ASPNETCORE_ENVIRONMENT: "Production"
InternalAuthKey: "{{ internal_auth_key }}"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Validate the auth key before deployment tasks

If internal_auth_key is undefined or blank, this is the first place it is consumed: the playbook has already ensured the network, pulled both images, and run the migration in the preceding tasks, while a blank value is accepted and starts Duely with unusable service credentials. Because the Duely pull-request workflow automatically deploys the revision, add a pre-task assertion that the key is defined and nonempty before any deployment side effects.

AGENTS.md reference: AGENTS.md:L32-L32

Useful? React with 👍 / 👎.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[internal-auth][Duely] Подкладывать заголовок internal-auth в межсервисные запросы

1 participant

@DIvanCode