Проверка роли пользователя в репозитории настроек (typescript, aurelia)

Делаю навигацию с авторизацией. Я сделал что-то вроде этого

run(navigationInstruction: NavigationInstruction, next: Next) : Promise<any> {

    let requiredRoles = navigationInstruction.getAllInstructions()
                        .map(i => i.config.settings.roles)[0];

    toastr.success('TEST1');

    let isUserInRole = requiredRoles?   
        requiredRoles.some(r => r === this.userIdentity.role) : true;

    toastr.success('TEST2');//LINE IT`S NOT EXECUTED

    return isUserInRole? next() : next.cancel(new Redirect('users/login'));    
}

обязательные роли — я проверил, и мне возвращается значение

В строку r => r === this.userIdentity.role В моем визуальном коде есть сообщение вроде: Parameter 'r' implicitly has an 'any' type, but a better type may be inferred from usage.ts(7044)


1
224
1

Ответ:

Решено

Я думаю, что вы можете сделать, это привести .roles)[0] к строке (я думаю, по внешнему виду вашего кода)

run(navigationInstruction: NavigationInstruction, next: Next) : Promise<any> {

    let requiredRoles = navigationInstruction.getAllInstructions()
                        .map(i => i.config.settings.roles)[0] as string;
  ...  
}

Обновлено: если роли представляют собой массив строк, тогда ваш код должен быть таким

run(navigationInstruction: NavigationInstruction, next: Next) : Promise<any> {

    let requiredRoles = navigationInstruction.getAllInstructions()
                        .map(i => i.config.settings.roles)[0] as string[];
  ...  
}

Это должно устранить проблему.