Add username format restrictions
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Râu Cao 2023-02-19 12:04:24 +08:00
parent df3ec9f90a
commit 9407c7a94d
Signed by: raucao
GPG Key ID: 15E65F399D084BA9
2 changed files with 13 additions and 0 deletions

View File

@ -12,6 +12,13 @@ class User < ApplicationRecord
validates_uniqueness_of :cn validates_uniqueness_of :cn
validates_length_of :cn, :minimum => 3 validates_length_of :cn, :minimum => 3
validates_format_of :cn, with: /\A([a-z0-9\-])*\z/,
if: Proc.new{ |u| u.cn.present? },
message: "is invalid. Please use only letters, numbers and -"
validates_format_of :cn, without: /\A-/,
if: Proc.new{ |u| u.cn.present? },
message: "is invalid. Usernames need to start with a letter."
validates_uniqueness_of :email validates_uniqueness_of :email
validates :email, email: true validates :email, email: true

View File

@ -71,6 +71,12 @@ RSpec.describe "Signup", type: :feature do
fill_in "user_cn", with: "t" fill_in "user_cn", with: "t"
click_button "Continue" click_button "Continue"
expect(page).to have_content("Username is too short") expect(page).to have_content("Username is too short")
fill_in "user_cn", with: "-tony"
click_button "Continue"
expect(page).to have_content("Username is invalid")
fill_in "user_cn", with: "$atoshi"
click_button "Continue"
expect(page).to have_content("Username is invalid")
fill_in "user_cn", with: "jimmy" fill_in "user_cn", with: "jimmy"
click_button "Continue" click_button "Continue"
expect(page).to have_content("Username has already been taken") expect(page).to have_content("Username has already been taken")