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