You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@whimsical.apache.org by Sam Ruby <ru...@apache.org> on 2015/12/30 20:25:02 UTC
[whimsy.git] [1/2] Commit ec0715e: precheck userids before submission
Commit ec0715e45dfd8178ea45e295b7d89f098b3d5d07:
precheck userids before submission
Branch: refs/heads/secmail
Author: Sam Ruby <ru...@intertwingly.net>
Committer: Sam Ruby <ru...@intertwingly.net>
Pusher: rubys <ru...@apache.org>
------------------------------------------------------------
www/secmail/views/actions/check-id.json.rb | +++++++
www/secmail/views/forms/icla.js.rb | ++++++++++++++ -
------------------------------------------------------------
22 changes: 21 additions, 1 deletions.
------------------------------------------------------------
diff --git a/www/secmail/views/actions/check-id.json.rb b/www/secmail/views/actions/check-id.json.rb
new file mode 100644
index 0000000..afe364b
--- /dev/null
+++ b/www/secmail/views/actions/check-id.json.rb
@@ -0,0 +1,7 @@
+# check to see if an id is available
+
+if ASF::Person.new(@id).icla?
+ {message: 'userid is already taken'}
+else
+ {message: ''}
+end
diff --git a/www/secmail/views/forms/icla.js.rb b/www/secmail/views/forms/icla.js.rb
index f14c2f6..720268b 100644
--- a/www/secmail/views/forms/icla.js.rb
+++ b/www/secmail/views/forms/icla.js.rb
@@ -1,6 +1,7 @@
class ICLA < React
def initialize
@filed = false
+ @checked = nil
end
def render
@@ -48,7 +49,7 @@ def render
_tr do
_th 'User ID'
_td do
- _input name: 'user', value: @user
+ _input name: 'user', value: @user, onBlur: self.validate_userid
end
end
@@ -122,6 +123,18 @@ def file(event)
}
end
+ # validate userid is available
+ def validate_userid(event)
+ return unless @user and @user != @checked
+ input = event.target
+ HTTP.post('../../actions/check-id', id: @user).then {|result|
+ input.setCustomValidity(result.message)
+ @checked = @user
+ }.catch {|message|
+ alert message
+ }
+ end
+
# show new account request window with fields filled in
def request_account()
params = %w{email user pmc podling votelink}.map do |name|