Commit 47234ab3 authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets

Validate username. Gitlab::Regex added

parent 5ed4e7e2
...@@ -19,7 +19,7 @@ class Namespace < ActiveRecord::Base ...@@ -19,7 +19,7 @@ class Namespace < ActiveRecord::Base
validates :name, presence: true, uniqueness: true validates :name, presence: true, uniqueness: true
validates :path, uniqueness: true, presence: true, length: { within: 1..255 }, 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" } message: "only letters, digits & '_' '-' '.' allowed. Letter should be first" }
validates :owner, presence: true validates :owner, presence: true
......
...@@ -59,7 +59,7 @@ class Project < ActiveRecord::Base ...@@ -59,7 +59,7 @@ class Project < ActiveRecord::Base
validates :description, length: { within: 0..2000 } validates :description, length: { within: 0..2000 }
validates :name, presence: true, length: { within: 0..255 } validates :name, presence: true, length: { within: 0..255 }
validates :path, 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" } message: "only letters, digits & '_' '-' '.' allowed. Letter should be first" }
validates :issues_enabled, :wall_enabled, :merge_requests_enabled, validates :issues_enabled, :wall_enabled, :merge_requests_enabled,
:wiki_enabled, inclusion: { in: [true, false] } :wiki_enabled, inclusion: { in: [true, false] }
......
...@@ -41,8 +41,8 @@ class User < ActiveRecord::Base ...@@ -41,8 +41,8 @@ class User < ActiveRecord::Base
attr_accessible :email, :password, :password_confirmation, :remember_me, :bio, :name, :username, attr_accessible :email, :password, :password_confirmation, :remember_me, :bio, :name, :username,
:skype, :linkedin, :twitter, :dark_scheme, :theme_id, :force_random_password, :skype, :linkedin, :twitter, :dark_scheme, :theme_id, :force_random_password,
:extern_uid, :provider, :as => [:default, :admin] :extern_uid, :provider, as: [:default, :admin]
attr_accessible :projects_limit, :as => :admin attr_accessible :projects_limit, as: :admin
attr_accessor :force_random_password attr_accessor :force_random_password
...@@ -63,9 +63,12 @@ class User < ActiveRecord::Base ...@@ -63,9 +63,12 @@ class User < ActiveRecord::Base
has_many :assigned_merge_requests, class_name: "MergeRequest", foreign_key: :assignee_id, dependent: :destroy has_many :assigned_merge_requests, class_name: "MergeRequest", foreign_key: :assignee_id, dependent: :destroy
validates :bio, length: { within: 0..255 } 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 :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_validation :generate_password, on: :create
before_save :ensure_authentication_token before_save :ensure_authentication_token
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
= form_tag admin_users_path, method: :get, class: 'form-inline' do = form_tag admin_users_path, method: :get, class: 'form-inline' do
= text_field_tag :name, params[:name], class: "xlarge" = text_field_tag :name, params[:name], class: "xlarge"
= submit_tag "Search", class: "btn submit primary" = submit_tag "Search", class: "btn submit primary"
%ul.nav.nav-pills %ul.nav.nav-tabs
%li{class: "#{'active' unless params[:filter]}"} %li{class: "#{'active' unless params[:filter]}"}
= link_to "Active", admin_users_path = link_to "Active", admin_users_path
%li{class: "#{'active' if params[:filter] == "admins"}"} %li{class: "#{'active' if params[:filter] == "admins"}"}
...@@ -23,24 +23,25 @@ ...@@ -23,24 +23,25 @@
%thead %thead
%th Admin %th Admin
%th Name %th Name
%th Username
%th Email %th Email
%th Projects %th Projects
%th Edit %th Edit
%th Blocked
%th.cred Danger Zone! %th.cred Danger Zone!
- @admin_users.each do |user| - @admin_users.each do |user|
%tr %tr
%td= check_box_tag "admin", 1, user.admin, disabled: :disabled %td= check_box_tag "admin", 1, user.admin, disabled: :disabled
%td= link_to user.name, [:admin, user] %td= link_to user.name, [:admin, user]
%td= user.username
%td= user.email %td= user.email
%td= user.users_projects.count %td= user.users_projects.count
%td= link_to 'Edit', edit_admin_user_path(user), id: "edit_#{dom_id(user)}", class: "btn small" %td= link_to 'Edit', edit_admin_user_path(user), id: "edit_#{dom_id(user)}", class: "btn small"
%td %td.bgred
- if user.blocked - if user.blocked
= link_to 'Unblock', unblock_admin_user_path(user), method: :put, class: "btn small success" = link_to 'Unblock', unblock_admin_user_path(user), method: :put, class: "btn small success"
- else - else
= link_to 'Block', block_admin_user_path(user), confirm: 'USER WILL BE BLOCKED! Are you sure?', method: :put, class: "btn small danger" = 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" = paginate @admin_users, theme: "admin"
...@@ -21,6 +21,12 @@ ...@@ -21,6 +21,12 @@
Email: Email:
%td %td
= @admin_user.email = @admin_user.email
%tr
%td
%b
Username:
%td
= @admin_user.username
%tr %tr
%td %td
%b %b
......
...@@ -42,11 +42,11 @@ ...@@ -42,11 +42,11 @@
.clearfix .clearfix
= f.label :password = f.label :password
.input= f.password_field :password .input= f.password_field :password, required: true
.clearfix .clearfix
= f.label :password_confirmation = f.label :password_confirmation
.input .input
= f.password_field :password_confirmation = f.password_field :password_confirmation, required: true
.clearfix .clearfix
.input .input
= f.submit 'Save password', class: "btn save-btn" = f.submit 'Save password', class: "btn save-btn"
...@@ -62,7 +62,7 @@ ...@@ -62,7 +62,7 @@
.padded .padded
= f.label :username = f.label :username
.input .input
= f.text_field :username = f.text_field :username, required: true
.input .input
= f.submit 'Save username', class: "btn save-btn" = f.submit 'Save username', class: "btn save-btn"
......
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
...@@ -58,6 +58,7 @@ describe User do ...@@ -58,6 +58,7 @@ describe User do
end end
describe 'validations' do describe 'validations' do
it { should validate_presence_of(:username) }
it { should validate_presence_of(:projects_limit) } it { should validate_presence_of(:projects_limit) }
it { should validate_numericality_of(:projects_limit) } it { should validate_numericality_of(:projects_limit) }
it { should allow_value(0).for(:projects_limit) } it { should allow_value(0).for(:projects_limit) }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment