mirror of
https://github.com/discourse/discourse.git
synced 2024-11-30 08:34:39 +08:00
FEATURE: display associated accounts in admin user
This commit is contained in:
parent
d31322ea56
commit
c248d28c38
|
@ -40,6 +40,11 @@
|
||||||
{{/unless}}
|
{{/unless}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class='display-row associations'>
|
||||||
|
<div class='field'>{{i18n user.associated_accounts}}</div>
|
||||||
|
<div class='value'>{{associated_accounts}}</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class='display-row'>
|
<div class='display-row'>
|
||||||
<div class='field'>{{i18n user.avatar.title}}</div>
|
<div class='field'>{{i18n user.avatar.title}}</div>
|
||||||
<div class='value'>{{avatar content imageSize="large"}}</div>
|
<div class='value'>{{avatar content imageSize="large"}}</div>
|
||||||
|
|
|
@ -41,6 +41,7 @@ class User < ActiveRecord::Base
|
||||||
has_one :facebook_user_info, dependent: :destroy
|
has_one :facebook_user_info, dependent: :destroy
|
||||||
has_one :twitter_user_info, dependent: :destroy
|
has_one :twitter_user_info, dependent: :destroy
|
||||||
has_one :github_user_info, dependent: :destroy
|
has_one :github_user_info, dependent: :destroy
|
||||||
|
has_one :google_user_info, dependent: :destroy
|
||||||
has_one :oauth2_user_info, dependent: :destroy
|
has_one :oauth2_user_info, dependent: :destroy
|
||||||
has_one :user_stat, dependent: :destroy
|
has_one :user_stat, dependent: :destroy
|
||||||
has_one :user_profile, dependent: :destroy, inverse_of: :user
|
has_one :user_profile, dependent: :destroy, inverse_of: :user
|
||||||
|
@ -633,6 +634,31 @@ class User < ActiveRecord::Base
|
||||||
user_stat.try(:first_post_created_at)
|
user_stat.try(:first_post_created_at)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def associated_accounts
|
||||||
|
result = []
|
||||||
|
if twitter_user_info
|
||||||
|
result << "Twitter(#{twitter_user_info.screen_name})"
|
||||||
|
end
|
||||||
|
|
||||||
|
if facebook_user_info
|
||||||
|
result << "Facebook(#{facebook_user_info.username})"
|
||||||
|
end
|
||||||
|
|
||||||
|
if google_user_info
|
||||||
|
result << "Google(#{google_user_info.email})"
|
||||||
|
end
|
||||||
|
|
||||||
|
if github_user_info
|
||||||
|
result << "Github(#{github_user_info.screen_name})"
|
||||||
|
end
|
||||||
|
|
||||||
|
user_open_ids.each do |oid|
|
||||||
|
result << "OpenID #{oid.url[0..20]}...(#{oid.email})"
|
||||||
|
end
|
||||||
|
|
||||||
|
result.empty? ? I18n.t("user.no_accounts_associated") : result.join(", ")
|
||||||
|
end
|
||||||
|
|
||||||
protected
|
protected
|
||||||
|
|
||||||
def badge_grant
|
def badge_grant
|
||||||
|
|
|
@ -24,7 +24,8 @@ class AdminUserSerializer < BasicUserSerializer
|
||||||
:can_activate,
|
:can_activate,
|
||||||
:can_deactivate,
|
:can_deactivate,
|
||||||
:blocked,
|
:blocked,
|
||||||
:time_read
|
:time_read,
|
||||||
|
:associated_accounts
|
||||||
|
|
||||||
has_one :single_sign_on_record, serializer: SingleSignOnRecordSerializer, embed: :objects
|
has_one :single_sign_on_record, serializer: SingleSignOnRecordSerializer, embed: :objects
|
||||||
|
|
||||||
|
|
|
@ -490,6 +490,7 @@ en:
|
||||||
ok: "Your password looks good."
|
ok: "Your password looks good."
|
||||||
instructions: "At least %{count} characters."
|
instructions: "At least %{count} characters."
|
||||||
|
|
||||||
|
associated_accounts: "Associated accounts"
|
||||||
ip_address:
|
ip_address:
|
||||||
title: "Last IP Address"
|
title: "Last IP Address"
|
||||||
registration_ip_address:
|
registration_ip_address:
|
||||||
|
|
|
@ -1108,6 +1108,7 @@ en:
|
||||||
password_too_long: "Passwords are limited to 200 characters."
|
password_too_long: "Passwords are limited to 200 characters."
|
||||||
|
|
||||||
user:
|
user:
|
||||||
|
no_accounts_associated: "No accounts associated"
|
||||||
username:
|
username:
|
||||||
short: "must be at least %{min} characters"
|
short: "must be at least %{min} characters"
|
||||||
long: "must be no more than %{max} characters"
|
long: "must be no more than %{max} characters"
|
||||||
|
|
|
@ -405,6 +405,22 @@ describe User do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe 'associated_accounts' do
|
||||||
|
it 'should correctly find social associations' do
|
||||||
|
user = Fabricate(:user)
|
||||||
|
user.associated_accounts.should == I18n.t("user.no_accounts_associated")
|
||||||
|
|
||||||
|
TwitterUserInfo.create(user_id: user.id, screen_name: "sam", twitter_user_id: 1)
|
||||||
|
FacebookUserInfo.create(user_id: user.id, username: "sam", facebook_user_id: 1)
|
||||||
|
GoogleUserInfo.create(user_id: user.id, email: "sam@sam.com", google_user_id: 1)
|
||||||
|
GithubUserInfo.create(user_id: user.id, screen_name: "sam", github_user_id: 1)
|
||||||
|
|
||||||
|
user.reload
|
||||||
|
user.associated_accounts.should == "Twitter(sam), Facebook(sam), Google(sam@sam.com), Github(sam)"
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
describe 'name heuristics' do
|
describe 'name heuristics' do
|
||||||
it 'is able to guess a decent name from an email' do
|
it 'is able to guess a decent name from an email' do
|
||||||
User.suggest_name('sam.saffron@gmail.com').should == 'Sam Saffron'
|
User.suggest_name('sam.saffron@gmail.com').should == 'Sam Saffron'
|
||||||
|
|
Loading…
Reference in New Issue
Block a user