Validate username. Gitlab::Regex added

This commit is contained in:
Dmitriy Zaporozhets 2012-11-28 06:14:05 +03:00
parent 5ed4e7e216
commit 47234ab367
8 changed files with 43 additions and 13 deletions

View file

@ -19,7 +19,7 @@ class Namespace < ActiveRecord::Base
validates :name, presence: true, uniqueness: true
validates :path, uniqueness: true, presence: true, length: { within: 1..255 },
format: { with: /\A[a-zA-Z][a-zA-Z0-9_\-\.]*\z/,
format: { with: Gitlab::Regex.path_regex,
message: "only letters, digits & '_' '-' '.' allowed. Letter should be first" }
validates :owner, presence: true

View file

@ -59,7 +59,7 @@ class Project < ActiveRecord::Base
validates :description, length: { within: 0..2000 }
validates :name, presence: true, length: { within: 0..255 }
validates :path, presence: true, length: { within: 0..255 },
format: { with: /\A[a-zA-Z][a-zA-Z0-9_\-\.]*\z/,
format: { with: Gitlab::Regex.path_regex,
message: "only letters, digits & '_' '-' '.' allowed. Letter should be first" }
validates :issues_enabled, :wall_enabled, :merge_requests_enabled,
:wiki_enabled, inclusion: { in: [true, false] }

View file

@ -41,8 +41,8 @@ class User < ActiveRecord::Base
attr_accessible :email, :password, :password_confirmation, :remember_me, :bio, :name, :username,
:skype, :linkedin, :twitter, :dark_scheme, :theme_id, :force_random_password,
:extern_uid, :provider, :as => [:default, :admin]
attr_accessible :projects_limit, :as => :admin
:extern_uid, :provider, as: [:default, :admin]
attr_accessible :projects_limit, as: :admin
attr_accessor :force_random_password
@ -63,9 +63,12 @@ class User < ActiveRecord::Base
has_many :assigned_merge_requests, class_name: "MergeRequest", foreign_key: :assignee_id, dependent: :destroy
validates :bio, length: { within: 0..255 }
validates :extern_uid, :allow_blank => true, :uniqueness => {:scope => :provider}
validates :extern_uid, allow_blank: true, uniqueness: {scope: :provider}
validates :projects_limit, presence: true, numericality: {greater_than_or_equal_to: 0}
validates :username, presence: true
validates :username, presence: true, uniqueness: true,
format: { with: Gitlab::Regex.username_regex,
message: "only letters, digits & '_' '-' '.' allowed. Letter should be first" }
before_validation :generate_password, on: :create
before_save :ensure_authentication_token

View file

@ -6,7 +6,7 @@
= form_tag admin_users_path, method: :get, class: 'form-inline' do
= text_field_tag :name, params[:name], class: "xlarge"
= submit_tag "Search", class: "btn submit primary"
%ul.nav.nav-pills
%ul.nav.nav-tabs
%li{class: "#{'active' unless params[:filter]}"}
= link_to "Active", admin_users_path
%li{class: "#{'active' if params[:filter] == "admins"}"}
@ -23,24 +23,25 @@
%thead
%th Admin
%th Name
%th Username
%th Email
%th Projects
%th Edit
%th Blocked
%th.cred Danger Zone!
- @admin_users.each do |user|
%tr
%td= check_box_tag "admin", 1, user.admin, disabled: :disabled
%td= link_to user.name, [:admin, user]
%td= user.username
%td= user.email
%td= user.users_projects.count
%td= link_to 'Edit', edit_admin_user_path(user), id: "edit_#{dom_id(user)}", class: "btn small"
%td
%td.bgred
- if user.blocked
= link_to 'Unblock', unblock_admin_user_path(user), method: :put, class: "btn small success"
- else
= link_to 'Block', block_admin_user_path(user), confirm: 'USER WILL BE BLOCKED! Are you sure?', method: :put, class: "btn small danger"
%td.bgred= link_to 'Destroy', [:admin, user], confirm: "USER #{user.name} WILL BE REMOVED! Are you sure?", method: :delete, class: "btn small danger"
= link_to 'Destroy', [:admin, user], confirm: "USER #{user.name} WILL BE REMOVED! Are you sure?", method: :delete, class: "btn small danger"
= paginate @admin_users, theme: "admin"

View file

@ -21,6 +21,12 @@
Email:
%td
= @admin_user.email
%tr
%td
%b
Username:
%td
= @admin_user.username
%tr
%td
%b

View file

@ -42,11 +42,11 @@
.clearfix
= f.label :password
.input= f.password_field :password
.input= f.password_field :password, required: true
.clearfix
= f.label :password_confirmation
.input
= f.password_field :password_confirmation
= f.password_field :password_confirmation, required: true
.clearfix
.input
= f.submit 'Save password', class: "btn save-btn"
@ -62,7 +62,7 @@
.padded
= f.label :username
.input
= f.text_field :username
= f.text_field :username, required: true
.input
= f.submit 'Save username', class: "btn save-btn"

19
lib/gitlab/regex.rb Normal file
View file

@ -0,0 +1,19 @@
module Gitlab
module Regex
extend self
def username_regex
default_regex
end
def path_regex
default_regex
end
protected
def default_regex
/\A[a-zA-Z][a-zA-Z0-9_\-\.]*\z/
end
end
end

View file

@ -58,6 +58,7 @@ describe User do
end
describe 'validations' do
it { should validate_presence_of(:username) }
it { should validate_presence_of(:projects_limit) }
it { should validate_numericality_of(:projects_limit) }
it { should allow_value(0).for(:projects_limit) }