Krzysztof Krysiński 6 月之前
父节点
当前提交
4edd5313b0

+ 49 - 0
src/PixiEditor.PixiAuth/PixiAuthClient.cs

@@ -0,0 +1,49 @@
+using System.Net.Http.Json;
+
+namespace PixiEditor.PixiAuth;
+
+public class PixiAuthClient
+{
+    private HttpClient httpClient;
+
+    public string BaseUrl { get; }
+
+    public PixiAuthClient(string baseUrl)
+    {
+        httpClient = new HttpClient();
+        httpClient.BaseAddress = new Uri(baseUrl);
+    }
+
+    public async Task<Guid?> GenerateSession(string email)
+    {
+        var response = await httpClient.PostAsJsonAsync("/session/generateSession", email);
+
+        if (response.IsSuccessStatusCode)
+        {
+            string result = await response.Content.ReadAsStringAsync();
+            if (Guid.TryParse(result, out Guid sessionId))
+            {
+                return sessionId;
+            }
+        }
+
+        return null;
+    }
+
+    public async Task<string?> TryGetSessionToken(string email, Guid session)
+    {
+        Dictionary<string, string> body = new() { { "email", email }, { "sessionId", session.ToString() } };
+        var response = await httpClient.PostAsJsonAsync("/session/getSessionToken", body);
+
+        if (response.IsSuccessStatusCode)
+        {
+            string result = await response.Content.ReadAsStringAsync();
+            if (!string.IsNullOrEmpty(result))
+            {
+                return result;
+            }
+        }
+
+        return null;
+    }
+}

+ 9 - 0
src/PixiEditor.PixiAuth/PixiEditor.PixiAuth.csproj

@@ -0,0 +1,9 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+    <PropertyGroup>
+        <TargetFramework>net8.0</TargetFramework>
+        <ImplicitUsings>enable</ImplicitUsings>
+        <Nullable>enable</Nullable>
+    </PropertyGroup>
+
+</Project>

+ 7 - 0
src/PixiEditor.PixiAuth/User.cs

@@ -0,0 +1,7 @@
+namespace PixiEditor.Models.Auth;
+
+public record User
+{
+    public string Email { get; set; } = string.Empty;
+    public string? SessionToken { get; set; } = string.Empty;
+}

+ 1 - 0
src/PixiEditor.Platform.Standalone/StandalonePlatform.cs

@@ -7,6 +7,7 @@ public sealed class StandalonePlatform : IPlatform
 
     public bool PerformHandshake()
     {
+
         return true;
     }
 

+ 31 - 0
src/PixiEditor.sln

@@ -136,6 +136,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ColorPicker.AvaloniaUI", "C
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ColorPicker.Models", "ColorPicker\src\ColorPicker.Models\ColorPicker.Models.csproj", "{ED673353-3433-4FCB-9199-0F8DE0968F52}"
 EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PixiEditor.PixiAuth", "PixiEditor.PixiAuth\PixiEditor.PixiAuth.csproj", "{7EE8ED1A-000A-4583-BDBF-EA8B90314CFE}"
+EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|x64 = Debug|x64
@@ -1316,6 +1318,34 @@ Global
 		{ED673353-3433-4FCB-9199-0F8DE0968F52}.Steam|x64.Build.0 = Debug|Any CPU
 		{ED673353-3433-4FCB-9199-0F8DE0968F52}.Steam|ARM64.ActiveCfg = Debug|Any CPU
 		{ED673353-3433-4FCB-9199-0F8DE0968F52}.Steam|ARM64.Build.0 = Debug|Any CPU
+		{7EE8ED1A-000A-4583-BDBF-EA8B90314CFE}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{7EE8ED1A-000A-4583-BDBF-EA8B90314CFE}.Debug|x64.Build.0 = Debug|Any CPU
+		{7EE8ED1A-000A-4583-BDBF-EA8B90314CFE}.Debug|ARM64.ActiveCfg = Debug|Any CPU
+		{7EE8ED1A-000A-4583-BDBF-EA8B90314CFE}.Debug|ARM64.Build.0 = Debug|Any CPU
+		{7EE8ED1A-000A-4583-BDBF-EA8B90314CFE}.DevRelease|x64.ActiveCfg = Debug|Any CPU
+		{7EE8ED1A-000A-4583-BDBF-EA8B90314CFE}.DevRelease|x64.Build.0 = Debug|Any CPU
+		{7EE8ED1A-000A-4583-BDBF-EA8B90314CFE}.DevRelease|ARM64.ActiveCfg = Debug|Any CPU
+		{7EE8ED1A-000A-4583-BDBF-EA8B90314CFE}.DevRelease|ARM64.Build.0 = Debug|Any CPU
+		{7EE8ED1A-000A-4583-BDBF-EA8B90314CFE}.DevSteam|x64.ActiveCfg = Debug|Any CPU
+		{7EE8ED1A-000A-4583-BDBF-EA8B90314CFE}.DevSteam|x64.Build.0 = Debug|Any CPU
+		{7EE8ED1A-000A-4583-BDBF-EA8B90314CFE}.DevSteam|ARM64.ActiveCfg = Debug|Any CPU
+		{7EE8ED1A-000A-4583-BDBF-EA8B90314CFE}.DevSteam|ARM64.Build.0 = Debug|Any CPU
+		{7EE8ED1A-000A-4583-BDBF-EA8B90314CFE}.MSIX Debug|x64.ActiveCfg = Debug|Any CPU
+		{7EE8ED1A-000A-4583-BDBF-EA8B90314CFE}.MSIX Debug|x64.Build.0 = Debug|Any CPU
+		{7EE8ED1A-000A-4583-BDBF-EA8B90314CFE}.MSIX Debug|ARM64.ActiveCfg = Debug|Any CPU
+		{7EE8ED1A-000A-4583-BDBF-EA8B90314CFE}.MSIX Debug|ARM64.Build.0 = Debug|Any CPU
+		{7EE8ED1A-000A-4583-BDBF-EA8B90314CFE}.MSIX|x64.ActiveCfg = Debug|Any CPU
+		{7EE8ED1A-000A-4583-BDBF-EA8B90314CFE}.MSIX|x64.Build.0 = Debug|Any CPU
+		{7EE8ED1A-000A-4583-BDBF-EA8B90314CFE}.MSIX|ARM64.ActiveCfg = Debug|Any CPU
+		{7EE8ED1A-000A-4583-BDBF-EA8B90314CFE}.MSIX|ARM64.Build.0 = Debug|Any CPU
+		{7EE8ED1A-000A-4583-BDBF-EA8B90314CFE}.Release|x64.ActiveCfg = Release|Any CPU
+		{7EE8ED1A-000A-4583-BDBF-EA8B90314CFE}.Release|x64.Build.0 = Release|Any CPU
+		{7EE8ED1A-000A-4583-BDBF-EA8B90314CFE}.Release|ARM64.ActiveCfg = Release|Any CPU
+		{7EE8ED1A-000A-4583-BDBF-EA8B90314CFE}.Release|ARM64.Build.0 = Release|Any CPU
+		{7EE8ED1A-000A-4583-BDBF-EA8B90314CFE}.Steam|x64.ActiveCfg = Debug|Any CPU
+		{7EE8ED1A-000A-4583-BDBF-EA8B90314CFE}.Steam|x64.Build.0 = Debug|Any CPU
+		{7EE8ED1A-000A-4583-BDBF-EA8B90314CFE}.Steam|ARM64.ActiveCfg = Debug|Any CPU
+		{7EE8ED1A-000A-4583-BDBF-EA8B90314CFE}.Steam|ARM64.Build.0 = Debug|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
@@ -1378,6 +1408,7 @@ Global
 		{0258658B-78D5-4790-AF27-94B065DF529C} = {68C3DA2D-D2EA-426E-A866-0019E425C816}
 		{885A99AB-86F0-4D8E-A989-FB0000C1662D} = {E8A74431-F76F-43B1-BC66-CA05E249E6F4}
 		{ED673353-3433-4FCB-9199-0F8DE0968F52} = {E8A74431-F76F-43B1-BC66-CA05E249E6F4}
+		{7EE8ED1A-000A-4583-BDBF-EA8B90314CFE} = {1E816135-76C1-4255-BE3C-BF17895A65AA}
 	EndGlobalSection
 	GlobalSection(ExtensibilityGlobals) = postSolution
 		SolutionGuid = {D04B4AB0-CA33-42FD-A909-79966F9255C5}

+ 1 - 0
src/PixiEditor/PixiEditor.csproj

@@ -155,6 +155,7 @@
 
   <ItemGroup>
     <Folder Include="Extensions\"/>
+    <Folder Include="ViewModels\Auth\" />
   </ItemGroup>
 
 </Project>

+ 11 - 0
src/PixiEditor/Views/Auth/LoginForm.axaml

@@ -0,0 +1,11 @@
+<UserControl xmlns="https://github.com/avaloniaui"
+             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+             mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
+             x:Class="PixiEditor.Views.Auth.LoginForm">
+    <StackPanel>
+        <TextBox Name="Email" />
+        <Button Name="LoginButton" Content="Login" />
+    </StackPanel>
+</UserControl>

+ 14 - 0
src/PixiEditor/Views/Auth/LoginForm.axaml.cs

@@ -0,0 +1,14 @@
+using Avalonia;
+using Avalonia.Controls;
+using Avalonia.Markup.Xaml;
+
+namespace PixiEditor.Views.Auth;
+
+public partial class LoginForm : UserControl
+{
+    public LoginForm()
+    {
+        InitializeComponent();
+    }
+}
+