UNPKG

@dasch-swiss/dsp-js

Version:
162 lines 9.92 kB
import { catchError, map } from 'rxjs'; import { AdministrativePermissionResponse } from '../../../models/admin/administrative-permission-response'; import { AdministrativePermissionsResponse } from '../../../models/admin/administrative-permissions-response'; import { DefaultObjectAccessPermissionResponse } from '../../../models/admin/default-object-access-permission-response'; import { DefaultObjectAccessPermissionsResponse } from '../../../models/admin/default-object-access-permissions-response'; import { DeletePermissionResponse } from '../../../models/admin/delete-permission-response'; import { ProjectPermissionsResponse } from '../../../models/admin/project-permissions-response'; import { ApiResponseData } from '../../../models/api-response-data'; import { Endpoint } from '../../endpoint'; /** * An endpoint for working with Knora permissions. * @deprecated Use open API docs instead * @category Endpoint Admin */ export class PermissionsEndpointAdmin extends Endpoint { /** * Gets the permissions for a project. * * @param projectIri The project IRI. */ getProjectPermissions(projectIri) { return this.httpGet(`/${encodeURIComponent(projectIri)}`).pipe(map(ajaxResponse => ApiResponseData.fromAjaxResponse(ajaxResponse, ProjectPermissionsResponse, this.jsonConvert)), catchError(error => this.handleError(error))); } /** * Gets the administrative permissions for a project. * * @param projectIri The project IRI. */ getAdministrativePermissions(projectIri) { return this.httpGet(`/ap/${encodeURIComponent(projectIri)}`).pipe(map(ajaxResponse => ApiResponseData.fromAjaxResponse(ajaxResponse, AdministrativePermissionsResponse, this.jsonConvert)), catchError(error => this.handleError(error))); } /** * Gets the administrative permission for a project and group. * * @param projectIri The project IRI. * @param groupIri The group IRI. */ getAdministrativePermission(projectIri, groupIri) { return this.httpGet(`/ap/${encodeURIComponent(projectIri)}/${encodeURIComponent(groupIri)}`).pipe(map(ajaxResponse => ApiResponseData.fromAjaxResponse(ajaxResponse, AdministrativePermissionResponse, this.jsonConvert)), catchError(error => this.handleError(error))); } /** * Creates an administrative permission. * * @param administrativePermission the administrative permission to be created. */ createAdministrativePermission(administrativePermission) { if (!administrativePermission.forGroup || !administrativePermission.forProject) { throw new Error('Group and project are required when creating a new administrative permission.'); } if (administrativePermission.hasPermissions.length === 0) { throw new Error('At least one permission is expected.'); } return this.httpPost('/ap', this.jsonConvert.serializeObject(administrativePermission)).pipe(map(ajaxResponse => ApiResponseData.fromAjaxResponse(ajaxResponse, AdministrativePermissionResponse, this.jsonConvert)), catchError(error => this.handleError(error))); } /** * Updates an existing administrative permission. * * @param permissionIri the Iri of the permission to be updated. * @param administrativePermission the new permission settings. */ updateAdministrativePermission(permissionIri, administrativePermission) { return this.httpPut(`/${encodeURIComponent(permissionIri)}/hasPermissions`, this.jsonConvert.serializeObject(administrativePermission)).pipe(map(ajaxResponse => ApiResponseData.fromAjaxResponse(ajaxResponse, AdministrativePermissionResponse, this.jsonConvert)), catchError(error => this.handleError(error))); } /** * Updates an existing administrative permission's group. * * @param permissionIri the Iri of the permission to be updated. * @param updateAdministrativePermissionGroup the new group setting. */ updateAdministrativePermissionGroup(permissionIri, updateAdministrativePermissionGroup) { return this.httpPut(`/${encodeURIComponent(permissionIri)}/group`, this.jsonConvert.serializeObject(updateAdministrativePermissionGroup)).pipe(map(ajaxResponse => ApiResponseData.fromAjaxResponse(ajaxResponse, AdministrativePermissionResponse, this.jsonConvert)), catchError(error => this.handleError(error))); } /** * Gets all default object access permissions for a project. * * @param projectIri The project IRI. */ getDefaultObjectAccessPermissions(projectIri) { return this.httpGet(`/doap/${encodeURIComponent(projectIri)}`).pipe(map(ajaxResponse => ApiResponseData.fromAjaxResponse(ajaxResponse, DefaultObjectAccessPermissionsResponse, this.jsonConvert)), catchError(error => this.handleError(error))); } /** * Creates a default object access permission. * * @param defaultObjectAccessPermission the permission to be created. */ createDefaultObjectAccessPermission(defaultObjectAccessPermission) { // A default object access permission must // always reference a project if (!defaultObjectAccessPermission.forProject) { throw new Error('Project is required when creating a new default object access permission.'); } if (defaultObjectAccessPermission.hasPermissions.length === 0) { throw new Error('At least one permission is expected.'); } /* A default object access permission can only reference either a group, a resource class, a property, or a combination of resource class and property. */ if ((defaultObjectAccessPermission.forGroup && !defaultObjectAccessPermission.forResourceClass && !defaultObjectAccessPermission.forProperty) || (!defaultObjectAccessPermission.forGroup && defaultObjectAccessPermission.forResourceClass && !defaultObjectAccessPermission.forProperty) || (!defaultObjectAccessPermission.forGroup && !defaultObjectAccessPermission.forResourceClass && defaultObjectAccessPermission.forProperty) || (!defaultObjectAccessPermission.forGroup && defaultObjectAccessPermission.forResourceClass && defaultObjectAccessPermission.forProperty)) { return this.httpPost('/doap', this.jsonConvert.serializeObject(defaultObjectAccessPermission)).pipe(map(ajaxResponse => ApiResponseData.fromAjaxResponse(ajaxResponse, DefaultObjectAccessPermissionResponse, this.jsonConvert)), catchError(error => this.handleError(error))); } else { throw new Error('Invalid combination of properties for creation of new default object access permission.'); } } /** * Updates an existing default object access permission. * * @param permissionIri the Iri of the permission to be updated. * @param defaultObjectAccessPermission the new permission settings. */ updateDefaultObjectAccessPermission(permissionIri, defaultObjectAccessPermission) { return this.httpPut(`/${encodeURIComponent(permissionIri)}/hasPermissions`, this.jsonConvert.serializeObject(defaultObjectAccessPermission)).pipe(map(ajaxResponse => ApiResponseData.fromAjaxResponse(ajaxResponse, DefaultObjectAccessPermissionResponse, this.jsonConvert)), catchError(error => this.handleError(error))); } /** * Updates an existing default object access permission's group. * * @param permissionIri the Iri of the permission to be updated. * @param administrativePermission the new permission settings. */ updateDefaultObjectAccessPermissionGroup(permissionIri, administrativePermission) { return this.httpPut(`/${encodeURIComponent(permissionIri)}/group`, this.jsonConvert.serializeObject(administrativePermission)).pipe(map(ajaxResponse => ApiResponseData.fromAjaxResponse(ajaxResponse, DefaultObjectAccessPermissionResponse, this.jsonConvert)), catchError(error => this.handleError(error))); } /** * Updates an existing default object access permission's resource class. * * @param permissionIri the Iri of the permission to be updated. * @param administrativePermission the new permission settings. */ updateDefaultObjectAccessPermissionResourceClass(permissionIri, administrativePermission) { return this.httpPut(`/${encodeURIComponent(permissionIri)}/resourceClass`, this.jsonConvert.serializeObject(administrativePermission)).pipe(map(ajaxResponse => ApiResponseData.fromAjaxResponse(ajaxResponse, DefaultObjectAccessPermissionResponse, this.jsonConvert)), catchError(error => this.handleError(error))); } /** * Updates an existing default object access permission's property. * * @param permissionIri the Iri of the permission to be updated. * @param administrativePermission the new permission settings. */ updateDefaultObjectAccessPermissionProperty(permissionIri, administrativePermission) { return this.httpPut(`/${encodeURIComponent(permissionIri)}/property`, this.jsonConvert.serializeObject(administrativePermission)).pipe(map(ajaxResponse => ApiResponseData.fromAjaxResponse(ajaxResponse, DefaultObjectAccessPermissionResponse, this.jsonConvert)), catchError(error => this.handleError(error))); } /** * Deletes a permission. * * @param permissionIri the IRI of the permission to be deleted. */ deletePermission(permissionIri) { return this.httpDelete(`/${encodeURIComponent(permissionIri)}`).pipe(map(ajaxResponse => ApiResponseData.fromAjaxResponse(ajaxResponse, DeletePermissionResponse, this.jsonConvert)), catchError(error => this.handleError(error))); } } //# sourceMappingURL=permissions-endpoint-admin.js.map