Wired up login form to API
Connected the login form button to the Authentication endpoint (/token). Gets back bearer token or exception if failed
This commit is contained in:
parent
ad7cb45908
commit
ab827d849c
@ -1,6 +1,17 @@
|
|||||||
<?xml version="1.0" encoding="utf-8" ?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<configuration>
|
<configuration>
|
||||||
|
<appSettings>
|
||||||
|
<add key="api" value="https://localhost:44372/" />
|
||||||
|
</appSettings>
|
||||||
<startup>
|
<startup>
|
||||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
|
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
|
||||||
</startup>
|
</startup>
|
||||||
|
<runtime>
|
||||||
|
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-13.0.0.0" newVersion="13.0.0.0" />
|
||||||
|
</dependentAssembly>
|
||||||
|
</assemblyBinding>
|
||||||
|
</runtime>
|
||||||
</configuration>
|
</configuration>
|
@ -29,7 +29,8 @@ namespace RMWPFUserInterface
|
|||||||
|
|
||||||
_container
|
_container
|
||||||
.Singleton<IWindowManager, WindowManager>()
|
.Singleton<IWindowManager, WindowManager>()
|
||||||
.Singleton<IEventAggregator, EventAggregator>();
|
.Singleton<IEventAggregator, EventAggregator>()
|
||||||
|
.Singleton<IAPIHelper, APIHelper>();
|
||||||
|
|
||||||
GetType().Assembly.GetTypes()
|
GetType().Assembly.GetTypes()
|
||||||
.Where(type => type.IsClass)
|
.Where(type => type.IsClass)
|
||||||
|
53
RMWPFUserInterface/Helpers/APIHelper.cs
Normal file
53
RMWPFUserInterface/Helpers/APIHelper.cs
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
using RMWPFUserInterface.Models;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Configuration;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Net.Http;
|
||||||
|
using System.Net.Http.Headers;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace RMWPFUserInterface.Helpers
|
||||||
|
{
|
||||||
|
public class APIHelper : IAPIHelper
|
||||||
|
{
|
||||||
|
private HttpClient apiClient;
|
||||||
|
public APIHelper()
|
||||||
|
{
|
||||||
|
InitializeClient();
|
||||||
|
}
|
||||||
|
private void InitializeClient()
|
||||||
|
{
|
||||||
|
string api = ConfigurationManager.AppSettings["api"];
|
||||||
|
|
||||||
|
apiClient = new HttpClient();
|
||||||
|
apiClient.BaseAddress = new Uri(api);
|
||||||
|
apiClient.DefaultRequestHeaders.Accept.Clear();
|
||||||
|
apiClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<AuthenticatedUser> Authenticate(string username, string password)
|
||||||
|
{
|
||||||
|
var data = new FormUrlEncodedContent(new[]
|
||||||
|
{
|
||||||
|
new KeyValuePair<string, string>("grant_type", "password"),
|
||||||
|
new KeyValuePair<string, string>("username", username),
|
||||||
|
new KeyValuePair<string, string>("password", password),
|
||||||
|
});
|
||||||
|
|
||||||
|
using (HttpResponseMessage response = await apiClient.PostAsync("/Token", data))
|
||||||
|
{
|
||||||
|
if (response.IsSuccessStatusCode)
|
||||||
|
{
|
||||||
|
var result = await response.Content.ReadAsAsync<AuthenticatedUser>();
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
throw new Exception(response.ReasonPhrase);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
10
RMWPFUserInterface/Helpers/IAPIHelper.cs
Normal file
10
RMWPFUserInterface/Helpers/IAPIHelper.cs
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
using RMWPFUserInterface.Models;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace RMWPFUserInterface.Helpers
|
||||||
|
{
|
||||||
|
public interface IAPIHelper
|
||||||
|
{
|
||||||
|
Task<AuthenticatedUser> Authenticate(string username, string password);
|
||||||
|
}
|
||||||
|
}
|
14
RMWPFUserInterface/Models/AuthenticatedUser.cs
Normal file
14
RMWPFUserInterface/Models/AuthenticatedUser.cs
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace RMWPFUserInterface.Models
|
||||||
|
{
|
||||||
|
public class AuthenticatedUser
|
||||||
|
{
|
||||||
|
public string Access_Token { get; set; }
|
||||||
|
public string UserName { get; set; }
|
||||||
|
}
|
||||||
|
}
|
@ -47,8 +47,15 @@
|
|||||||
<Reference Include="Microsoft.Xaml.Behaviors, Version=1.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.Xaml.Behaviors, Version=1.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Microsoft.Xaml.Behaviors.Wpf.1.1.19\lib\net45\Microsoft.Xaml.Behaviors.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Xaml.Behaviors.Wpf.1.1.19\lib\net45\Microsoft.Xaml.Behaviors.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
|
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Newtonsoft.Json.13.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
<Reference Include="System" />
|
<Reference Include="System" />
|
||||||
|
<Reference Include="System.Configuration" />
|
||||||
<Reference Include="System.Data" />
|
<Reference Include="System.Data" />
|
||||||
|
<Reference Include="System.Net.Http.Formatting, Version=5.2.9.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Microsoft.AspNet.WebApi.Client.5.2.9\lib\net45\System.Net.Http.Formatting.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
<Reference Include="System.Runtime.Serialization" />
|
<Reference Include="System.Runtime.Serialization" />
|
||||||
<Reference Include="System.Runtime.Serialization.Primitives, Version=4.1.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="System.Runtime.Serialization.Primitives, Version=4.1.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\System.Runtime.Serialization.Primitives.4.3.0\lib\net46\System.Runtime.Serialization.Primitives.dll</HintPath>
|
<HintPath>..\packages\System.Runtime.Serialization.Primitives.4.3.0\lib\net46\System.Runtime.Serialization.Primitives.dll</HintPath>
|
||||||
@ -74,7 +81,10 @@
|
|||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
</ApplicationDefinition>
|
</ApplicationDefinition>
|
||||||
<Compile Include="BootStrapper.cs" />
|
<Compile Include="BootStrapper.cs" />
|
||||||
|
<Compile Include="Helpers\APIHelper.cs" />
|
||||||
|
<Compile Include="Helpers\IAPIHelper.cs" />
|
||||||
<Compile Include="Helpers\PasswordBoxHelper.cs" />
|
<Compile Include="Helpers\PasswordBoxHelper.cs" />
|
||||||
|
<Compile Include="Models\AuthenticatedUser.cs" />
|
||||||
<Compile Include="ViewModels\LoginViewModel.cs" />
|
<Compile Include="ViewModels\LoginViewModel.cs" />
|
||||||
<Compile Include="ViewModels\ShellViewModel.cs" />
|
<Compile Include="ViewModels\ShellViewModel.cs" />
|
||||||
<Compile Include="Views\LoginView.xaml.cs">
|
<Compile Include="Views\LoginView.xaml.cs">
|
||||||
@ -123,8 +133,6 @@
|
|||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="App.config" />
|
<None Include="App.config" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup />
|
||||||
<Folder Include="Models\" />
|
|
||||||
</ItemGroup>
|
|
||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
</Project>
|
</Project>
|
@ -1,4 +1,5 @@
|
|||||||
using Caliburn.Micro;
|
using Caliburn.Micro;
|
||||||
|
using RMWPFUserInterface.Helpers;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@ -11,6 +12,12 @@ namespace RMWPFUserInterface.ViewModels
|
|||||||
{
|
{
|
||||||
private string _userName;
|
private string _userName;
|
||||||
private string _password;
|
private string _password;
|
||||||
|
private IAPIHelper _apiHelper;
|
||||||
|
|
||||||
|
public LoginViewModel(IAPIHelper apiHelper)
|
||||||
|
{
|
||||||
|
_apiHelper = apiHelper;
|
||||||
|
}
|
||||||
public string UserName
|
public string UserName
|
||||||
{
|
{
|
||||||
get { return _userName; }
|
get { return _userName; }
|
||||||
@ -49,9 +56,16 @@ namespace RMWPFUserInterface.ViewModels
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void LogIn()
|
public async Task LogIn()
|
||||||
{
|
{
|
||||||
Console.WriteLine();
|
try
|
||||||
|
{
|
||||||
|
var result = await _apiHelper.Authenticate(UserName, Password);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Console.WriteLine(ex.Message);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,8 @@
|
|||||||
<packages>
|
<packages>
|
||||||
<package id="Caliburn.Micro" version="4.0.210" targetFramework="net472" />
|
<package id="Caliburn.Micro" version="4.0.210" targetFramework="net472" />
|
||||||
<package id="Caliburn.Micro.Core" version="4.0.210" targetFramework="net472" />
|
<package id="Caliburn.Micro.Core" version="4.0.210" targetFramework="net472" />
|
||||||
|
<package id="Microsoft.AspNet.WebApi.Client" version="5.2.9" targetFramework="net472" />
|
||||||
<package id="Microsoft.Xaml.Behaviors.Wpf" version="1.1.19" targetFramework="net472" />
|
<package id="Microsoft.Xaml.Behaviors.Wpf" version="1.1.19" targetFramework="net472" />
|
||||||
|
<package id="Newtonsoft.Json" version="13.0.1" targetFramework="net472" />
|
||||||
<package id="System.Runtime.Serialization.Primitives" version="4.3.0" targetFramework="net472" />
|
<package id="System.Runtime.Serialization.Primitives" version="4.3.0" targetFramework="net472" />
|
||||||
</packages>
|
</packages>
|
Loading…
Reference in New Issue
Block a user