@Pogran

Как сделать сложные права доступа?

Я хочу сделать права доступа которые будут у пользователя постоянно менять, т.е не просто админ, пользователь и т.д. А к примеру у нас есть пользователь. Ему доступен к примеру курс. И в этом курсе только первый урок. И пока он первый урок не пройдет, то ему не будут доступны другие. Также админ к примеру может произвольно открыть один из уроков. Как такое можно реализовать?
  • Вопрос задан
  • 127 просмотров
Решения вопроса 1
vitali1995
@vitali1995
Вся логика на Angular 2 делается через классы-сервисы, в которых можно производить проверки любой сложности. Достаточно выполнить 3 простых шага:

1. К примеру, в user.service.ts добавим информацию об авторизованном пользователе.

2. Создадим сервис AuthGuard, который будет отвечать за авторизацию. Он должен имплементировать интерфейс CanActivate

@Injectable()
export class AuthGuard implements CanActivate {
  constructor(private userService: UserService) {}

  canActivate(route: ActivatedRouteSnapshot, state:RouterStateSnapshot): Promise<boolean>|boolean {
    return this.userService.isAuth;
  }
}


3. В описании путей укажем класс, отвечающий за проверку доступа:
{
    path: 'logout',
    component: LogoutComponent,
    canActivate: [AuthGuard]
  },
  {
    path: 'login',
    component: LoginComponent,
    canActivate: [GuestGuard]
  },


В этом примере все сложные проверки могут производиться в get isAuth() сервиса UserService.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы