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)