Trac importer: read session_attribute table to find user's email and real name (#1340).
git-svn-id: http://redmine.rubyforge.org/svn/trunk@1502 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
956ad0a3f9
commit
042da97f54
|
@ -195,6 +195,10 @@ namespace :redmine do
|
||||||
set_table_name :permission
|
set_table_name :permission
|
||||||
end
|
end
|
||||||
|
|
||||||
|
class TracSessionAttribute < ActiveRecord::Base
|
||||||
|
set_table_name :session_attribute
|
||||||
|
end
|
||||||
|
|
||||||
def self.find_or_create_user(username, project_member = false)
|
def self.find_or_create_user(username, project_member = false)
|
||||||
return User.anonymous if username.blank?
|
return User.anonymous if username.blank?
|
||||||
|
|
||||||
|
@ -202,10 +206,23 @@ namespace :redmine do
|
||||||
if !u
|
if !u
|
||||||
# Create a new user if not found
|
# Create a new user if not found
|
||||||
mail = username[0,limit_for(User, 'mail')]
|
mail = username[0,limit_for(User, 'mail')]
|
||||||
|
if mail_attr = TracSessionAttribute.find_by_sid_and_name(username, 'email')
|
||||||
|
mail = mail_attr.value
|
||||||
|
end
|
||||||
mail = "#{mail}@foo.bar" unless mail.include?("@")
|
mail = "#{mail}@foo.bar" unless mail.include?("@")
|
||||||
u = User.new :firstname => username[0,limit_for(User, 'firstname')].gsub(/[^\w\s\'\-]/i, '-'),
|
|
||||||
:lastname => '-',
|
name = username
|
||||||
:mail => mail.gsub(/[^-@a-z0-9\.]/i, '-')
|
if name_attr = TracSessionAttribute.find_by_sid_and_name(username, 'name')
|
||||||
|
name = name_attr.value
|
||||||
|
end
|
||||||
|
name =~ (/(.*)(\s+\w+)?/)
|
||||||
|
fn = $1.strip
|
||||||
|
ln = ($2 || '-').strip
|
||||||
|
|
||||||
|
u = User.new :mail => mail.gsub(/[^-@a-z0-9\.]/i, '-'),
|
||||||
|
:firstname => fn[0, limit_for(User, 'firstname')].gsub(/[^\w\s\'\-]/i, '-'),
|
||||||
|
:lastname => ln[0, limit_for(User, 'lastname')].gsub(/[^\w\s\'\-]/i, '-')
|
||||||
|
|
||||||
u.login = username[0,limit_for(User, 'login')].gsub(/[^a-z0-9_\-@\.]/i, '-')
|
u.login = username[0,limit_for(User, 'login')].gsub(/[^a-z0-9_\-@\.]/i, '-')
|
||||||
u.password = 'trac'
|
u.password = 'trac'
|
||||||
u.admin = true if TracPermission.find_by_username_and_action(username, 'admin')
|
u.admin = true if TracPermission.find_by_username_and_action(username, 'admin')
|
||||||
|
|
Loading…
Reference in New Issue