138 lines
11 KiB
Plaintext
138 lines
11 KiB
Plaintext
.header
|
|
.header-content
|
|
%nav.animated-fast.fadeInDown
|
|
%a.navbar-brand{"ui-sref" => "home"}
|
|
.header-name
|
|
neeto
|
|
%span.tagline{"ng-if" => "!ctrl.user.id", "ng-cloak" => "true"} secure code box for developers
|
|
|
|
.menu.navbar-text.navbar-right
|
|
.items
|
|
.item.account
|
|
%button.btn.dark-button.advanced-brand{"ng-click" => "ctrl.accountMenuPressed()"}
|
|
%div{"ng-if" => "ctrl.user.email"} {{ctrl.user.email}}
|
|
%div{"ng-if" => "!ctrl.user.email"} Sign in or Register
|
|
.panel.panel-default.account-panel{"ng-if" => "ctrl.showAccountMenu"}
|
|
.panel-body
|
|
.account-items
|
|
.account-item.registration-login{"ng-if" => "!ctrl.user.email"}
|
|
.meta-container
|
|
.title Sign in or Register
|
|
.desc
|
|
%form.account-form{'name' => "loginForm"}
|
|
.form-group.has-feedback
|
|
%input.form-control.login-input{:autofocus => 'autofocus', :name => 'email', :placeholder => 'Email', :required => true, :type => 'email', 'ng-model' => 'ctrl.loginData.email'}
|
|
.form-group.has-feedback
|
|
%input.form-control.login-input{:placeholder => 'Password', :name => 'password', :required => true, :type => 'password', 'ng-model' => 'ctrl.loginData.user_password'}
|
|
.checkbox{"ng-if" => "ctrl.hasLocalData()"}
|
|
%label
|
|
%input{"type" => "checkbox", "ng-model" => "ctrl.user.shouldMerge", "ng-bind" => "true", "ng-change" => "ctrl.mergeLocalChanged()"}
|
|
Merge local notes
|
|
%button.btn.dark-button.half-button{"ng-click" => "ctrl.loginSubmitPressed()", "data-style" => "expand-right", "data-size" => "s", "state" => "buttonState"}
|
|
%span Sign In
|
|
%button.btn.dark-button.half-button{"ng-click" => "ctrl.submitRegistrationForm()", "data-style" => "expand-right", "data-size" => "s", "state" => "buttonState"}
|
|
%span Register
|
|
%br
|
|
.login-forgot
|
|
%a.btn.btn-link{"ng-click" => "ctrl.showResetForm = !ctrl.showResetForm"} I forgot my password
|
|
.panel-status-text{"ng-if" => "ctrl.loginData.status", "style" => "font-size: 14px;"} {{ctrl.loginData.status}}
|
|
|
|
%form{"style" => "margin-top: 20px;", "ng-if" => "ctrl.showResetForm", "ng-init" => "ctrl.resetData = {}", 'ng-submit' => 'ctrl.forgotPasswordSubmit()', 'name' => "resetForm"}
|
|
.form-group.has-feedback
|
|
%input.form-control.login-input{:autofocus => 'autofocus', :name => 'email', :placeholder => 'Email', :required => true, :type => 'email', 'ng-model' => 'ctrl.resetData.email'}
|
|
%button.btn.dark-button.btn-block{:type => 'submit', "data-style" => "expand-right", "data-size" => "s", "state" => "buttonState"}
|
|
%span Send Reset Email
|
|
.panel-status-text{"ng-if" => "ctrl.resetData.response", "style" => "font-size: 14px;"}
|
|
{{ctrl.resetData.response}}
|
|
|
|
.account-item{"ng-if" => "ctrl.user.email"}
|
|
.icon-container
|
|
%img.icon{"lazy-img" => "assets/encryption.png"}
|
|
.meta-container
|
|
.title Local Encryption
|
|
.desc Encrypt notes locally before sending to server. Neither the server owner nor an intrusive government can decrypt your locally encrypted notes.
|
|
.action-container
|
|
%span.status-title Status:
|
|
{{ctrl.user.local_encryption_enabled ? 'enabled' : 'disabled'}}
|
|
{{" | "}}
|
|
%a{"ng-click" => "ctrl.toggleEncryptionStatus()"}
|
|
{{ctrl.user.local_encryption_enabled ? 'Disable' : 'Enable'}}
|
|
.subtext{"ng-if" => "ctrl.user.local_encryption_enabled"}
|
|
{{ctrl.encryptionStatusForNotes()}} (shared notes not encrypted)
|
|
.encryption-confirmation{"ng-if" => "ctrl.encryptionConfirmation"}
|
|
%div{"ng-if" => "ctrl.user.local_encryption_enabled"}
|
|
%p Are you sure you want to disable local encryption? All currently encrypted notes will be decrypted locally, then sent back to Neeto servers over a secure connection.
|
|
%div{"ng-if" => "!ctrl.user.local_encryption_enabled"}
|
|
%p We're glad you're taking privacy and security into your own hands. There are a couple things you should note about moving to local encryption:
|
|
%ul
|
|
%li
|
|
If you forget your password, there is no way to reset it or recover it. Your data will be forever lost without your password.
|
|
(You can however still change your password, as long as you know your current password.)
|
|
%li
|
|
The strength of the encryption is tied to the strength of your password. If you take your security seriously, you should use a password of at least 32 characters long.
|
|
%p Are you sure you want to enable local encryption?
|
|
.buttons
|
|
%a.cancel{"ng-click" => "ctrl.cancelEncryptionChange()"} Cancel
|
|
%a.confirm{"ng-click" => "ctrl.confirmEncryptionChange()"} Confirm
|
|
.account-item{"ng-if" => "ctrl.user.email"}
|
|
.icon-container
|
|
%img.icon.archive{"lazy-img" => "assets/archive.png"}
|
|
.meta-container
|
|
.title Data Archives
|
|
.desc Note: data archives that you download using the link below are decrypted before save. You should take care to store them in a safe location.
|
|
.action-container
|
|
%a#download-archive{"ng-click" => "ctrl.downloadDataArchive()"} Download Latest Data Archive
|
|
|
|
.account-item
|
|
.meta-container
|
|
.title Server
|
|
.desc Use a custom Neeto server to store and retrieve your account data.
|
|
.action-container
|
|
%form.account-form{'ng-submit' => 'ctrl.changeServer()', 'name' => "serverChangeForm"}
|
|
.form-group.has-feedback
|
|
%input.form-control{:name => 'server', :placeholder => 'Server URL', :required => true, :type => 'text', 'ng-model' => 'ctrl.serverData.url'}
|
|
%button.btn.dark-button.btn-block{:type => 'submit', "data-style" => "expand-right", "data-size" => "s", "state" => "buttonState"}
|
|
%span.ladda-label Change Server
|
|
|
|
.links{"ng-if" => "ctrl.user.email"}
|
|
.link-item
|
|
%a{"ng-click" => "ctrl.changePasswordPressed()"} Change Password
|
|
%form.account-form{"ng-if" => "ctrl.showNewPasswordForm", 'ng-submit' => 'ctrl.submitPasswordChange()', 'name' => "passwordChangeForm"}
|
|
.form-group.has-feedback
|
|
%input.form-control.login-input{:autofocus => 'autofocus', :name => 'current', :placeholder => 'Current password', :required => true, :type => 'password', 'ng-model' => 'ctrl.passwordChangeData.current_password'}
|
|
.form-group.has-feedback
|
|
%input.form-control.login-input{:placeholder => 'New password', :name => 'password', :required => true, :type => 'password', 'ng-model' => 'ctrl.passwordChangeData.new_password', "autocomplete" => "new-password"}
|
|
.form-group.has-feedback
|
|
%input.form-control.login-input{:placeholder => 'Confirm password', :name => 'password', :required => true, :type => 'password', 'ng-model' => 'ctrl.passwordChangeData.new_password_confirmation', "autocomplete" => "new-password"}
|
|
%button.btn.dark-button.btn-block{:type => 'submit', "data-style" => "expand-right", "data-size" => "s", "state" => "buttonState"}
|
|
%span.ladda-label Change Password
|
|
.panel-status-text{"ng-if" => "ctrl.passwordChangeData.status", "style" => "font-size: 14px;"}
|
|
{{ctrl.passwordChangeData.status}}
|
|
.link-item
|
|
%a{"ng-click" => "ctrl.signOutPressed()"} Sign Out
|
|
|
|
.item
|
|
%a.menuItem{"ng-click" => "ctrl.showFaq = !ctrl.showFaq"}
|
|
faq
|
|
.panel.panel-default.faq-panel{"ng-if" => "ctrl.showFaq"}
|
|
.panel-body
|
|
.faq-item
|
|
%strong.question What is Neeto?
|
|
%p.answer Neeto is a secure code box for developers to store common commands and useful notes.
|
|
.faq-item
|
|
%strong.question What privacy features does Neeto have?
|
|
%p.answer
|
|
We don't want your data. We really don't. Storing your data in our database is a liability for us. But there's a tradeoff between privacy and convenience. We try to be convenient but also focus highly on privacy and security.
|
|
%ul
|
|
%li Neeto can be used locally, so that no data is sent to our servers whatsoever. This means however that your data is controlled by your browser, and can vanish without notice.
|
|
%li When signed in, your data is always sent through a secure connection to Neeto servers.
|
|
%li When the server receives your data, it is encrypted before being saved.
|
|
%li Your password is never sent to Neeto servers. Instead, we derive a key from your password and send that instead. This way, Neeto can never know the original contents of your password.
|
|
%li With Neeto Advanced, you can enable Local Encryption. This encrypts your notes locally on your machine <strong>before</strong> sending to Neeto servers. This means that technically even Neeto couldn't see the contents of your notes (and for that matter any government eavesdroppers.)
|
|
%li Neeto does not use Google Analytics, a seemingly harmless tool that Google uses to track your web usage patterns and sells it to advertisers.
|
|
.faq-item
|
|
%strong.question How does local encryption work?
|
|
%p.answer Users who opt into using local encryption can add an additional layer of security over their notes. These notes will be encrypted locally on your machine before being sent over the wire. This means that when Neeto receives your notes, we have no idea what the contents are. And if a government ever forces us to give up your data, we couldn't decrypt it for them even if we wanted to.
|
|
%p This encryption is based on your password, which is also never sent over the air. The strength of this encryption is directly tied to the strength of your password.
|
|
|