From cad4268b792e02f19aaa7dadd39a5c1d9fb1755e Mon Sep 17 00:00:00 2001 From: Karolis2011 Date: Wed, 22 Dec 2021 22:50:09 +0200 Subject: [PATCH] Some stuff --- KTUSAPS/Auth/AdminAuthorizationHandler.cs | 38 ++++++++ KTUSAPS/Auth/AdminRequirement.cs | 8 ++ KTUSAPS/ClientApp/public/index.html | 2 +- KTUSAPS/ClientApp/src/components/NavMenu.vue | 19 ++-- KTUSAPS/ClientApp/src/pages/Home.vue | 79 +++++++++++------ KTUSAPS/ClientApp/src/pages/Submit.vue | 86 +++++++++++++++++++ KTUSAPS/ClientApp/src/router/index.js | 6 ++ .../ClientApp/src/store/modules/msalAuth.js | 19 +++- KTUSAPS/Controllers/AuthMetadataController.cs | 5 ++ KTUSAPS/Properties/launchSettings.json | 1 - KTUSAPS/Startup.cs | 9 ++ 11 files changed, 236 insertions(+), 36 deletions(-) create mode 100644 KTUSAPS/Auth/AdminAuthorizationHandler.cs create mode 100644 KTUSAPS/Auth/AdminRequirement.cs create mode 100644 KTUSAPS/ClientApp/src/pages/Submit.vue diff --git a/KTUSAPS/Auth/AdminAuthorizationHandler.cs b/KTUSAPS/Auth/AdminAuthorizationHandler.cs new file mode 100644 index 0000000..a3b7002 --- /dev/null +++ b/KTUSAPS/Auth/AdminAuthorizationHandler.cs @@ -0,0 +1,38 @@ +using KTUSAPS.Data; +using Microsoft.AspNetCore.Authorization; +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.DependencyInjection; +using System; +using System.Linq; +using System.Threading.Tasks; + +namespace KTUSAPS.Auth +{ + public class AdminAuthorizationHandler : AuthorizationHandler + { + private readonly IServiceProvider serviceProvider; + public AdminAuthorizationHandler(IServiceProvider serviceProvider) + { + this.serviceProvider = serviceProvider; + } + + protected async override Task HandleRequirementAsync(AuthorizationHandlerContext context, AdminRequirement requirement) + { + var idclaim = context.User.Claims.Where(c => c.Type == "http://schemas.microsoft.com/identity/claims/objectidentifier").FirstOrDefault(); + if(idclaim == default) + { + context.Fail(); + return; + } + using var scope = serviceProvider.CreateScope(); + var dataContext = scope.ServiceProvider.GetRequiredService(); + var admin = await dataContext.Admins.Where(a => a.UserId == idclaim.Value).FirstOrDefaultAsync(); + if (admin != default) + { + context.Succeed(requirement); + return; + } + context.Fail(); + } + } +} diff --git a/KTUSAPS/Auth/AdminRequirement.cs b/KTUSAPS/Auth/AdminRequirement.cs new file mode 100644 index 0000000..9fa1cef --- /dev/null +++ b/KTUSAPS/Auth/AdminRequirement.cs @@ -0,0 +1,8 @@ +using Microsoft.AspNetCore.Authorization; + +namespace KTUSAPS.Auth +{ + public class AdminRequirement : IAuthorizationRequirement + { + } +} diff --git a/KTUSAPS/ClientApp/public/index.html b/KTUSAPS/ClientApp/public/index.html index 4123528..25f45cc 100644 --- a/KTUSAPS/ClientApp/public/index.html +++ b/KTUSAPS/ClientApp/public/index.html @@ -5,7 +5,7 @@ - <%= htmlWebpackPlugin.options.title %> + KTU SA Problemų sprendimo sistema