Угловой 5 HTTP-запрос в гвардии - PullRequest
0 голосов
/ 27 мая 2019

Я пытаюсь вызвать http GET запрос в охране.Возможно, это не работает из-за синхронизации ... Я в основном получаю ссылки, которые являются правами доступа с идентификаторами для зарегистрированного пользователя.Что я делаю не так?

import { Injectable } from '@angular/core';
import { Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';
import { Observable } from 'rxjs';
import { AppService } from '../app.service';
import { CookieService } from 'ngx-cookie-service';
import { AuthService } from '../services/auth.service';
import { LinkService } from '../services/link.service';



@Injectable()
export class ManageProjectUsersGuard implements CanActivate {
links: any[] = [];

constructor(
    private auth: AppService,
    private router: Router,
    private authService: AuthService,
    private linkService: LinkService
) { }

canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {


    var selectedProject = this.authService.getProjectIdFromUrl(state.url);
    if (!selectedProject) {
        selectedProject = this.authService.getSelectedProject();
    }
    var user = JSON.parse(localStorage.getItem("user"));
    if (!user || !user.username || !selectedProject) {
        return false;
    }
    return this.linkService.getLinksByUsername(user.username).map((links) => {
        this.links = links;
        console.log(this.links)
        var flag = false

        for (let i = 0; i < this.links.length; i++) {
            if (this.links[i].project.id == selectedProject && this.links[i].user.username == user.username) {
                if (JSON.parse(JSON.stringify(this.links[i])).role.id == 2) {

                    flag = true;
                    return flag; // access allowed
                }
            }
        }
        return flag; // access denied
    });
  }

}
...