diff --git a/src/Tgstation.Server.Host/Security/AuthenticationContext.cs b/src/Tgstation.Server.Host/Security/AuthenticationContext.cs
index b8719d5cc8..f0f4e5be03 100644
--- a/src/Tgstation.Server.Host/Security/AuthenticationContext.cs
+++ b/src/Tgstation.Server.Host/Security/AuthenticationContext.cs
@@ -4,8 +4,6 @@ using System.Linq;
using Tgstation.Server.Api.Rights;
using Tgstation.Server.Host.Models;
-#nullable disable
-
namespace Tgstation.Server.Host.Security
{
///
@@ -15,16 +13,26 @@ namespace Tgstation.Server.Host.Security
public bool Valid { get; private set; }
///
- public User User { get; private set; }
+ public User User => user ?? throw new InvalidOperationException("AuthenticationContext is invalid!");
///
- public PermissionSet PermissionSet { get; private set; }
+ public PermissionSet PermissionSet => permissionSet ?? throw new InvalidOperationException("AuthenticationContext is invalid!");
///
- public InstancePermissionSet InstancePermissionSet { get; private set; }
+ public InstancePermissionSet? InstancePermissionSet { get; private set; }
///
- public ISystemIdentity SystemIdentity { get; private set; }
+ public ISystemIdentity? SystemIdentity { get; private set; }
+
+ ///
+ /// Backing field for .
+ ///
+ User? user;
+
+ ///
+ /// Backing field for .
+ ///
+ PermissionSet? permissionSet;
///
/// Initializes a new instance of the class.
@@ -44,10 +52,10 @@ namespace Tgstation.Server.Host.Security
/// The value of .
public void Initialize(ISystemIdentity systemIdentity, User user, InstancePermissionSet instanceUser)
{
- User = user ?? throw new ArgumentNullException(nameof(user));
+ this.user = user ?? throw new ArgumentNullException(nameof(user));
if (systemIdentity == null && User.SystemIdentifier != null)
throw new ArgumentNullException(nameof(systemIdentity));
- PermissionSet = user.PermissionSet
+ permissionSet = user.PermissionSet
?? user.Group.PermissionSet
?? throw new ArgumentException("No PermissionSet provider", nameof(user));
InstancePermissionSet = instanceUser;
@@ -74,9 +82,9 @@ namespace Tgstation.Server.Host.Security
var nullableType = typeof(Nullable<>);
var nullableRightsType = nullableType.MakeGenericType(rightsEnum);
- var prop = typeToCheck.GetProperties().Where(x => x.PropertyType == nullableRightsType).First();
+ var prop = typeToCheck.GetProperties().Where(x => x.PropertyType == nullableRightsType && x.CanRead).First();
- var right = prop.GetMethod.Invoke(
+ var right = prop.GetMethod!.Invoke(
isInstance
? InstancePermissionSet
: PermissionSet,