diff --git a/Project/adminBlazor/adminBlazor.Api/adminBlazor.Api.csproj b/Project/adminBlazor/adminBlazor.Api/adminBlazor.Api.csproj index 311d69b..792e264 100644 --- a/Project/adminBlazor/adminBlazor.Api/adminBlazor.Api.csproj +++ b/Project/adminBlazor/adminBlazor.Api/adminBlazor.Api.csproj @@ -9,6 +9,7 @@ + diff --git a/Project/adminBlazor/adminBlazor.sln b/Project/adminBlazor/adminBlazor.sln index 564e351..2aec274 100644 --- a/Project/adminBlazor/adminBlazor.sln +++ b/Project/adminBlazor/adminBlazor.sln @@ -4,9 +4,14 @@ Microsoft Visual Studio Solution File, Format Version 12.00 VisualStudioVersion = 17.8.34330.188 MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "adminBlazor", "adminBlazor\adminBlazor.csproj", "{5985AE7A-DA9C-4A68-80E0-2D92926C1FB5}" + ProjectSection(ProjectDependencies) = postProject + {7A7CE974-02E6-4248-B5C5-54A04724327B} = {7A7CE974-02E6-4248-B5C5-54A04724327B} + EndProjectSection EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "adminBlazor.Api", "adminBlazor.Api\adminBlazor.Api.csproj", "{69C7F430-9B80-4253-B572-FDBC90076C5E}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DemoAuthentication", "..\..\..\..\..\Downloads\Authentication\DemoAuthentication\DemoAuthentication\DemoAuthentication.csproj", "{7A7CE974-02E6-4248-B5C5-54A04724327B}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -21,6 +26,10 @@ Global {69C7F430-9B80-4253-B572-FDBC90076C5E}.Debug|Any CPU.Build.0 = Debug|Any CPU {69C7F430-9B80-4253-B572-FDBC90076C5E}.Release|Any CPU.ActiveCfg = Release|Any CPU {69C7F430-9B80-4253-B572-FDBC90076C5E}.Release|Any CPU.Build.0 = Release|Any CPU + {7A7CE974-02E6-4248-B5C5-54A04724327B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7A7CE974-02E6-4248-B5C5-54A04724327B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7A7CE974-02E6-4248-B5C5-54A04724327B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7A7CE974-02E6-4248-B5C5-54A04724327B}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Project/adminBlazor/adminBlazor/App.razor b/Project/adminBlazor/adminBlazor/App.razor index 09ed54d..ba3e3db 100644 --- a/Project/adminBlazor/adminBlazor/App.razor +++ b/Project/adminBlazor/adminBlazor/App.razor @@ -1,4 +1,4 @@ - + @@ -10,5 +10,4 @@

Sorry, there's nothing at this address.

-
-
\ No newline at end of file + \ No newline at end of file diff --git a/Project/adminBlazor/adminBlazor/Models/AppUser.cs b/Project/adminBlazor/adminBlazor/Models/AppUser.cs deleted file mode 100644 index 7121a6a..0000000 --- a/Project/adminBlazor/adminBlazor/Models/AppUser.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace adminBlazor.Models -{ - public class AppUser - { - public string Password { get; set; } - public List Roles { get; set; } - public string UserName { get; set; } - } -} diff --git a/Project/adminBlazor/adminBlazor/Models/CurrentUser..cs b/Project/adminBlazor/adminBlazor/Models/CurrentUser..cs deleted file mode 100644 index 4eab865..0000000 --- a/Project/adminBlazor/adminBlazor/Models/CurrentUser..cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace adminBlazor.Models -{ - public class CurrentUser - { - public Dictionary Claims { get; set; } - public bool IsAuthenticated { get; set; } - public string UserName { get; set; } - } -} diff --git a/Project/adminBlazor/adminBlazor/Models/LoginRequest.cs b/Project/adminBlazor/adminBlazor/Models/LoginRequest.cs deleted file mode 100644 index 0d4af4b..0000000 --- a/Project/adminBlazor/adminBlazor/Models/LoginRequest.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System.ComponentModel.DataAnnotations; - -namespace adminBlazor.Models -{ - public class LoginRequest - { - [Required] - public string Password { get; set; } - - [Required] - public string UserName { get; set; } - } -} diff --git a/Project/adminBlazor/adminBlazor/Models/RegisterRequest.cs b/Project/adminBlazor/adminBlazor/Models/RegisterRequest.cs deleted file mode 100644 index 523ecad..0000000 --- a/Project/adminBlazor/adminBlazor/Models/RegisterRequest.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System.ComponentModel.DataAnnotations; - -namespace adminBlazor.Models -{ - public class RegisterRequest - { - [Required] - public string Password { get; set; } - - [Required] - [Compare(nameof(Password), ErrorMessage = "Passwords do not match!")] - public string PasswordConfirm { get; set; } - - [Required] - public string UserName { get; set; } - } -} diff --git a/Project/adminBlazor/adminBlazor/Pages/Authentication/Login.razor b/Project/adminBlazor/adminBlazor/Pages/Authentication/Login.razor deleted file mode 100644 index 9cb242b..0000000 --- a/Project/adminBlazor/adminBlazor/Pages/Authentication/Login.razor +++ /dev/null @@ -1,27 +0,0 @@ -@page "/login" -@layout AuthLayout - -

- Login -

- - - diff --git a/Project/adminBlazor/adminBlazor/Pages/Authentication/Login.razor.cs b/Project/adminBlazor/adminBlazor/Pages/Authentication/Login.razor.cs deleted file mode 100644 index 6b63d96..0000000 --- a/Project/adminBlazor/adminBlazor/Pages/Authentication/Login.razor.cs +++ /dev/null @@ -1,32 +0,0 @@ -using adminBlazor.Models; -using adminBlazor.Services; -using Microsoft.AspNetCore.Components; - -namespace adminBlazor.Pages.Authentication -{ - public partial class Login - { - [Inject] - public CustomStateProvider AuthStateProvider { get; set; } - - [Inject] - public NavigationManager NavigationManager { get; set; } - - private string error { get; set; } - private LoginRequest loginRequest { get; set; } = new LoginRequest(); - - private async Task OnSubmit() - { - error = null; - try - { - await AuthStateProvider.Login(loginRequest); - NavigationManager.NavigateTo(""); - } - catch (Exception ex) - { - error = ex.Message; - } - } - } -} diff --git a/Project/adminBlazor/adminBlazor/Pages/Authentication/Register.razor b/Project/adminBlazor/adminBlazor/Pages/Authentication/Register.razor deleted file mode 100644 index a8e7602..0000000 --- a/Project/adminBlazor/adminBlazor/Pages/Authentication/Register.razor +++ /dev/null @@ -1,29 +0,0 @@ -@page "/register" -@layout AuthLayout - -

- Register -

- - \ No newline at end of file diff --git a/Project/adminBlazor/adminBlazor/Pages/Authentication/Register.razor.cs b/Project/adminBlazor/adminBlazor/Pages/Authentication/Register.razor.cs deleted file mode 100644 index f6b3178..0000000 --- a/Project/adminBlazor/adminBlazor/Pages/Authentication/Register.razor.cs +++ /dev/null @@ -1,32 +0,0 @@ -using adminBlazor.Models; -using adminBlazor.Services; -using Microsoft.AspNetCore.Components; - -namespace adminBlazor.Pages.Authentication -{ - public partial class Register - { - [Inject] - public CustomStateProvider AuthStateProvider { get; set; } - - [Inject] - public NavigationManager NavigationManager { get; set; } - - private string error { get; set; } - private RegisterRequest registerRequest { get; set; } = new RegisterRequest(); - - private async Task OnSubmit() - { - error = null; - try - { - await AuthStateProvider.Register(registerRequest); - NavigationManager.NavigateTo(""); - } - catch (Exception ex) - { - error = ex.Message; - } - } - } -} diff --git a/Project/adminBlazor/adminBlazor/Pages/Index.razor b/Project/adminBlazor/adminBlazor/Pages/Index.razor index 5895cc0..1f37639 100644 --- a/Project/adminBlazor/adminBlazor/Pages/Index.razor +++ b/Project/adminBlazor/adminBlazor/Pages/Index.razor @@ -11,4 +11,5 @@

CurrentCulture: @CultureInfo.CurrentCulture -

\ No newline at end of file +

+ diff --git a/Project/adminBlazor/adminBlazor/Program.cs b/Project/adminBlazor/adminBlazor/Program.cs index f59fe3a..89d27de 100644 --- a/Project/adminBlazor/adminBlazor/Program.cs +++ b/Project/adminBlazor/adminBlazor/Program.cs @@ -12,13 +12,18 @@ using System.Globalization; using Microsoft.Extensions.Options; using Microsoft.Net.Http.Headers; using adminBlazor.Models; +using adminBlazor; +using Microsoft.AspNetCore.Components.Authorization; var builder = WebApplication.CreateBuilder(args); - // Add services to the container. - builder.Services.AddRazorPages(); + + +// Add services to the container. + +builder.Services.AddRazorPages(); builder.Services.AddServerSideBlazor(); builder.Services.AddSingleton(); @@ -94,4 +99,3 @@ builder.Services.AddControllers(); app.Run(); - diff --git a/Project/adminBlazor/adminBlazor/Services/AuthService.cs b/Project/adminBlazor/adminBlazor/Services/AuthService.cs deleted file mode 100644 index 96ece5b..0000000 --- a/Project/adminBlazor/adminBlazor/Services/AuthService.cs +++ /dev/null @@ -1,53 +0,0 @@ -using adminBlazor.Models; -using System.Security.Claims; - -namespace adminBlazor.Services -{ - public class AuthService : IAuthService - { - private static readonly List CurrentUser; - - static AuthService() - { - CurrentUser = new List - { - new AppUser { UserName = "Admin", Password = "123456", Roles = new List { "admin" } } - }; - } - - public CurrentUser GetUser(string userName) - { - var user = CurrentUser.FirstOrDefault(w => w.UserName == userName); - - if (user == null) - { - throw new Exception("User name or password invalid !"); - } - - var claims = new List(); - claims.AddRange(user.Roles.Select(s => new Claim(ClaimTypes.Role, s))); - - return new CurrentUser - { - IsAuthenticated = true, - UserName = user.UserName, - Claims = claims.ToDictionary(c => c.Type, c => c.Value) - }; - } - - public void Login(LoginRequest loginRequest) - { - var user = CurrentUser.FirstOrDefault(w => w.UserName == loginRequest.UserName && w.Password == loginRequest.Password); - - if (user == null) - { - throw new Exception("User name or password invalid !"); - } - } - - public void Register(RegisterRequest registerRequest) - { - CurrentUser.Add(new AppUser { UserName = registerRequest.UserName, Password = registerRequest.Password, Roles = new List { "guest" } }); - } - } -} diff --git a/Project/adminBlazor/adminBlazor/Services/CustomStateProvider.cs b/Project/adminBlazor/adminBlazor/Services/CustomStateProvider.cs deleted file mode 100644 index ab9d69e..0000000 --- a/Project/adminBlazor/adminBlazor/Services/CustomStateProvider.cs +++ /dev/null @@ -1,75 +0,0 @@ -using adminBlazor.Models; -using Microsoft.AspNetCore.Components.Authorization; -using System.Security.Claims; - -namespace adminBlazor.Services -{ - public class CustomStateProvider : AuthenticationStateProvider - { - private readonly IAuthService _authService; - private CurrentUser _currentUser; - - public CustomStateProvider(IAuthService authService) - { - this._authService = authService; - } - - public override async Task GetAuthenticationStateAsync() - { - var identity = new ClaimsIdentity(); - try - { - var userInfo = GetCurrentUser(); - if (userInfo.IsAuthenticated) - { - var claims = new[] { new Claim(ClaimTypes.Name, _currentUser.UserName) }.Concat(_currentUser.Claims.Select(c => new Claim(c.Key, c.Value))); - identity = new ClaimsIdentity(claims, "Server authentication"); - } - } - catch (HttpRequestException ex) - { - Console.WriteLine("Request failed:" + ex); - } - - return new AuthenticationState(new ClaimsPrincipal(identity)); - } - - public async Task Login(LoginRequest loginParameters) - { - _authService.Login(loginParameters); - - // No error - Login the user - var user = _authService.GetUser(loginParameters.UserName); - _currentUser = user; - - NotifyAuthenticationStateChanged(GetAuthenticationStateAsync()); - } - - public async Task Logout() - { - _currentUser = null; - NotifyAuthenticationStateChanged(GetAuthenticationStateAsync()); - } - - public async Task Register(RegisterRequest registerParameters) - { - _authService.Register(registerParameters); - - // No error - Login the user - var user = _authService.GetUser(registerParameters.UserName); - _currentUser = user; - - NotifyAuthenticationStateChanged(GetAuthenticationStateAsync()); - } - - private CurrentUser GetCurrentUser() - { - if (_currentUser != null && _currentUser.IsAuthenticated) - { - return _currentUser; - } - - return new CurrentUser(); - } - } -} diff --git a/Project/adminBlazor/adminBlazor/Services/IAuthService.cs b/Project/adminBlazor/adminBlazor/Services/IAuthService.cs deleted file mode 100644 index 84dc7ca..0000000 --- a/Project/adminBlazor/adminBlazor/Services/IAuthService.cs +++ /dev/null @@ -1,13 +0,0 @@ -using adminBlazor.Models; - -namespace adminBlazor.Services -{ - public interface IAuthService - { - CurrentUser GetUser(string userName); - - void Login(LoginRequest loginRequest); - - void Register(RegisterRequest registerRequest); - } -} diff --git a/Project/adminBlazor/adminBlazor/Shared/AuthLayout.razor b/Project/adminBlazor/adminBlazor/Shared/AuthLayout.razor deleted file mode 100644 index ae7bc2a..0000000 --- a/Project/adminBlazor/adminBlazor/Shared/AuthLayout.razor +++ /dev/null @@ -1,6 +0,0 @@ -@inherits LayoutComponentBase -
-
- @Body -
-
\ No newline at end of file diff --git a/Project/adminBlazor/adminBlazor/Shared/MainLayout.razor b/Project/adminBlazor/adminBlazor/Shared/MainLayout.razor index 5192709..47611ac 100644 --- a/Project/adminBlazor/adminBlazor/Shared/MainLayout.razor +++ b/Project/adminBlazor/adminBlazor/Shared/MainLayout.razor @@ -10,6 +10,7 @@ +
diff --git a/Project/adminBlazor/adminBlazor/_Imports.razor b/Project/adminBlazor/adminBlazor/_Imports.razor index 7df73a7..1c48b6e 100644 --- a/Project/adminBlazor/adminBlazor/_Imports.razor +++ b/Project/adminBlazor/adminBlazor/_Imports.razor @@ -11,4 +11,4 @@ @using Blazorise.DataGrid @using adminBlazor.Services @using Blazored.Modal -@using Blazored.Modal.Services \ No newline at end of file +@using Blazored.Modal.Services diff --git a/Project/adminBlazor/adminBlazor/adminBlazor.csproj b/Project/adminBlazor/adminBlazor/adminBlazor.csproj index fea2e3b..e5a8f99 100644 --- a/Project/adminBlazor/adminBlazor/adminBlazor.csproj +++ b/Project/adminBlazor/adminBlazor/adminBlazor.csproj @@ -16,6 +16,7 @@ +