From b2234b7c4a2c15032bbafe0b8c4c6f2906d34161 Mon Sep 17 00:00:00 2001 From: Ed <96445749+TheShuEd@users.noreply.github.com> Date: Tue, 4 Feb 2025 22:44:22 +0300 Subject: [PATCH] Discord authentification (#819) * Auth setup * fixes * messages * adapt to new auth * cvar fix * generating link setup * new version adapt * fix * Update DiscordAuthManager.cs --- Content.Client/Entry/EntryPoint.cs | 9 +- Content.Client/IoC/ClientContentIoC.cs | 4 + .../_CP14/Discord/CP14DiscordAuthManager.cs | 27 ++++ .../_CP14/Discord/CP14DiscordAuthState.cs | 36 +++++ .../_CP14/Discord/DiscordAuthGui.xaml | 29 ++++ .../_CP14/Discord/DiscordAuthGui.xaml.cs | 46 ++++++ Content.Server/Entry/EntryPoint.cs | 5 + .../GameTicking/GameTicker.Player.cs | 2 +- Content.Server/IoC/ServerContentIoC.cs | 4 + .../_CP14/Discord/DiscordAuthManager.cs | 138 ++++++++++++++++++ .../_CP14/CCvar/CCvars.CP14DiscordAuth.cs | 15 ++ .../_CP14/CCvar/CCvars.CP14JoinQueue.cs | 9 ++ .../_CP14/CCvar/CCvars.CP14Sponsors.cs | 12 ++ .../_CP14/Discord/MsgDiscordAuthCheck.cs | 18 +++ .../_CP14/Discord/MsgDiscordAuthRequired.cs | 21 +++ .../en-US/_CP14/connection_messages.ftl | 5 + .../Locale/en-US/_CP14/discord/queue.ftl | 5 + .../ru-RU/_CP14/connection_messages.ftl | 6 + .../Locale/ru-RU/_CP14/discord/queue.ftl | 5 + 19 files changed, 394 insertions(+), 2 deletions(-) create mode 100644 Content.Client/_CP14/Discord/CP14DiscordAuthManager.cs create mode 100644 Content.Client/_CP14/Discord/CP14DiscordAuthState.cs create mode 100644 Content.Client/_CP14/Discord/DiscordAuthGui.xaml create mode 100644 Content.Client/_CP14/Discord/DiscordAuthGui.xaml.cs create mode 100644 Content.Server/_CP14/Discord/DiscordAuthManager.cs create mode 100644 Content.Shared/_CP14/CCvar/CCvars.CP14DiscordAuth.cs create mode 100644 Content.Shared/_CP14/CCvar/CCvars.CP14JoinQueue.cs create mode 100644 Content.Shared/_CP14/CCvar/CCvars.CP14Sponsors.cs create mode 100644 Content.Shared/_CP14/Discord/MsgDiscordAuthCheck.cs create mode 100644 Content.Shared/_CP14/Discord/MsgDiscordAuthRequired.cs create mode 100644 Resources/Locale/en-US/_CP14/connection_messages.ftl create mode 100644 Resources/Locale/en-US/_CP14/discord/queue.ftl create mode 100644 Resources/Locale/ru-RU/_CP14/connection_messages.ftl create mode 100644 Resources/Locale/ru-RU/_CP14/discord/queue.ftl diff --git a/Content.Client/Entry/EntryPoint.cs b/Content.Client/Entry/EntryPoint.cs index cb05916ee0..af85ff921f 100644 --- a/Content.Client/Entry/EntryPoint.cs +++ b/Content.Client/Entry/EntryPoint.cs @@ -1,3 +1,4 @@ +using Content.Client._CP14.Discord; using Content.Client.Administration.Managers; using Content.Client.Changelog; using Content.Client.Chat.Managers; @@ -43,6 +44,9 @@ namespace Content.Client.Entry { public sealed class EntryPoint : GameClient { + //CP14 + [Dependency] private readonly DiscordAuthManager _discordAuth = default!; + //CP14 end [Dependency] private readonly IBaseClient _baseClient = default!; [Dependency] private readonly IGameController _gameController = default!; [Dependency] private readonly IStateManager _stateManager = default!; @@ -160,7 +164,10 @@ namespace Content.Client.Entry _parallaxManager.LoadDefaultParallax(); - _overlayManager.AddOverlay(new CP14BasePostProcessOverlay()); // CP14-PostProcess + //CP14 + _overlayManager.AddOverlay(new CP14BasePostProcessOverlay()); + _discordAuth.Initialize(); + //CP14 end _overlayManager.AddOverlay(new SingularityOverlay()); _overlayManager.AddOverlay(new RadiationPulseOverlay()); _chatManager.Initialize(); diff --git a/Content.Client/IoC/ClientContentIoC.cs b/Content.Client/IoC/ClientContentIoC.cs index 370188e3c6..0756800d8d 100644 --- a/Content.Client/IoC/ClientContentIoC.cs +++ b/Content.Client/IoC/ClientContentIoC.cs @@ -1,3 +1,4 @@ +using Content.Client._CP14.Discord; using Content.Client.Administration.Managers; using Content.Client.Changelog; using Content.Client.Chat.Managers; @@ -33,6 +34,9 @@ namespace Content.Client.IoC { var collection = IoCManager.Instance!; + //CP14 + collection.Register(); + //CP14 end collection.Register(); collection.Register(); collection.Register(); diff --git a/Content.Client/_CP14/Discord/CP14DiscordAuthManager.cs b/Content.Client/_CP14/Discord/CP14DiscordAuthManager.cs new file mode 100644 index 0000000000..a627ffe2e4 --- /dev/null +++ b/Content.Client/_CP14/Discord/CP14DiscordAuthManager.cs @@ -0,0 +1,27 @@ +using Content.Shared._CP14.Discord; +using Robust.Client.State; +using Robust.Shared.Network; + +namespace Content.Client._CP14.Discord; + +public sealed class DiscordAuthManager +{ + [Dependency] private readonly IClientNetManager _netManager = default!; + [Dependency] private readonly IStateManager _stateManager = default!; + + public string AuthUrl { get; private set; } = ""; + + public void Initialize() + { + _netManager.RegisterNetMessage(); + _netManager.RegisterNetMessage(OnDiscordAuthRequired); + } + + private void OnDiscordAuthRequired(MsgDiscordAuthRequired msg) + { + if (_stateManager.CurrentState is DiscordAuthState) + return; + AuthUrl = msg.AuthUrl; + _stateManager.RequestStateChange(); + } +} diff --git a/Content.Client/_CP14/Discord/CP14DiscordAuthState.cs b/Content.Client/_CP14/Discord/CP14DiscordAuthState.cs new file mode 100644 index 0000000000..33e439dc86 --- /dev/null +++ b/Content.Client/_CP14/Discord/CP14DiscordAuthState.cs @@ -0,0 +1,36 @@ +using System.Threading; +using Content.Shared._CP14.Discord; +using Robust.Client.State; +using Robust.Client.UserInterface; +using Robust.Shared.Network; +using Timer = Robust.Shared.Timing.Timer; + +namespace Content.Client._CP14.Discord; + +public sealed class DiscordAuthState : State +{ + [Dependency] private readonly IUserInterfaceManager _userInterfaceManager = default!; + [Dependency] private readonly IClientNetManager _netManager = default!; + + private DiscordAuthGui? _gui; + private readonly CancellationTokenSource _checkTimerCancel = new(); + + protected override void Startup() + { + _gui = new DiscordAuthGui(); + _userInterfaceManager.StateRoot.AddChild(_gui); + + Timer.SpawnRepeating(TimeSpan.FromSeconds(5), + () => + { + _netManager.ClientSendMessage(new MsgDiscordAuthCheck()); + }, + _checkTimerCancel.Token); + } + + protected override void Shutdown() + { + _checkTimerCancel.Cancel(); + _gui!.Dispose(); + } +} diff --git a/Content.Client/_CP14/Discord/DiscordAuthGui.xaml b/Content.Client/_CP14/Discord/DiscordAuthGui.xaml new file mode 100644 index 0000000000..5e266d638e --- /dev/null +++ b/Content.Client/_CP14/Discord/DiscordAuthGui.xaml @@ -0,0 +1,29 @@ + + + + + + +