diff --git a/app/assets/javascripts/signup.js b/app/assets/javascripts/username-validation.js similarity index 100% rename from app/assets/javascripts/signup.js rename to app/assets/javascripts/username-validation.js diff --git a/app/controllers/usernames_controller.rb b/app/controllers/usernames_controller.rb index 519b79a0..55db58e2 100644 --- a/app/controllers/usernames_controller.rb +++ b/app/controllers/usernames_controller.rb @@ -2,7 +2,10 @@ class UsernamesController < ApplicationController skip_before_filter :require_registration def show - if User.with_username(params[:id]) || User::RESERVED.include?(params[:id].downcase) + # allow validation to pass if it's the user's username that they're trying to validate (for edit username) + if signed_in? && current_user.username.downcase == params[:id].downcase + head :ok + elsif User.with_username(params[:id]) || User::RESERVED.include?(params[:id].downcase) head :forbidden else head :ok diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index f21f6b03..bc268c9d 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -299,7 +299,8 @@ def user_update_params :team_avatar, :team_banner, :team_responsibilities, - :title + :title, + :username ) end diff --git a/app/models/user.rb b/app/models/user.rb index 4fa70914..6a25b566 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -121,7 +121,7 @@ class User < ActiveRecord::Base include ResqueSupport::Basic include NetValidators - attr_protected :admin, :username, :id, :github_id, :twitter_id, :linkedin_id, :api_key + attr_protected :admin, :id, :github_id, :twitter_id, :linkedin_id, :api_key mount_uploader :avatar, AvatarUploader mount_uploader :banner, BannerUploader diff --git a/app/views/users/edit.html.haml b/app/views/users/edit.html.haml index 8e26d78d..df80fac1 100644 --- a/app/views/users/edit.html.haml +++ b/app/views/users/edit.html.haml @@ -1,6 +1,7 @@ = content_for :javascript do = javascript_include_tag 'https://s3.amazonaws.com/cdn.getchute.com/media-chooser.min.js' = javascript_include_tag 'settings.js' + = javascript_include_tag 'username-validation.js' - content_for :mixpanel do = record_view_event('settings') @@ -63,6 +64,11 @@ .setting = form.label :location, "Location: required".html_safe = form.text_field :location + .setting + = form.label :username, "Username: required".html_safe + = form.text_field :username, 'data-validation' => usernames_path, :maxlength => 15 + #username_validation + %p Changing your username will make your previous username available to someone else. .setting = form.label :about, "Bio:" = form.text_area :about diff --git a/app/views/users/new.html.haml b/app/views/users/new.html.haml index 59bf9142..0ad1b7b1 100644 --- a/app/views/users/new.html.haml +++ b/app/views/users/new.html.haml @@ -1,6 +1,6 @@ =content_for :javascript do =javascript_include_tag 'jquery.ketchup.all.min.js' - =javascript_include_tag 'signup.js' + =javascript_include_tag 'username-validation.js' -content_for :page_title do coderwall : level up (step 2 of 2)