From 3c2fac69c3f56453e8f5c3bb385cb084e7b34da8 Mon Sep 17 00:00:00 2001 From: Stanley Dimant Date: Wed, 29 Jun 2022 23:02:18 +0200 Subject: [PATCH] preparation for admin actions --- .../MareSynchronos.API/UserDto.cs | 14 +++++++++ .../Hubs/ConnectionHub.cs | 31 ++++++++++++------- 2 files changed, 34 insertions(+), 11 deletions(-) create mode 100644 MareSynchronosServer/MareSynchronos.API/UserDto.cs diff --git a/MareSynchronosServer/MareSynchronos.API/UserDto.cs b/MareSynchronosServer/MareSynchronos.API/UserDto.cs new file mode 100644 index 0000000..1b44377 --- /dev/null +++ b/MareSynchronosServer/MareSynchronos.API/UserDto.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MareSynchronos.API +{ + public class UserDto + { + public bool IsAdmin { get; set; } + public string UID { get; set; } + } +} diff --git a/MareSynchronosServer/MareSynchronosServer/Hubs/ConnectionHub.cs b/MareSynchronosServer/MareSynchronosServer/Hubs/ConnectionHub.cs index 8f8ba29..09a51bd 100644 --- a/MareSynchronosServer/MareSynchronosServer/Hubs/ConnectionHub.cs +++ b/MareSynchronosServer/MareSynchronosServer/Hubs/ConnectionHub.cs @@ -1,26 +1,35 @@ -using System.Diagnostics; -using System.Linq; +using System.Linq; using System.Security.Claims; using System.Threading.Tasks; -using Microsoft.AspNetCore.SignalR; +using MareSynchronos.API; +using MareSynchronosServer.Data; +using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Logging; namespace MareSynchronosServer.Hubs { - public class ConnectionHub : Hub + public class ConnectionHub : BaseHub { - private readonly ILogger _logger; - - public ConnectionHub(ILogger logger) + public ConnectionHub(MareDbContext mareDbContext, ILogger logger) : base(mareDbContext, logger) { - _logger = logger; } - public string Heartbeat() + public async Task Heartbeat() { var userId = Context.User!.Claims.SingleOrDefault(c => c.Type == ClaimTypes.NameIdentifier)?.Value; - _logger.LogInformation("Heartbeat from " + (userId ?? "Unknown user")); - return userId ?? string.Empty; + Logger.LogInformation("Heartbeat from " + (userId ?? "Unknown user")); + + if (userId != null) + { + var isAdmin = (await DbContext.Users.SingleOrDefaultAsync(u => u.UID == userId))?.IsAdmin ?? false; + return new UserDto + { + UID = userId, + IsAdmin = isAdmin + }; + } + + return new UserDto(); } } }