Example #1
0
 public async Task<CompleteRegistrationResponse> Generate(CompleteRegistrationRequestValidationResult validationResult) {
     var device = validationResult.Device ?? new UserDevice(Guid.NewGuid()) {
         DateCreated = SystemClock.UtcNow,
         DeviceId = validationResult.DeviceId,
         Name = validationResult.DeviceName,
         Platform = validationResult.DevicePlatform,
         IsPushNotificationsEnabled = false,
         PublicKey = validationResult.PublicKey,
         UserId = validationResult.UserId
     };
     switch (validationResult.InteractionMode) {
         case InteractionMode.Pin when validationResult.Device == null:
             var password = DevicePasswordHasher.HashPassword(device, validationResult.Pin);
             device.Password = password;
             await UserDeviceStore.CreateDevice(device);
             break;
         case InteractionMode.Pin when validationResult.Device != null:
             password = DevicePasswordHasher.HashPassword(device, validationResult.Pin);
             await UserDeviceStore.UpdateDevicePassword(device, password);
             break;
         case InteractionMode.Fingerprint when validationResult.Device == null:
             device.PublicKey = validationResult.PublicKey;
             await UserDeviceStore.CreateDevice(device);
             break;
         case InteractionMode.Fingerprint when validationResult.Device != null:
             await UserDeviceStore.UpdateDevicePublicKey(device, validationResult.PublicKey);
             break;
     }
     return new CompleteRegistrationResponse();
 }