]>
Commit | Line | Data |
---|---|---|
9f95a23c | 1 | import { HttpClient, HttpParams } from '@angular/common/http'; |
11fdf7f2 TL |
2 | import { Injectable } from '@angular/core'; |
3 | ||
4 | import { Observable, of as observableOf } from 'rxjs'; | |
5 | import { mergeMap } from 'rxjs/operators'; | |
6 | ||
7 | import { RoleFormModel } from '../../core/auth/role-form/role-form.model'; | |
8 | import { ApiModule } from './api.module'; | |
9 | ||
10 | @Injectable({ | |
11 | providedIn: ApiModule | |
12 | }) | |
13 | export class RoleService { | |
14 | constructor(private http: HttpClient) {} | |
15 | ||
16 | list() { | |
17 | return this.http.get('api/role'); | |
18 | } | |
19 | ||
9f95a23c TL |
20 | delete(name: string) { |
21 | return this.http.delete(`api/role/${name}`); | |
11fdf7f2 TL |
22 | } |
23 | ||
9f95a23c | 24 | get(name: string) { |
11fdf7f2 TL |
25 | return this.http.get(`api/role/${name}`); |
26 | } | |
27 | ||
28 | create(role: RoleFormModel) { | |
29 | return this.http.post(`api/role`, role); | |
30 | } | |
31 | ||
9f95a23c TL |
32 | clone(name: string, newName: string) { |
33 | let params = new HttpParams(); | |
34 | params = params.append('new_name', newName); | |
35 | return this.http.post(`api/role/${name}/clone`, null, { params }); | |
36 | } | |
37 | ||
11fdf7f2 TL |
38 | update(role: RoleFormModel) { |
39 | return this.http.put(`api/role/${role.name}`, role); | |
40 | } | |
41 | ||
42 | exists(name: string): Observable<boolean> { | |
43 | return this.list().pipe( | |
44 | mergeMap((roles: Array<RoleFormModel>) => { | |
45 | const exists = roles.some((currentRole: RoleFormModel) => { | |
46 | return currentRole.name === name; | |
47 | }); | |
48 | return observableOf(exists); | |
49 | }) | |
50 | ); | |
51 | } | |
52 | } |