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 :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
|
||||
|
||||
|
|
|
@ -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] }
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -21,6 +21,12 @@
|
|||
Email:
|
||||
%td
|
||||
= @admin_user.email
|
||||
%tr
|
||||
%td
|
||||
%b
|
||||
Username:
|
||||
%td
|
||||
= @admin_user.username
|
||||
%tr
|
||||
%td
|
||||
%b
|
||||
|
|
|
@ -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
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
|
||||
|
||||
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) }
|
||||
|
|
Loading…
Reference in a new issue