]> git.proxmox.com Git - ceph.git/blame - ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/api/role.service.ts
import 15.2.0 Octopus source
[ceph.git] / ceph / src / pybind / mgr / dashboard / frontend / src / app / shared / api / role.service.ts
CommitLineData
9f95a23c 1import { HttpClient, HttpParams } from '@angular/common/http';
11fdf7f2
TL
2import { Injectable } from '@angular/core';
3
4import { Observable, of as observableOf } from 'rxjs';
5import { mergeMap } from 'rxjs/operators';
6
7import { RoleFormModel } from '../../core/auth/role-form/role-form.model';
8import { ApiModule } from './api.module';
9
10@Injectable({
11 providedIn: ApiModule
12})
13export 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}