aboutsummaryrefslogtreecommitdiffstats
path: root/static/js/register.coffee
diff options
context:
space:
mode:
Diffstat (limited to 'static/js/register.coffee')
-rw-r--r--static/js/register.coffee53
1 files changed, 53 insertions, 0 deletions
diff --git a/static/js/register.coffee b/static/js/register.coffee
new file mode 100644
index 00000000..98842328
--- /dev/null
+++ b/static/js/register.coffee
@@ -0,0 +1,53 @@
+g = this
+
+$(->
+ $('#username').focus()
+
+ $('#username').blur(->
+ $(this).parent().next('.alert').remove()
+
+ if /^[a-z]+$/.test($(this).val())
+ $(this).parent().removeClass('has-error')
+ else
+ $(this).parent().addClass('has-error')
+ $(this).parent().after('<div class="alert alert-danger">Username must be lowercase</div>')
+ )
+
+ $('#password').blur(->
+ $('#confirm').blur()
+ $(this).parent().next('.alert').remove()
+ )
+
+ $('#confirm').blur(->
+ return if $(this).val() == ''
+ $(this).parent().next('.alert').remove()
+
+ if $('#password').val() == $('#confirm').val()
+ $('#confirm').parent().removeClass('has-error')
+ else
+ $('#confirm').parent().addClass('has-error')
+ $('#confirm').parent().after('<div class="alert alert-danger">Passwords don\'t match</div>')
+ )
+
+ $('#email').blur(->
+ return if $(this).val() == ''
+ $(this).parent().next('.alert').remove()
+ if validateEmail($(this).val())
+ $(this).parent().removeClass('has-error')
+ else
+ $(this).parent().addClass('has-error')
+ $(this).parent().after('<div class="alert alert-danger">Invalid email</div>')
+ )
+
+ $('#register').submit(->
+ $('.form-control').blur()
+ if $('.has-error').length > 0
+ $('.has-error').effect('shake', 500)
+ return false
+ else
+ mnemonic = bip39.generateMnemonic()
+ key = bitcoin.HDNode.fromSeedBuffer(bip39.mnemonicToSeed(mnemonic)).deriveHardened(44).deriveHardened(0)
+ $('#pubkey').val(key.neutered().toString())
+ $('#privkey').val(CryptoJS.AES.encrypt(key.toString(), $('#password').val()).toString())
+ )
+)