<div class="modal-header"> <button type="button" class="close" ng-click="close()" aria-label="Close"><span aria-hidden="true">×</span></button> <h4 class="modal-title"> <i class="fa fa-key"></i> Two-step Login <small>fido u2f</small> </h4> </div> <form name="authTwoStepForm" ng-submit="authTwoStepForm.$valid && auth(authModel)" api-form="authPromise" ng-if="!authed"> <div class="modal-body"> <p>Enter your master password to modify two-step login settings.</p> <div class="callout callout-danger validation-errors" ng-show="authTwoStepForm.$errors"> <h4>Errors have occurred</h4> <ul> <li ng-repeat="e in authTwoStepForm.$errors">{{e}}</li> </ul> </div> <div class="form-group" show-errors> <label for="masterPassword">Master Password</label> <input type="password" id="masterPassword" name="MasterPasswordHash" ng-model="authModel.masterPassword" class="form-control" required api-field /> </div> </div> <div class="modal-footer"> <button type="submit" class="btn btn-primary btn-flat" ng-disabled="authTwoStepForm.$loading"> <i class="fa fa-refresh fa-spin loading-icon" ng-show="authTwoStepForm.$loading"></i>Continue </button> <button type="button" class="btn btn-default btn-flat" ng-click="close()">Close</button> </div> </form> <form name="submitTwoStepForm" ng-submit="submitTwoStepForm.$valid && submit()" api-form="submitPromise" ng-if="authed" autocomplete="off"> <div class="modal-body"> <div class="callout callout-warning"> <h4><i class="fa fa-warning"></i> Warning <i class="fa fa-warning"></i></h4> <p> Due to platform limitations, FIDO U2F cannot be used on all bitwarden applications. You should enable another two-step login provider so that you can access your account when FIDO U2F cannot be used. </p> <p>Supported platforms:</p> <ul> <li> Web vault on a desktop/laptop with a U2F enabled browser (Chrome, Opera, Vivaldi, Brave, or Firefox with addon). </li> <li>Browser extensions on Chrome, Opera, Vivaldi, or Brave.</li> </ul> </div> <div ng-if="enabled"> <div class="callout callout-success"> <h4><i class="fa fa-check-circle"></i> Enabled</h4> <p>Two-step log via FIDO U2F is enabled on your account.</p> </div> </div> <div ng-if="!enabled"> <div class="callout callout-danger validation-errors" ng-show="submitTwoStepForm.$errors"> <h4>Errors have occurred</h4> <ul> <li ng-repeat="e in submitTwoStepForm.$errors">{{e}}</li> </ul> </div> <p>To add a new FIDO U2F Security Key to your account:</p> <ol> <li>Plug the security key into your computer's USB port.</li> <li>If the security key has a button, touch it.</li> </ol> <hr /> <div class="text-center"> <div ng-show="deviceListening"> <p><i class="fa fa-spin fa-spinner fa-2x"></i></p> <p>Waiting for you to touch the button on your security key...</p> </div> <div class="text-green" ng-show="deviceResponse"> <p><i class="fa fa-check-circle fa-2x"></i></p> <p>Success!</p> Click the "Enable" button below to enable this security key for two-step login. </div> <div class="text-red" ng-show="deviceError"> <p><i class="fa fa-warning fa-2x"></i></p> <p>Error!</p> <p>There was a problem reading the security key.</p> <button type="button" class="btn btn-default btn-flat" ng-click="readDevice()">Try again</button> </div> </div> </div> </div> <div class="modal-footer"> <button type="submit" class="btn btn-primary btn-flat" ng-disabled="(!enabled && !deviceResponse) || submitTwoStepForm.$loading"> <i class="fa fa-refresh fa-spin loading-icon" ng-show="submitTwoStepForm.$loading"></i> {{enabled ? 'Disable' : 'Enable'}} </button> <button type="button" class="btn btn-default btn-flat" ng-click="close()">Close</button> </div> </form>