summaryrefslogtreecommitdiff
path: root/users
diff options
context:
space:
mode:
authorjessib <jessib@leap.se>2012-11-19 13:33:23 -0800
committerjessib <jessib@leap.se>2012-11-19 13:33:23 -0800
commit347eb4b20cbe740485dd9d1d7220c01eef659920 (patch)
treeb004aaede235d7c6d2bbd63b8bed5f42d2bce290 /users
parent341da14b031c3c27e687c82f479624217c1dbddd (diff)
parent172317b35d9c7ae26a6bf4836feace7b509644a6 (diff)
Merge branch 'develop' into help_develop
Conflicts: app/assets/javascripts/application.js ui_dependencies.rb
Diffstat (limited to 'users')
-rw-r--r--users/app/assets/javascripts/users.js.coffee56
-rw-r--r--users/app/models/user.rb11
-rw-r--r--users/app/views/users/new.html.haml4
-rwxr-xr-xusers/test/integration/api/python/flow_with_srp.py2
4 files changed, 41 insertions, 32 deletions
diff --git a/users/app/assets/javascripts/users.js.coffee b/users/app/assets/javascripts/users.js.coffee
index 24302fe..ab437f6 100644
--- a/users/app/assets/javascripts/users.js.coffee
+++ b/users/app/assets/javascripts/users.js.coffee
@@ -1,45 +1,47 @@
-# Place all the behaviors and hooks related to the matching controller here.
-# All this logic will automatically be available in application.js.
-# You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/
-#
+preventDefault = (event) ->
+ event.preventDefault()
-validate_password = (event) ->
-
- password = $('#srp_password').val()
- confirmation = $('#srp_password_confirmation').val()
- login = $('#srp_username').val()
-
- if password != confirmation
- alert "Password and Confirmation do not match!"
- $('#srp_password').focus()
- return false
- if password == login
- alert "Password and Login may not match!"
- $('#srp_password').focus()
- return false
- if password.length < 8
- alert "Password needs to be at least 8 characters long!"
- $('#srp_password').focus()
- return false
+validOrAbort = (event) ->
+ errors = {}
+
+ abortIfErrors = ->
+ return if $.isEmptyObject(errors)
+ # we're relying on client_side_validations here instead of printing
+ # our own errors. This gets us translatable error messages.
+ $('.control-group.error input, .control-group.error select, control-group.error textarea').first().focus()
+ event.stopImmediatePropagation()
+
+ validatePassword = ->
+ password = $('#srp_password').val()
+ confirmation = $('#srp_password_confirmation').val()
+ login = $('#srp_username').val()
+
+ if password != confirmation
+ errors.password_confirmation = "Confirmation does not match!"
+ if password == login
+ errors.password = "Password and Login may not match!"
+ if password.length < 8
+ errors.password = "Password needs to be at least 8 characters long!"
+
+ validatePassword()
+ abortIfErrors()
- return true
-
signup = (event) ->
srp = new SRP(jqueryRest())
srp.register ->
window.location = '/'
- false
login = (event) ->
srp = new SRP(jqueryRest())
srp.identify ->
window.location = '/'
- false
$(document).ready ->
- $('#new_user').submit validate_password
+ $('#new_user').submit preventDefault
+ $('#new_user').submit validOrAbort
$('#new_user').submit signup
+ $('#new_session').submit preventDefault
$('#new_session').submit login
diff --git a/users/app/models/user.rb b/users/app/models/user.rb
index 0f5d650..824c439 100644
--- a/users/app/models/user.rb
+++ b/users/app/models/user.rb
@@ -16,8 +16,11 @@ class User < CouchRest::Model::Base
:message => "Only letters, digits and _ allowed" }
validates :password_salt, :password_verifier,
- :format => { :with => /\A[\dA-Fa-f]+\z/,
- :message => "Only hex numbers allowed" }
+ :format => { :with => /\A[\dA-Fa-f]+\z/, :message => "Only hex numbers allowed" }
+
+ validates :password, :presence => true,
+ :confirmation => true,
+ :format => { :with => /.{8}.*/, :message => "needs to be at least 8 characters long" }
timestamps!
@@ -71,4 +74,8 @@ class User < CouchRest::Model::Base
APP_CONFIG['admins'].include? self.login
end
+ protected
+ def password
+ password_verifier
+ end
end
diff --git a/users/app/views/users/new.html.haml b/users/app/views/users/new.html.haml
index 835e99a..be14c52 100644
--- a/users/app/views/users/new.html.haml
+++ b/users/app/views/users/new.html.haml
@@ -1,9 +1,9 @@
.span8.offset2
%h2=t :signup
- = simple_form_for @user, :html => {:class => 'form-horizontal'} do |f|
+ = simple_form_for @user, :validate => true, :html => {:class => 'form-horizontal'} do |f|
%legend=t :signup_message
= f.input :login, :input_html => { :id => :srp_username }
- = f.input :password, :required => true, :input_html => { :id => :srp_password }
+ = f.input :password, :required => true, :validate => true, :input_html => { :id => :srp_password }
= f.input :password_confirmation, :required => true, :input_html => { :id => :srp_password_confirmation }
= f.button :submit, :value => t(:signup), :class => 'btn-primary'
= link_to t(:cancel), root_url, :class => :btn
diff --git a/users/test/integration/api/python/flow_with_srp.py b/users/test/integration/api/python/flow_with_srp.py
index 0a11aec..b599252 100755
--- a/users/test/integration/api/python/flow_with_srp.py
+++ b/users/test/integration/api/python/flow_with_srp.py
@@ -16,7 +16,7 @@ def id_generator(size=6, chars=string.ascii_uppercase + string.digits):
return ''.join(random.choice(chars) for x in range(size))
# using globals for a start
-server = 'http://springbok/1/'
+server = 'http://springbok.leap.se/1/'
login = id_generator()
password = id_generator() + id_generator()