diff --git a/app/models/user.rb b/app/models/user.rb index a97b37df..46adacff 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -29,11 +29,11 @@ class User < ActiveRecord::Base SCREEN_NAME_REGEX = /\A[a-zA-Z0-9_]{1,16}\z/ WEBSITE_REGEX = /https?:\/\/([A-Za-z.\-]+)\/?(?:.*)/i - validates :screen_name, presence: true, format: { with: SCREEN_NAME_REGEX }, uniqueness: { case_sensitive: false }#, - #exclusion: { in: %w(justask_admin retrospring_admin admin justask retrospring support about public - # notifications inbox sign_in sign_up sidekiq moderation moderator mod administrator - # siteadmin site_admin), - # message: "%{value} is reserved." } + before_validation do + screen_name.strip! + end + + validates :screen_name, presence: true, format: { with: SCREEN_NAME_REGEX }, uniqueness: { case_sensitive: false }, screen_name: true validates :display_name, length: { maximum: 50 } validates :bio, length: { maximum: 200 } diff --git a/app/validators/screen_name_validator.rb b/app/validators/screen_name_validator.rb new file mode 100644 index 00000000..e0158662 --- /dev/null +++ b/app/validators/screen_name_validator.rb @@ -0,0 +1,11 @@ +class ScreenNameValidator < ActiveModel::EachValidator + FORBIDDEN_SCREEN_NAMES = %w(justask_admin retrospring_admin admin justask retrospring support about public + notifications inbox sign_in sign_up sidekiq moderation moderator mod administrator + siteadmin site_admin help retro_spring retroospring retrosprlng niisding nllsding) + + def validate_each(record, attribute, value) + if FORBIDDEN_SCREEN_NAMES.include? value.downcase + record.errors[attribute] << "Thou shalt not use this username! Please choose another one." + end + end +end \ No newline at end of file diff --git a/app/views/static/about.html.haml b/app/views/static/about.html.haml index c814733f..b2ad025e 100644 --- a/app/views/static/about.html.haml +++ b/app/views/static/about.html.haml @@ -107,6 +107,6 @@ %ul.about--moderator - User.where(supporter: true).each do |sup| %a{href: show_user_profile_path(sup.screen_name), title: sup.screen_name, data: { toggle: :tooltip, placement: :top }} - %img.img-rounded.answerbox--img-small{src: sup.profile_picture_url(:medium)} + %img.img-rounded.answerbox--img-small{src: sup.profile_picture.url(:medium)} = render "shared/links" diff --git a/config/application.rb b/config/application.rb index 21270043..e30ee771 100644 --- a/config/application.rb +++ b/config/application.rb @@ -19,5 +19,6 @@ module Justask # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded. # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s] # config.i18n.default_locale = :de + config.autoload_paths += %W["#{config.root}/app/validators"] end end