@dasch-swiss/dsp-js
Version:
TypeScript client library for DSP-API
162 lines • 9.92 kB
JavaScript
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