Ionic Auth Gaurd может загружать на основе публичного логического массива

Ситуация: я занят разработкой онлайн-курса, в котором пользователь должен просмотреть серию страниц по порядку, но я хочу, чтобы они не переходили на другие страницы. Если они попытаются это сделать, текущая страница просто загрузится снова.

Моя идея: я создал публичный логический массив, который отслеживает прогресс пользователей (пример ниже):

progress: [boolean, boolean, boolean] = [true, false, false];

End of Page 1:
progress[0] = false;
progress[1] = true;
End of Page 2:
progress[1] = false;
progress[2] = true;

Мой вопрос: как я могу использовать защиту аутентификации, canLoad, чтобы запретить пользователю доступ к любым другим страницам на основе массива прогресса?

У меня много страниц, и я бы хотел выполнить проверку с помощью одного Auth Gaurd, а не создавать защиту для каждой страницы.

2 ответа

Решение

Трудно дать вам точный код, но ниже несколько наивно, как я бы это сделал:

Внутри общего провайдера, доступного для всех ваших страниц, создайте объект для отслеживания прогресса:

public progress: {
     pageRoutePathName1: boolean,
     pageRoutePathName2: boolean,
}

В основном свойства объекта должны соответствовать значению пути вашего маршрута

Затем просто обновите состояние логических значений объекта, аналогичное тому, что вы имели в виду.

Импортируйте такого совместно используемого провайдера в вашу защиту загрузки и используйте объект для метода canLoad:

canLoad(route: Route, segments: UrlSegment[]): Promise<boolean> | boolean {

    if (this.sharedProvider.progress[route.path] === true) {
        return true
    } else {
        return false
    }

}

Я нашел тему, соответствующую моей проблеме. Этот ответ сработал для меня - он переключает одно логическое значение до и после навигации по кнопке (запрещая навигацию в моем ручном вводе URL-адреса).

Другие вопросы по тегам