Kaynağa Gözat

Preliminary user profile validation implementation

Lukas Angerer 3 yıl önce
ebeveyn
işleme
4a180d3c67

+ 25 - 0
src/RunnersMeet.Server/Controllers/UsersController.cs

@@ -0,0 +1,25 @@
+using System.Security.Claims;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using RunnersMeet.Server.Domain;
+
+namespace RunnersMeet.Server.Controllers;
+
+[Route("api/[controller]")]
+[ApiController]
+[Authorize]
+public class UsersController : ControllerBase
+{
+	[HttpGet("validate")]
+	public ActionResult<UserValidationResult> Validate()
+	{
+		return new UserValidationResult
+		{
+			UserProfile = new UserProfile {
+				UserId = User.FindFirst(ClaimTypes.NameIdentifier)?.Value ?? "<unknown>",
+				DisplayName = "TODO",
+			},
+			Claims = User.FindAll("permissions").Select(claim => claim.Value),
+		};
+	}
+}

+ 6 - 4
src/RunnersMeet.Server/Domain/Track.cs

@@ -1,13 +1,15 @@
+// ReSharper disable UnusedAutoPropertyAccessor.Global
+// ReSharper disable PropertyCanBeMadeInitOnly.Global
 using LiteDB;
 
 namespace RunnersMeet.Server.Domain;
 
 public class Track : IUserData
 {
-	public ObjectId TrackId { get; set; }
-	public string Owner { get; set; }
-	public string FileHash { get; set; }
-	public string DisplayName { get; set; }
+	public ObjectId TrackId { get; set; } = ObjectId.Empty;
+	public string Owner { get; set; } = String.Empty;
+	public string FileHash { get; set; } = String.Empty;
+	public string DisplayName { get; set; } = String.Empty;
 	public double Distance { get; set; }
 	public double ElevationUp { get; set; }
 	public double ElevationDown { get; set; }

+ 9 - 0
src/RunnersMeet.Server/Domain/UserProfile.cs

@@ -0,0 +1,9 @@
+// ReSharper disable UnusedAutoPropertyAccessor.Global
+// ReSharper disable PropertyCanBeMadeInitOnly.Global
+namespace RunnersMeet.Server.Domain;
+
+public class UserProfile
+{
+	public string UserId { get; set; } = String.Empty;
+	public string DisplayName { get; set; } = String.Empty;
+}

+ 9 - 0
src/RunnersMeet.Server/Domain/UserValidationResult.cs

@@ -0,0 +1,9 @@
+// ReSharper disable UnusedAutoPropertyAccessor.Global
+// ReSharper disable PropertyCanBeMadeInitOnly.Global
+namespace RunnersMeet.Server.Domain;
+
+public class UserValidationResult
+{
+	public UserProfile UserProfile { get; set; } = new UserProfile();
+	public IEnumerable<string> Claims { get; set; } = Enumerable.Empty<string>();
+}