@nevis-security/nevis-mobile-authentication-sdk-react
Version:
React Native plugin for Nevis Mobile Authentication SDK. Supports only mobile.
86 lines (84 loc) • 3.62 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.DeviceInformationSyncImpl = exports.DeviceInformationSync = void 0;
var _reactNativeUuid = _interopRequireDefault(require("react-native-uuid"));
var _DeviceInformationSyncPlatformOperation = require("../../cache/operation/DeviceInformationSyncPlatformOperation");
var _PlatformOperationCache = require("../../cache/PlatformOperationCache");
var _MobileAuthenticationSdk = _interopRequireDefault(require("../../MobileAuthenticationSdk"));
var _DeviceInformationSyncResultMessage = require("../../model/messages/in/DeviceInformationSyncResultMessage");
var _DeviceInformationSyncMessage = require("../../model/messages/out/DeviceInformationSyncMessage");
var _HttpOperation = require("../HttpOperation");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
/**
* Copyright © 2024 Nevis Security AG. All rights reserved.
*/
/**
* The operation that can be executed to correct the {@link DeviceInformationMismatch} problems
* that were found in a {@link DeviceInformationCheck}.
*
* The operation works in a best-effort mode: it will try to resolve as many mismatches as
* possible and will report the errors that occurred (if any) through the {@link DeviceInformationSyncResult.errors}
* method.
*
* **WARNING** \
* Some of the changes result in removal of credentials on both the server and client side. Use this
* class with caution and understanding its implications. The changes that will be applied are
* described on the documentation of each {@link DeviceInformationMismatch}.
*
* This is supported only when the backend uses nevisFIDO 7.2408.** or later.
*
* Usage example:
* ```ts
* [...]
* async fixDeviceInformationMismatches(
* operations: Operations,
* mismatches: DeviceInformationMismatch[]
* ): Promise<void> {
* operations.deviceInformationSync
* .mismatches(mismatches)
* .onResult((result) => {
* // handle the result
* })
* .execute();
* }
* [...]
* ```
*
* @see
* - {@link DeviceInformationCheck}
* - {@link DeviceInformationMismatch}
* - {@link Operations.deviceInformationSync}
*/
class DeviceInformationSync extends _HttpOperation.HttpOperation {}
exports.DeviceInformationSync = DeviceInformationSync;
class DeviceInformationSyncImpl extends _HttpOperation.HttpOperationImpl {
constructor() {
super();
}
mismatches(mismatches) {
this._mismatches = mismatches;
return this;
}
onResult(onResult) {
this._onResult = onResult;
return this;
}
async execute() {
const operationId = _reactNativeUuid.default.v4();
const operation = new _DeviceInformationSyncPlatformOperation.DeviceInformationSyncPlatformOperation(operationId, this._onResult);
_PlatformOperationCache.PlatformOperationCache.getInstance().put(operation);
const message = new _DeviceInformationSyncMessage.DeviceInformationSyncMessage(operationId, this._onResult !== undefined, this._mismatches, this.httpRequestHeaders);
function finish() {
_PlatformOperationCache.PlatformOperationCache.getInstance().delete(operationId);
}
return _MobileAuthenticationSdk.default.deviceInformationSync(message).then(result => {
const resultMessage = _DeviceInformationSyncResultMessage.DeviceInformationSyncResultMessage.fromJson(result);
operation.handleResult(resultMessage.result);
finish();
});
}
}
exports.DeviceInformationSyncImpl = DeviceInformationSyncImpl;
//# sourceMappingURL=DeviceInformationSync.js.map
;