Как показать записи в зависимости от полномочий - PullRequest
0 голосов
/ 07 января 2019

В моем проекте jHipster есть 4 объекта: пользователь, отдел, userAssignmentToDepartments (пользователь может принадлежать нескольким отделам), заказ. В приказе есть поле "Department_id". Вопросы:

  1. Как показывать только заказы, в которые включен Department_id userAssignmentToDepartments для этого пользователя?

2.Как узнать идентификаторы отделов, на которые пользователь имеет полномочия?

order.routes.ts

export const orderRoute: Routes = [
    {
        path: 'order',
        component: OrderComponent,
        resolve: {
            pagingParams: JhiResolvePagingParams
        },
       data: {
           authorities: ['ROLE_USER'],
           defaultSort: 'id,asc',
           pageTitle: 'Orders'
       },
       canActivate: [UserRouteAccessService]
    }...

order.service.ts

export class OrderService {
query(req?: any): Observable<EntityArrayResponseType> {
    const options = createRequestOption(req);
    return this.http
        .get<IOrder[]>(this.resourceUrl, { params: options, observe: 'response' })
        .pipe(map((res: EntityArrayResponseType) => this.convertDateArrayFromServer(res)));
}.....

order.component.ts

export class OrderComponent implements OnInit, OnDestroy {

loadAll() {
    this.orderService
        .query({
            page: this.page - 1,
            size: this.itemsPerPage,
            sort: this.sort()
        })
        .subscribe(
            (res: HttpResponse<IOrder[]>) => this.paginateOrders(res.body, res.headers),
            (res: HttpErrorResponse) => this.onError(res.message)
        );
}

department.model.ts

export interface IDepartment {
   id?: number;
   name?: string;

} * * тысяча двадцать-один

export class Departmetn implements IDepartment {
   constructor(public id?: number, public name?: string) {}

}

order.model.ts

import { Moment } from 'moment';

export interface IOrder {
   id?: number;
   date?: Moment;
   departmetnId?: number

}

export class Order implements IOrder {
    constructor(public id?: number, public date?: Moment, public departmentId?: number) {}

}

user.model.ts

export interface IUser {
   id?: number;
}

export class User implements IUser {
    constructor(public id?: number) {}
}

пользовательский assignment.ts

export interface IUserAssignment {
   id?: number;
   userLogin?: string;
   userId?: number;
   centerName?: string;
   centerId?: number;
}

export class UserAssignment implements IUserAssignment {
constructor(
       public id?: number,
       public userLogin?: string,
       public userId?: number,
       public departmentName?: string,
       public departmentId?: number
  ) {}
}

1 Ответ

0 голосов
/ 07 января 2019

Предположим, это ваши списки заданий и заказов

userAssignments : IUserAssignment[]
orders : IOrder[]

Для получения заказов с включенным значением user_id в userAssignmentToDepartments для пользователя

getOrders(userID : number){
    var deptList : number[] = []
    for(let assignment of this.userAssignments){
        if(assignment.userId==userID){
            deptList.push(assignment.departmentId);
        }
    }
    var orderList : IOrder[]
    for(let order of this.orders){
        if(deptList.find(dept => dept==order.departmentId)){
            orderList.push(order);
        }
    }
    console.log(orderList);
}

Для авторизации отделов для конкретного пользователя,

getAuthorizedDepts(userID : number){
    var deptList : number[] = []
    for(let assignment of this.userAssignments){
        if(assignment.userId==userID){
            deptList.push(assignment.departmentId);
        }
    }
    console.log(deptList)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...