diff --git a/app/models/api_key.rb b/app/models/api_key.rb index 2e75818f2cb..c1daf8ad085 100644 --- a/app/models/api_key.rb +++ b/app/models/api_key.rb @@ -29,8 +29,8 @@ end # key :string(64) not null # user_id :integer # created_by_id :integer -# created_at :datetime -# updated_at :datetime +# created_at :datetime not null +# updated_at :datetime not null # # Indexes # diff --git a/app/models/category.rb b/app/models/category.rb index d590ffa784c..2b1a3966e40 100644 --- a/app/models/category.rb +++ b/app/models/category.rb @@ -334,8 +334,8 @@ end # color :string(6) default("AB9364"), not null # topic_id :integer # topic_count :integer default(0), not null -# created_at :datetime -# updated_at :datetime +# created_at :datetime not null +# updated_at :datetime not null # user_id :integer not null # topics_year :integer default(0) # topics_month :integer default(0) @@ -360,7 +360,7 @@ end # # Indexes # -# index_categories_on_email_in (email_in) UNIQUE -# index_categories_on_name (name) UNIQUE -# index_categories_on_topic_count (topic_count) +# index_categories_on_email_in (email_in) UNIQUE +# index_categories_on_forum_thread_count (topic_count) +# index_categories_on_name (name) UNIQUE # diff --git a/app/models/category_featured_topic.rb b/app/models/category_featured_topic.rb index 2324a9fd3ab..77fdbb0db90 100644 --- a/app/models/category_featured_topic.rb +++ b/app/models/category_featured_topic.rb @@ -52,8 +52,8 @@ end # # category_id :integer not null # topic_id :integer not null -# created_at :datetime -# updated_at :datetime +# created_at :datetime not null +# updated_at :datetime not null # rank :integer default(0), not null # id :integer not null, primary key # diff --git a/app/models/category_featured_user.rb b/app/models/category_featured_user.rb index 50656dd13fd..db524db0b89 100644 --- a/app/models/category_featured_user.rb +++ b/app/models/category_featured_user.rb @@ -53,8 +53,8 @@ end # id :integer not null, primary key # category_id :integer # user_id :integer -# created_at :datetime -# updated_at :datetime +# created_at :datetime not null +# updated_at :datetime not null # # Indexes # diff --git a/app/models/category_group.rb b/app/models/category_group.rb index d7f70007b69..fa9fd3a21e7 100644 --- a/app/models/category_group.rb +++ b/app/models/category_group.rb @@ -15,7 +15,7 @@ end # id :integer not null, primary key # category_id :integer not null # group_id :integer not null -# created_at :datetime -# updated_at :datetime +# created_at :datetime not null +# updated_at :datetime not null # permission_type :integer default(1) # diff --git a/app/models/discourse_single_sign_on.rb b/app/models/discourse_single_sign_on.rb index f97955654fb..a630fa7aa19 100644 --- a/app/models/discourse_single_sign_on.rb +++ b/app/models/discourse_single_sign_on.rb @@ -41,14 +41,14 @@ class DiscourseSingleSignOn < SingleSignOn def lookup_or_create_user sso_record = SingleSignOnRecord.where(external_id: external_id).first - + if sso_record && user = sso_record.user sso_record.last_payload = unsigned_payload else user = match_email_or_create_user sso_record = user.single_sign_on_record end - + # if the user isn't new or it's attached to the SSO record we might be overriding username or email unless user.new_record? change_external_attributes_and_override(sso_record, user) @@ -59,16 +59,16 @@ class DiscourseSingleSignOn < SingleSignOn user.save user.enqueue_welcome_message('welcome_user') end - + # optionally save the user and sso_record if they have changed user.save! sso_record.save! sso_record && sso_record.user end - + private - + def match_email_or_create_user user = User.where(email: Email.downcase(email)).first @@ -90,31 +90,31 @@ class DiscourseSingleSignOn < SingleSignOn external_name: name) end end - + user end - + def change_external_attributes_and_override(sso_record, user) if SiteSetting.sso_overrides_email && email != sso_record.external_email # set the user's email to whatever came in the payload user.email = email end - + if SiteSetting.sso_overrides_username && username != sso_record.external_username && user.username != username # we have an external username change, and the user's current username doesn't match # run it through the UserNameSuggester to override it - user.username = UserNameSuggester.suggest(username || name || email) + user.username = UserNameSuggester.suggest(username || name || email) end - + if SiteSetting.sso_overrides_name && name != sso_record.external_name && user.name != name # we have an external name change, and the user's current name doesn't match # run it through the name suggester to override it user.name = User.suggest_name(name || username || email) end - + # change external attributes for sso record sso_record.external_username = username sso_record.external_email = email sso_record.external_name = name end -end \ No newline at end of file +end diff --git a/app/models/draft.rb b/app/models/draft.rb index 2a881f39102..a0c15f63a95 100644 --- a/app/models/draft.rb +++ b/app/models/draft.rb @@ -46,8 +46,8 @@ end # user_id :integer not null # draft_key :string(255) not null # data :text not null -# created_at :datetime -# updated_at :datetime +# created_at :datetime not null +# updated_at :datetime not null # sequence :integer default(0), not null # # Indexes diff --git a/app/models/email_log.rb b/app/models/email_log.rb index af3f47096aa..a187f6800ea 100644 --- a/app/models/email_log.rb +++ b/app/models/email_log.rb @@ -37,8 +37,8 @@ end # to_address :string(255) not null # email_type :string(255) not null # user_id :integer -# created_at :datetime -# updated_at :datetime +# created_at :datetime not null +# updated_at :datetime not null # reply_key :string(32) # post_id :integer # topic_id :integer diff --git a/app/models/email_token.rb b/app/models/email_token.rb index 97bac40f151..2dd30c1a412 100644 --- a/app/models/email_token.rb +++ b/app/models/email_token.rb @@ -73,8 +73,8 @@ end # token :string(255) not null # confirmed :boolean default(FALSE), not null # expired :boolean default(FALSE), not null -# created_at :datetime -# updated_at :datetime +# created_at :datetime not null +# updated_at :datetime not null # # Indexes # diff --git a/app/models/facebook_user_info.rb b/app/models/facebook_user_info.rb index e2f10a26847..8ef00720e4e 100644 --- a/app/models/facebook_user_info.rb +++ b/app/models/facebook_user_info.rb @@ -16,8 +16,8 @@ end # gender :string(255) # name :string(255) # link :string(255) -# created_at :datetime -# updated_at :datetime +# created_at :datetime not null +# updated_at :datetime not null # # Indexes # diff --git a/app/models/github_user_info.rb b/app/models/github_user_info.rb index 1b4349313a8..c79a3b0e913 100644 --- a/app/models/github_user_info.rb +++ b/app/models/github_user_info.rb @@ -10,8 +10,8 @@ end # user_id :integer not null # screen_name :string(255) not null # github_user_id :integer not null -# created_at :datetime -# updated_at :datetime +# created_at :datetime not null +# updated_at :datetime not null # # Indexes # diff --git a/app/models/group.rb b/app/models/group.rb index d6807934d85..646e667c383 100644 --- a/app/models/group.rb +++ b/app/models/group.rb @@ -235,8 +235,8 @@ end # # id :integer not null, primary key # name :string(255) not null -# created_at :datetime -# updated_at :datetime +# created_at :datetime not null +# updated_at :datetime not null # automatic :boolean default(FALSE), not null # user_count :integer default(0), not null # alias_level :integer default(0) diff --git a/app/models/group_user.rb b/app/models/group_user.rb index 1a0a0cc5a00..53ace2df1fd 100644 --- a/app/models/group_user.rb +++ b/app/models/group_user.rb @@ -10,8 +10,8 @@ end # id :integer not null, primary key # group_id :integer not null # user_id :integer not null -# created_at :datetime -# updated_at :datetime +# created_at :datetime not null +# updated_at :datetime not null # # Indexes # diff --git a/app/models/incoming_link.rb b/app/models/incoming_link.rb index ca00c8d5217..757bdeea483 100644 --- a/app/models/incoming_link.rb +++ b/app/models/incoming_link.rb @@ -104,8 +104,8 @@ end # domain :string(100) # topic_id :integer # post_number :integer -# created_at :datetime -# updated_at :datetime +# created_at :datetime not null +# updated_at :datetime not null # user_id :integer # ip_address :inet # current_user_id :integer diff --git a/app/models/invite.rb b/app/models/invite.rb index 40651861e61..11c07bd9ee7 100644 --- a/app/models/invite.rb +++ b/app/models/invite.rb @@ -127,8 +127,8 @@ end # invited_by_id :integer not null # user_id :integer # redeemed_at :datetime -# created_at :datetime -# updated_at :datetime +# created_at :datetime not null +# updated_at :datetime not null # deleted_at :datetime # deleted_by_id :integer # invalidated_at :datetime diff --git a/app/models/notification.rb b/app/models/notification.rb index f88916d8d97..77b53b854b1 100644 --- a/app/models/notification.rb +++ b/app/models/notification.rb @@ -142,8 +142,8 @@ end # user_id :integer not null # data :string(1000) not null # read :boolean default(FALSE), not null -# created_at :datetime -# updated_at :datetime +# created_at :datetime not null +# updated_at :datetime not null # topic_id :integer # post_number :integer # post_action_id :integer diff --git a/app/models/oauth2_user_info.rb b/app/models/oauth2_user_info.rb index a3034b00a08..7ce0cace41d 100644 --- a/app/models/oauth2_user_info.rb +++ b/app/models/oauth2_user_info.rb @@ -13,8 +13,8 @@ end # provider :string(255) not null # email :string(255) # name :string(255) -# created_at :datetime -# updated_at :datetime +# created_at :datetime not null +# updated_at :datetime not null # # Indexes # diff --git a/app/models/post.rb b/app/models/post.rb index 87563cd6d01..82f1b8fead8 100644 --- a/app/models/post.rb +++ b/app/models/post.rb @@ -513,8 +513,8 @@ end # post_number :integer not null # raw :text not null # cooked :text not null -# created_at :datetime -# updated_at :datetime +# created_at :datetime not null +# updated_at :datetime not null # reply_to_post_number :integer # reply_count :integer default(0), not null # quote_count :integer default(0), not null @@ -553,5 +553,5 @@ end # idx_posts_created_at_topic_id (created_at,topic_id) # idx_posts_user_id_deleted_at (user_id) # index_posts_on_reply_to_post_number (reply_to_post_number) -# index_posts_on_topic_id_and_post_number (topic_id,post_number) +# index_posts_on_topic_id_and_post_number (topic_id,post_number) UNIQUE # diff --git a/app/models/post_action.rb b/app/models/post_action.rb index 4b7d28807ca..b804c6199d9 100644 --- a/app/models/post_action.rb +++ b/app/models/post_action.rb @@ -335,8 +335,8 @@ end # user_id :integer not null # post_action_type_id :integer not null # deleted_at :datetime -# created_at :datetime -# updated_at :datetime +# created_at :datetime not null +# updated_at :datetime not null # deleted_by_id :integer # message :text # related_post_id :integer diff --git a/app/models/post_action_type.rb b/app/models/post_action_type.rb index 90b7f330ffc..54dd103dee7 100644 --- a/app/models/post_action_type.rb +++ b/app/models/post_action_type.rb @@ -45,8 +45,8 @@ end # name_key :string(50) not null # is_flag :boolean default(FALSE), not null # icon :string(20) -# created_at :datetime -# updated_at :datetime +# created_at :datetime not null +# updated_at :datetime not null # id :integer not null, primary key # position :integer default(0), not null # diff --git a/app/models/post_detail.rb b/app/models/post_detail.rb index 2fd28b1f1e8..8f888516732 100644 --- a/app/models/post_detail.rb +++ b/app/models/post_detail.rb @@ -14,8 +14,8 @@ end # key :string(255) # value :string(255) # extra :text -# created_at :datetime -# updated_at :datetime +# created_at :datetime not null +# updated_at :datetime not null # # Indexes # diff --git a/app/models/post_reply.rb b/app/models/post_reply.rb index d7de2240d9f..81c39269d15 100644 --- a/app/models/post_reply.rb +++ b/app/models/post_reply.rb @@ -11,8 +11,8 @@ end # # post_id :integer # reply_id :integer -# created_at :datetime -# updated_at :datetime +# created_at :datetime not null +# updated_at :datetime not null # # Indexes # diff --git a/app/models/screened_email.rb b/app/models/screened_email.rb index 5aa98a30f08..99c940b03a6 100644 --- a/app/models/screened_email.rb +++ b/app/models/screened_email.rb @@ -33,12 +33,12 @@ end # action_type :integer not null # match_count :integer default(0), not null # last_match_at :datetime -# created_at :datetime -# updated_at :datetime +# created_at :datetime not null +# updated_at :datetime not null # ip_address :inet # # Indexes # -# index_screened_emails_on_email (email) UNIQUE -# index_screened_emails_on_last_match_at (last_match_at) +# index_blocked_emails_on_email (email) UNIQUE +# index_blocked_emails_on_last_match_at (last_match_at) # diff --git a/app/models/screened_ip_address.rb b/app/models/screened_ip_address.rb index 68e9a80059d..f750865edfa 100644 --- a/app/models/screened_ip_address.rb +++ b/app/models/screened_ip_address.rb @@ -92,8 +92,8 @@ end # action_type :integer not null # match_count :integer default(0), not null # last_match_at :datetime -# created_at :datetime -# updated_at :datetime +# created_at :datetime not null +# updated_at :datetime not null # # Indexes # diff --git a/app/models/screened_url.rb b/app/models/screened_url.rb index 3b543c7d77c..5abe8aced91 100644 --- a/app/models/screened_url.rb +++ b/app/models/screened_url.rb @@ -47,8 +47,8 @@ end # action_type :integer not null # match_count :integer default(0), not null # last_match_at :datetime -# created_at :datetime -# updated_at :datetime +# created_at :datetime not null +# updated_at :datetime not null # ip_address :inet # # Indexes diff --git a/app/models/site_content.rb b/app/models/site_content.rb index 46aed053c75..000495f662f 100644 --- a/app/models/site_content.rb +++ b/app/models/site_content.rb @@ -37,8 +37,8 @@ end # # content_type :string(255) not null, primary key # content :text not null -# created_at :datetime -# updated_at :datetime +# created_at :datetime not null +# updated_at :datetime not null # # Indexes # diff --git a/app/models/site_customization.rb b/app/models/site_customization.rb index 22e0a6b4987..6e8fa1bfeb6 100644 --- a/app/models/site_customization.rb +++ b/app/models/site_customization.rb @@ -230,8 +230,8 @@ end # user_id :integer not null # enabled :boolean not null # key :string(255) not null -# created_at :datetime -# updated_at :datetime +# created_at :datetime not null +# updated_at :datetime not null # override_default_style :boolean default(FALSE), not null # stylesheet_baked :text default(""), not null # mobile_stylesheet :text diff --git a/app/models/site_setting.rb b/app/models/site_setting.rb index 2ed664a5e33..ee820aaed6b 100644 --- a/app/models/site_setting.rb +++ b/app/models/site_setting.rb @@ -93,6 +93,6 @@ end # name :string(255) not null # data_type :integer not null # value :text -# created_at :datetime -# updated_at :datetime +# created_at :datetime not null +# updated_at :datetime not null # diff --git a/app/models/topic.rb b/app/models/topic.rb index d2dbbafe95a..e145e41da13 100644 --- a/app/models/topic.rb +++ b/app/models/topic.rb @@ -754,8 +754,8 @@ end # id :integer not null, primary key # title :string(255) not null # last_posted_at :datetime -# created_at :datetime -# updated_at :datetime +# created_at :datetime not null +# updated_at :datetime not null # views :integer default(0), not null # posts_count :integer default(0), not null # user_id :integer @@ -807,6 +807,6 @@ end # # idx_topics_front_page (deleted_at,visible,archetype,category_id,id) # idx_topics_user_id_deleted_at (user_id) -# index_topics_on_bumped_at (bumped_at) +# index_forum_threads_on_bumped_at (bumped_at) # index_topics_on_id_and_deleted_at (id,deleted_at) # diff --git a/app/models/topic_allowed_user.rb b/app/models/topic_allowed_user.rb index 24f15544897..4bb981d226c 100644 --- a/app/models/topic_allowed_user.rb +++ b/app/models/topic_allowed_user.rb @@ -12,8 +12,8 @@ end # id :integer not null, primary key # user_id :integer not null # topic_id :integer not null -# created_at :datetime -# updated_at :datetime +# created_at :datetime not null +# updated_at :datetime not null # # Indexes # diff --git a/app/models/topic_invite.rb b/app/models/topic_invite.rb index 2536d12530b..d6896c6502c 100644 --- a/app/models/topic_invite.rb +++ b/app/models/topic_invite.rb @@ -15,8 +15,8 @@ end # id :integer not null, primary key # topic_id :integer not null # invite_id :integer not null -# created_at :datetime -# updated_at :datetime +# created_at :datetime not null +# updated_at :datetime not null # # Indexes # diff --git a/app/models/topic_link.rb b/app/models/topic_link.rb index b6de3234289..ccb4bf33333 100644 --- a/app/models/topic_link.rb +++ b/app/models/topic_link.rb @@ -208,8 +208,8 @@ end # domain :string(100) not null # internal :boolean default(FALSE), not null # link_topic_id :integer -# created_at :datetime -# updated_at :datetime +# created_at :datetime not null +# updated_at :datetime not null # reflection :boolean default(FALSE) # clicks :integer default(0), not null # link_post_id :integer @@ -218,6 +218,6 @@ end # # Indexes # -# index_topic_links_on_topic_id (topic_id) -# unique_post_links (topic_id,post_id,url) UNIQUE +# index_forum_thread_links_on_forum_thread_id (topic_id) +# index_forum_thread_links_on_forum_thread_id_and_post_id_and_url (topic_id,post_id,url) UNIQUE # diff --git a/app/models/topic_link_click.rb b/app/models/topic_link_click.rb index 7599ed9a76f..575b6a1e882 100644 --- a/app/models/topic_link_click.rb +++ b/app/models/topic_link_click.rb @@ -58,11 +58,11 @@ end # id :integer not null, primary key # topic_link_id :integer not null # user_id :integer -# created_at :datetime -# updated_at :datetime +# created_at :datetime not null +# updated_at :datetime not null # ip_address :inet not null # # Indexes # -# by_link (topic_link_id) +# index_forum_thread_link_clicks_on_forum_thread_link_id (topic_link_id) # diff --git a/app/models/topic_user.rb b/app/models/topic_user.rb index 7181206e128..4053dd78af3 100644 --- a/app/models/topic_user.rb +++ b/app/models/topic_user.rb @@ -279,5 +279,5 @@ end # # Indexes # -# index_topic_users_on_topic_id_and_user_id (topic_id,user_id) UNIQUE +# index_forum_thread_users_on_forum_thread_id_and_user_id (topic_id,user_id) UNIQUE # diff --git a/app/models/twitter_user_info.rb b/app/models/twitter_user_info.rb index cbb5c4c21c6..42d4f4d83cf 100644 --- a/app/models/twitter_user_info.rb +++ b/app/models/twitter_user_info.rb @@ -10,8 +10,8 @@ end # user_id :integer not null # screen_name :string(255) not null # twitter_user_id :integer not null -# created_at :datetime -# updated_at :datetime +# created_at :datetime not null +# updated_at :datetime not null # # Indexes # diff --git a/app/models/upload.rb b/app/models/upload.rb index a2c5917d8da..c05b5d868b8 100644 --- a/app/models/upload.rb +++ b/app/models/upload.rb @@ -125,8 +125,8 @@ end # width :integer # height :integer # url :string(255) not null -# created_at :datetime -# updated_at :datetime +# created_at :datetime not null +# updated_at :datetime not null # sha1 :string(40) # origin :string(1000) # diff --git a/app/models/user.rb b/app/models/user.rb index bf74bb2639d..23f3daa09d3 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -692,9 +692,9 @@ end # Table name: users # # id :integer not null, primary key -# username :string(20) not null -# created_at :datetime -# updated_at :datetime +# username :string(60) not null +# created_at :datetime not null +# updated_at :datetime not null # name :string(255) # bio_raw :text # seen_notification_id :integer default(0), not null @@ -703,7 +703,7 @@ end # password_hash :string(64) # salt :string(32) # active :boolean -# username_lower :string(20) not null +# username_lower :string(60) not null # auth_token :string(32) # last_seen_at :datetime # website :string(255) @@ -738,8 +738,8 @@ end # uploaded_avatar_id :integer # email_always :boolean default(FALSE), not null # mailing_list_mode :boolean default(FALSE), not null -# locale :string(10) # primary_group_id :integer +# locale :string(10) # profile_background :string(255) # # Indexes diff --git a/app/models/user_action.rb b/app/models/user_action.rb index da4cba31aa4..03841c91ef8 100644 --- a/app/models/user_action.rb +++ b/app/models/user_action.rb @@ -313,12 +313,12 @@ end # target_post_id :integer # target_user_id :integer # acting_user_id :integer -# created_at :datetime -# updated_at :datetime +# created_at :datetime not null +# updated_at :datetime not null # # Indexes # -# idx_unique_rows (action_type,user_id,target_topic_id,target_post_id,acting_user_id) UNIQUE -# index_user_actions_on_acting_user_id (acting_user_id) -# index_user_actions_on_user_id_and_action_type (user_id,action_type) +# idx_unique_rows (action_type,user_id,target_topic_id,target_post_id,acting_user_id) UNIQUE +# index_actions_on_acting_user_id (acting_user_id) +# index_actions_on_user_id_and_action_type (user_id,action_type) # diff --git a/app/models/user_history.rb b/app/models/user_history.rb index ab0c5bbaff0..bc4033c2c6d 100644 --- a/app/models/user_history.rb +++ b/app/models/user_history.rb @@ -104,8 +104,8 @@ end # acting_user_id :integer # target_user_id :integer # details :text -# created_at :datetime -# updated_at :datetime +# created_at :datetime not null +# updated_at :datetime not null # context :string(255) # ip_address :string(255) # email :string(255) @@ -117,8 +117,8 @@ end # # Indexes # +# index_staff_action_logs_on_action_and_id (action,id) +# index_staff_action_logs_on_subject_and_id (subject,id) +# index_staff_action_logs_on_target_user_id_and_id (target_user_id,id) # index_user_histories_on_acting_user_id_and_action_and_id (acting_user_id,action,id) -# index_user_histories_on_action_and_id (action,id) -# index_user_histories_on_subject_and_id (subject,id) -# index_user_histories_on_target_user_id_and_id (target_user_id,id) # diff --git a/app/models/user_open_id.rb b/app/models/user_open_id.rb index b460bc6f99e..183f2414823 100644 --- a/app/models/user_open_id.rb +++ b/app/models/user_open_id.rb @@ -13,8 +13,8 @@ end # user_id :integer not null # email :string(255) not null # url :string(255) not null -# created_at :datetime -# updated_at :datetime +# created_at :datetime not null +# updated_at :datetime not null # active :boolean not null # # Indexes diff --git a/db/migrate/20140415054717_allow_longer_usernames.rb b/db/migrate/20140415054717_allow_longer_usernames.rb new file mode 100644 index 00000000000..e93d2176435 --- /dev/null +++ b/db/migrate/20140415054717_allow_longer_usernames.rb @@ -0,0 +1,9 @@ +class AllowLongerUsernames < ActiveRecord::Migration + def up + change_column :users, :username, :string, limit: 60 + change_column :users, :username_lower, :string, limit: 60 + end + + def down + end +end