Validate username. Gitlab::Regex added
This commit is contained in:
parent
5ed4e7e216
commit
47234ab367
8 changed files with 43 additions and 13 deletions
|
@ -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
|
||||||
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
|
||||||
|
|
||||||
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
|
||||||
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 @@
|
||||||
= 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 @@
|
||||||
%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 @@
|
||||||
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 @@
|
||||||
|
|
||||||
.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 @@
|
||||||
.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"
|
||||||
|
|
||||||
|
|
19
lib/gitlab/regex.rb
Normal file
19
lib/gitlab/regex.rb
Normal 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
|
|
@ -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) }
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue