Во-первых, вам нужно добавить пользовательские претензии к пользователю. Например, после создания пользователя:
await _userManager.Value.AddClaimAsync(user, new Claim("UserType", "SomeType"));
Затем создайте метод расширения для чтения значения претензии:
public static string GetUserType(this IIdentity identity)
{
if (identity == null)
throw new ArgumentNullException(nameof(identity));
var claim = ((ClaimsIdentity)identity).FindFirst("UserType")?.Value;
return claim ?? string.Empty;
}
И после входа в систему вы можете получить доступ к типу пользователя:
var userType = User.Identity.GetUserType();
А вот расширение c для получения пользовательского утверждения:
public static T Get<T>(this IIdentity identity, string propertyName)
{
if (identity == null)
throw new ArgumentNullException(nameof(identity));
var value = ((ClaimsIdentity)identity).FindFirst(propertyName)?.Value;
if (value == null)
return default(T);
var type = typeof(T);
if (type.IsEnum)
return (T)Enum.Parse(typeof(T), value);
return (T)Convert.ChangeType(value, typeof(T));
}
Например, у вас есть перечисление для UserType
:
public enum UserType
{
Admin,
Editor,
User,
}
var userType = User.Identity.Get<UserType>("UserType");
var representativeId = User.Identity.Get<int>("DepartmentId");