Существует ли общий способ приведения текущего пользователя к одной из его ролей, например, Администратор? - PullRequest
0 голосов
/ 23 мая 2019

У меня есть поле userid в токене и пользовательский IWebContext вместо того, чтобы просто создавать внутри него типичный CurrentUser (который выполняет внутри него типичные вещи get-user-by-id), которые я хотел бы иметьчто-то вроде CurrentUserAsRole<Admin>, которое попытается получить Admin экземпляр userId, если текущий пользователь имеет эту роль, в противном случае вернет null.

Я уже пытался создать универсальный метод расширения для WebContextно застрял с переключателем в разновидностях T (where T: User), например, (Type.GetTypeCode(typeof(T)) == Admin)

, а также возвращает экземпляр Admin, несмотря на тот факт, что Admin непосредственно вложено из User

public T GetCurrentUserAsRole<T>(int currentUserId) where T: User
{
    switch (Type.GetTypeCode(typeof(T)))
    {
        // `Admin` is a type which is not walid in the current context
        case Admin:
            //cannot return Admin as T
            return (T)_adminService.GetByUserId(currentUserId);
    }
}

Есть ли шанс использовать _context.GetCurrentUserAsRole (int userId)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...