В нашем проекте есть ситуация, когда профиль пользователя выбирается на основе параметров маршрута .
При входе в систему и при обновлении данные текущего пользователя сохраняются в магазине.
Пока пользователь нажимает на странице своего профиля, параметры маршрута изменяются на егоуникальный идентификатор.
На основании этого идентификатора извлекаются данные пользователя .
В приложении добавлено несколько ролей, к которым администратор может получить доступ.все профили и обычный пользователь может просматривать только свой профиль.
Нам нужно проверить, имеет ли пользователь право доступа к данным других профилей, для этого нужны две детали.1. уникальный идентификатор текущего пользователя с ролью 2. идентификатор профиля из параметров маршрута.
Итак, чтобы проверить, есть ли у пользователя роль, нам нужно посмотреть для два значения маршрут параметры и пользователь подробности.
Как мы можем добиться этого, используя часы и в Vue и Vuex?
Ниже приведен код, объясняющий сценарий!
// Current user details fetched on refresh and logging in.
@Getter private currentUser!: User;
@Watch('$route.params.id', { immediate: true })
private refreshProfile(newVal: any, oldVal: any) {
this.employeeId = this.$route.params.id;
if (this.employeeId) {
const hasPrivilege = this.$can(this.$permissions.CREATE, this.$modules.EMPLOYEE);
const isUserProfile = this.currentUser.employeeCompanyId == this.employeeId;
debugger;
if (!hasPrivilege && !isUserProfile) {
this.logout();
} else {
this.getUser({ employeeId: this.employeeId });
}
}
}
Приведенный выше код работает без обновления.Когда пользователь пытается войти вручную для просмотра своего или других профилей непосредственно в URL-адресе с разрешением или без него, он выходит из системы, потому что текущий пользователь сведения извлекаются асинхронно!
Любая мысльможет быть полезным !!.
Заранее благодарим за ваше терпение и понимание.