diff --git a/ChatClient/App.xaml.cs b/ChatClient/App.xaml.cs index 73b7fdc..2696a4f 100644 --- a/ChatClient/App.xaml.cs +++ b/ChatClient/App.xaml.cs @@ -1,10 +1,13 @@ -using System; +using ChatClient.Models; +using RestSharp; +using System; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Linq; using System.Threading.Tasks; using System.Windows; +using System.Windows.Controls; namespace ChatClient { @@ -13,5 +16,9 @@ namespace ChatClient /// public partial class App : Application { + public static Frame PageFrame { get; set; } + public static AccessTokenModel? AccessToken { get; set; } + + public static RestClient client = new RestClient(); } } diff --git a/ChatClient/ChatRoomControl.xaml.cs b/ChatClient/ChatRoomControl.xaml.cs index 7079f7d..30f6978 100644 --- a/ChatClient/ChatRoomControl.xaml.cs +++ b/ChatClient/ChatRoomControl.xaml.cs @@ -44,4 +44,4 @@ private void AddPersonBtnClick(object sender, RoutedEventArgs e) } } -} +} \ No newline at end of file diff --git a/ChatClient/LoginPage.xaml.cs b/ChatClient/LoginPage.xaml.cs index 5a047f0..28b36a3 100644 --- a/ChatClient/LoginPage.xaml.cs +++ b/ChatClient/LoginPage.xaml.cs @@ -1,4 +1,6 @@ -using System; +using ChatClient.Models; +using RestSharp; +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -27,12 +29,29 @@ public LoginPage() private void RegisterBtnClick(object sender, RoutedEventArgs e) { - + App.PageFrame.Navigate(new RegisterPage()); } private void LoginBtnClick(object sender, RoutedEventArgs e) { + string id = IDTextBox.Text; + string password = PasswordTextBox.Password; + + LoginModel model = new LoginModel(id, password); + RestRequest request = new RestRequest("http://localhost:3000/user/signIn", Method.Post); + request.AddBody(model); + + var response = App.client.Execute>(request); + if (response.IsSuccessStatusCode && response.Data?.Options != null) + { + App.AccessToken = response.Data.Options; + App.PageFrame.Navigate(new ChatPage()); + } + else + { + MessageBox.Show(response.Data?.Message ?? "Unknown error"); + } } } } diff --git a/ChatClient/MainWindow.xaml b/ChatClient/MainWindow.xaml index 7bdab70..5a9135f 100644 --- a/ChatClient/MainWindow.xaml +++ b/ChatClient/MainWindow.xaml @@ -16,6 +16,6 @@ Title="MainWindow" Height="450" Width="800" MinWidth="300" MinHeight="500"> - + diff --git a/ChatClient/MainWindow.xaml.cs b/ChatClient/MainWindow.xaml.cs index e4b8634..acc3b00 100644 --- a/ChatClient/MainWindow.xaml.cs +++ b/ChatClient/MainWindow.xaml.cs @@ -24,6 +24,8 @@ public partial class MainWindow : Window public MainWindow() { InitializeComponent(); + App.PageFrame = PageFrame; + PageFrame.Navigate(new LoginPage()); } } } diff --git a/ChatClient/Models/AccessTokenModel.cs b/ChatClient/Models/AccessTokenModel.cs new file mode 100644 index 0000000..bda226a --- /dev/null +++ b/ChatClient/Models/AccessTokenModel.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Text.Json.Serialization; +using System.Threading.Tasks; + +namespace ChatClient.Models +{ + public class AccessTokenModel + { + [JsonPropertyName("token")] + public string Token { get; set; } + public string RefreshToken { get; set; } + } +} \ No newline at end of file diff --git a/ChatClient/Models/LoginModel.cs b/ChatClient/Models/LoginModel.cs new file mode 100644 index 0000000..0a3965f --- /dev/null +++ b/ChatClient/Models/LoginModel.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ChatClient.Models +{ + internal class LoginModel + { + public string Id { get; set; } + public string Password { get; set; } + + public LoginModel(string id, string password) { + Id = id; + Password = password; + } + + } +} diff --git a/ChatClient/Models/ResponseModel.cs b/ChatClient/Models/ResponseModel.cs new file mode 100644 index 0000000..19852b9 --- /dev/null +++ b/ChatClient/Models/ResponseModel.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ChatClient.Models +{ + internal class ResponseModel + { + public string Code { get; set; } + public string Message { get; set; } + + public T? Options { get; set; } + } +} diff --git a/ChatClient/Models/SignupModel.cs b/ChatClient/Models/SignupModel.cs new file mode 100644 index 0000000..ec08b19 --- /dev/null +++ b/ChatClient/Models/SignupModel.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ChatClient.Models +{ + internal class SignupModel + { + public string Id { get; set; } + + public string Name { get; set; } + + public string Password { get; set; } + + public SignupModel(string id, string password, string name) + { + Id = id; + Name = name; + Password = password; + } + } +} diff --git a/ChatClient/RegisterPage.xaml b/ChatClient/RegisterPage.xaml index 8467bc1..5ead5a2 100644 --- a/ChatClient/RegisterPage.xaml +++ b/ChatClient/RegisterPage.xaml @@ -24,7 +24,7 @@ - + diff --git a/ChatClient/RegisterPage.xaml.cs b/ChatClient/RegisterPage.xaml.cs index 3ec0e9d..cb00335 100644 --- a/ChatClient/RegisterPage.xaml.cs +++ b/ChatClient/RegisterPage.xaml.cs @@ -1,7 +1,11 @@ -using System; +using ChatClient.Models; +using RestSharp; +using System; +using System.CodeDom; using System.Collections.Generic; using System.Linq; using System.Text; +using System.Text.Json.Nodes; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; @@ -27,12 +31,36 @@ public RegisterPage() private void BackBtnClick(object sender, RoutedEventArgs e) { - + App.PageFrame.GoBack(); } private void RegisterBtnClick(object sender, RoutedEventArgs e) { + string id = IDTextBox.Text; + string username = UsernameTextBox.Text; + string password = PasswordTextBox.Password; + string passwordConfirm = PasswordConfirmTextBox.Password; + + + if (password != passwordConfirm) + { + MessageBox.Show("비밀번호랑 비밀번호 확인이 달라요!"); + } + // TODO: 서버에 회원가입 요청 보내기 + SignupModel model = new SignupModel(id, password, username); + RestRequest request = new RestRequest("http://localhost:3000/user/signUp", Method.Post); + request.AddBody(model); + + var response = App.client.Execute>(request); + if (response.IsSuccessStatusCode && response.Data?.Options != null) + { + App.PageFrame.GoBack(); + } + else + { + MessageBox.Show(response.Data?.Message ?? "Unknown error"); + } } } }