diff --git a/app.rb b/app.rb index ff802ad3..429c7475 100644 --- a/app.rb +++ b/app.rb @@ -464,6 +464,25 @@ get '/new' do erb :'new' end +post '/create_validate' do + content_type :json + + if !params[:field].match /username|password|email|new_tags_string/ + return {error: 'not a valid field'}.to_json + end + + site = Site.new(params[:field] => params[:value]) + site.valid? + + field_sym = params[:field].to_sym + + if site.errors[field_sym] + return {error: site.errors[field_sym].first}.to_json + end + + {result: 'ok'}.to_json +end + post '/create' do require_unbanned_ip dashboard_if_signed_in diff --git a/models/site.rb b/models/site.rb index 3fc817a3..46ffc148 100644 --- a/models/site.rb +++ b/models/site.rb @@ -646,13 +646,15 @@ class Site < Sequel::Model errors.add :username, 'A valid user/site name is required.' end - # TODO regex fails for usernames <= 2 chars, tempfix for now. - if new? && values[:username].length > 2 && !values[:username].match(VALID_HOSTNAME) - errors.add :username, 'A valid user/site name is required.' - end + if new? && !values[:username].nil? && !values[:username].empty? + # TODO regex fails for usernames <= 2 chars, tempfix for now. + if new? && values[:username].nil? || (values[:username].length > 2 && !values[:username].match(VALID_HOSTNAME)) + errors.add :username, 'A valid user/site name is required.' + end - if values[:username].length > 32 - errors.add :username, 'User/site name cannot exceed 32 characters.' + if values[:username].length > 32 + errors.add :username, 'User/site name cannot exceed 32 characters.' + end end # Check that email has been provided diff --git a/views/index.erb b/views/index.erb index beb98ea4..c4ccfb98 100644 --- a/views/index.erb +++ b/views/index.erb @@ -154,27 +154,26 @@ Get Started - <% else %>

Sign up for free


- + - +
- +
- +
@@ -334,5 +333,16 @@ + \ No newline at end of file