From ac769e656b122ff569c3f1534701b71e00fed586 Mon Sep 17 00:00:00 2001 From: crupest Date: Tue, 27 Oct 2020 19:21:35 +0800 Subject: Split front and back end. --- .../Controllers/ControllerAuthExtensions.cs | 40 ++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 BackEnd/Timeline/Controllers/ControllerAuthExtensions.cs (limited to 'BackEnd/Timeline/Controllers/ControllerAuthExtensions.cs') diff --git a/BackEnd/Timeline/Controllers/ControllerAuthExtensions.cs b/BackEnd/Timeline/Controllers/ControllerAuthExtensions.cs new file mode 100644 index 00000000..00a65454 --- /dev/null +++ b/BackEnd/Timeline/Controllers/ControllerAuthExtensions.cs @@ -0,0 +1,40 @@ +using Microsoft.AspNetCore.Mvc; +using System; +using System.Security.Claims; +using Timeline.Auth; +using static Timeline.Resources.Controllers.ControllerAuthExtensions; + +namespace Timeline.Controllers +{ + public static class ControllerAuthExtensions + { + public static bool IsAdministrator(this ControllerBase controller) + { + return controller.User != null && controller.User.IsAdministrator(); + } + + public static long GetUserId(this ControllerBase controller) + { + var claim = controller.User.FindFirst(ClaimTypes.NameIdentifier); + if (claim == null) + throw new InvalidOperationException(ExceptionNoUserIdentifierClaim); + + if (long.TryParse(claim.Value, out var value)) + return value; + + throw new InvalidOperationException(ExceptionUserIdentifierClaimBadFormat); + } + + public static long? GetOptionalUserId(this ControllerBase controller) + { + var claim = controller.User.FindFirst(ClaimTypes.NameIdentifier); + if (claim == null) + return null; + + if (long.TryParse(claim.Value, out var value)) + return value; + + throw new InvalidOperationException(ExceptionUserIdentifierClaimBadFormat); + } + } +} -- cgit v1.2.3