From c09542a80ac08bd9c8f7c2a19c399654394d0eb2 Mon Sep 17 00:00:00 2001 From: joshua stein Date: Tue, 18 Mar 2014 00:57:13 -0500 Subject: [PATCH] enforce a maximum username length of 25 --- app/models/user.rb | 9 ++++++++- app/views/settings/index.html.erb | 2 +- app/views/signup/invited.html.erb | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/app/models/user.rb b/app/models/user.rb index c1e1a84..c7e96eb 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -27,7 +27,8 @@ class User < ActiveRecord::Base validates :password, :presence => true, :on => :create - validates :username, :format => { :with => /\A[A-Za-z0-9][A-Za-z0-9_-]*\Z/ }, + validates :username, + :format => { :with => /\A[A-Za-z0-9][A-Za-z0-9_-]{0,24}\Z/ }, :uniqueness => { :case_sensitive => false } validates_each :username do |record,attr,value| @@ -56,6 +57,12 @@ class User < ActiveRecord::Base end end + def self.username_regex + User.validators_on(:username).select{|v| + v.class == ActiveModel::Validations::FormatValidator }.first. + options[:with].inspect + end + def as_json(options = {}) h = super(:only => [ :username, diff --git a/app/views/settings/index.html.erb b/app/views/settings/index.html.erb index 640f50b..413c56d 100644 --- a/app/views/settings/index.html.erb +++ b/app/views/settings/index.html.erb @@ -14,7 +14,7 @@ <%= f.label :username, "Username:", :class => "required" %> <%= f.text_field :username, :size => 15 %> - [A-Za-z0-9][A-Za-z0-9_-]* + <%= User.username_regex %> diff --git a/app/views/signup/invited.html.erb b/app/views/signup/invited.html.erb index ada6ec1..d248014 100644 --- a/app/views/signup/invited.html.erb +++ b/app/views/signup/invited.html.erb @@ -28,7 +28,7 @@ <%= f.label :username, "Username:", :class => "required" %> <%= f.text_field :username, :size => 30 %> - [A-Za-z0-9][A-Za-z0-9_-]* + <%= User.username_regex %>