diff --git a/src/Nullinside.Api.TwitchBot.sln b/src/Nullinside.Api.TwitchBot.sln index b6a41ed..ccf29d3 100644 --- a/src/Nullinside.Api.TwitchBot.sln +++ b/src/Nullinside.Api.TwitchBot.sln @@ -22,6 +22,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Nullinside.Api", "nullinsid EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Nullinside.Api.TwitchBot.Tests", "Nullinside.Api.TwitchBot.Tests\Nullinside.Api.TwitchBot.Tests.csproj", "{2CBAC21E-256B-493E-9461-7C779B137926}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Nullinside.Api.Tests", "nullinside-api\src\Nullinside.Api.Tests\Nullinside.Api.Tests.csproj", "{BAE9E7D6-760A-4E39-BEE9-520F90F3D37C}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -52,5 +54,9 @@ Global {2CBAC21E-256B-493E-9461-7C779B137926}.Debug|Any CPU.Build.0 = Debug|Any CPU {2CBAC21E-256B-493E-9461-7C779B137926}.Release|Any CPU.ActiveCfg = Release|Any CPU {2CBAC21E-256B-493E-9461-7C779B137926}.Release|Any CPU.Build.0 = Release|Any CPU + {BAE9E7D6-760A-4E39-BEE9-520F90F3D37C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BAE9E7D6-760A-4E39-BEE9-520F90F3D37C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BAE9E7D6-760A-4E39-BEE9-520F90F3D37C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BAE9E7D6-760A-4E39-BEE9-520F90F3D37C}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection EndGlobal diff --git a/src/Nullinside.Api.TwitchBot/Controllers/LoginController.cs b/src/Nullinside.Api.TwitchBot/Controllers/LoginController.cs index 55d48e9..f14a0f6 100644 --- a/src/Nullinside.Api.TwitchBot/Controllers/LoginController.cs +++ b/src/Nullinside.Api.TwitchBot/Controllers/LoginController.cs @@ -6,6 +6,7 @@ using Nullinside.Api.Common.Twitch; using Nullinside.Api.Model; using Nullinside.Api.Model.Shared; +using Nullinside.Api.Shared.Support; namespace Nullinside.Api.TwitchBot.Controllers; @@ -56,23 +57,28 @@ public LoginController(INullinsideContext dbContext, IConfiguration configuratio /// [AllowAnonymous] [HttpGet] - [Route("twitch-login")] public async Task TwitchLogin([FromQuery] string code, [FromServices] ITwitchApiProxy api, CancellationToken token) { string? siteUrl = _configuration.GetValue("Api:SiteUrl"); if (null == await api.CreateAccessToken(code, token)) { - return Redirect($"{siteUrl}/twitch-bot/login?error=3"); + return Redirect($"{siteUrl}/twitch-bot/config?error={TwitchBotLoginErrors.TwitchErrorWithToken}"); } string? email = await api.GetUserEmail(token); if (string.IsNullOrWhiteSpace(email)) { - return Redirect($"{siteUrl}/twitch-bot/login?error=4"); + return Redirect($"{siteUrl}/twitch-bot/config?error={TwitchBotLoginErrors.TwitchAccountHasNoEmail}"); } - string? bearerToken = await UserHelpers.GetTokenAndSaveToDatabase(_dbContext, email, token); + (string? id, string? username) user = await api.GetUser(token); + if (string.IsNullOrWhiteSpace(user.username) || string.IsNullOrWhiteSpace(user.id)) { + return Redirect($"{siteUrl}/twitch-bot/config?error={TwitchBotLoginErrors.InternalError}"); + } + + string? bearerToken = await UserHelpers.GetTokenAndSaveToDatabase(_dbContext, email, token, api.OAuth?.AccessToken, + api.OAuth?.RefreshToken, api.OAuth?.ExpiresUtc, user.username, user.id); if (string.IsNullOrWhiteSpace(bearerToken)) { - return Redirect($"{siteUrl}/twitch-bot/login?error=2"); + return Redirect($"{siteUrl}/twitch-bot/config?error={TwitchBotLoginErrors.InternalError}"); } - return Redirect($"{siteUrl}/twitch-bot/login?token={bearerToken}"); + return Redirect($"{siteUrl}/twitch-bot/config?token={bearerToken}"); } } \ No newline at end of file diff --git a/src/Nullinside.Api.TwitchBot/Nullinside.Api.TwitchBot.http b/src/Nullinside.Api.TwitchBot/Nullinside.Api.TwitchBot.http index ace8c51..db6ec67 100644 --- a/src/Nullinside.Api.TwitchBot/Nullinside.Api.TwitchBot.http +++ b/src/Nullinside.Api.TwitchBot/Nullinside.Api.TwitchBot.http @@ -1,4 +1,4 @@ -@Nullinside.Api.TwitchBot_HostAddress = http://localhost:5086 +@Nullinside.Api.TwitchBot_HostAddress = http://localhost:5941 GET {{Nullinside.Api.TwitchBot_HostAddress}}/weatherforecast/ Accept: application/json diff --git a/src/Nullinside.Api.TwitchBot/appsettings.Development.json b/src/Nullinside.Api.TwitchBot/appsettings.Development.json index acaaf08..a753519 100644 --- a/src/Nullinside.Api.TwitchBot/appsettings.Development.json +++ b/src/Nullinside.Api.TwitchBot/appsettings.Development.json @@ -5,5 +5,8 @@ "Microsoft.AspNetCore": "Warning", "Microsoft.EntityFrameworkCore.Database.Command": "Warning" } + }, + "Api": { + "SiteUrl": "http://localhost:4200" } } diff --git a/src/Nullinside.Api.TwitchBot/appsettings.json b/src/Nullinside.Api.TwitchBot/appsettings.json index 586b3c4..535e5fb 100644 --- a/src/Nullinside.Api.TwitchBot/appsettings.json +++ b/src/Nullinside.Api.TwitchBot/appsettings.json @@ -6,5 +6,8 @@ "Microsoft.EntityFrameworkCore.Database.Command": "Warning" } }, - "AllowedHosts": "*" + "AllowedHosts": "*", + "Api": { + "SiteUrl": "https://nullinside.com" + } } diff --git a/src/nullinside-api b/src/nullinside-api index 7b3026f..4e0605a 160000 --- a/src/nullinside-api +++ b/src/nullinside-api @@ -1 +1 @@ -Subproject commit 7b3026f66c810988adf866629de667ef8106adfd +Subproject commit 4e0605a58523339345865d5655697090dc2e18b5