@@ -195,6 +195,10 namespace :redmine do | |||||
195 | set_table_name :permission |
|
195 | set_table_name :permission | |
196 | end |
|
196 | end | |
197 |
|
197 | |||
|
198 | class TracSessionAttribute < ActiveRecord::Base | |||
|
199 | set_table_name :session_attribute | |||
|
200 | end | |||
|
201 | ||||
198 | def self.find_or_create_user(username, project_member = false) |
|
202 | def self.find_or_create_user(username, project_member = false) | |
199 | return User.anonymous if username.blank? |
|
203 | return User.anonymous if username.blank? | |
200 |
|
204 | |||
@@ -202,10 +206,23 namespace :redmine do | |||||
202 | if !u |
|
206 | if !u | |
203 | # Create a new user if not found |
|
207 | # Create a new user if not found | |
204 | mail = username[0,limit_for(User, 'mail')] |
|
208 | mail = username[0,limit_for(User, 'mail')] | |
|
209 | if mail_attr = TracSessionAttribute.find_by_sid_and_name(username, 'email') | |||
|
210 | mail = mail_attr.value | |||
|
211 | end | |||
205 | mail = "#{mail}@foo.bar" unless mail.include?("@") |
|
212 | mail = "#{mail}@foo.bar" unless mail.include?("@") | |
206 | u = User.new :firstname => username[0,limit_for(User, 'firstname')].gsub(/[^\w\s\'\-]/i, '-'), |
|
213 | ||
207 | :lastname => '-', |
|
214 | name = username | |
208 | :mail => mail.gsub(/[^-@a-z0-9\.]/i, '-') |
|
215 | if name_attr = TracSessionAttribute.find_by_sid_and_name(username, 'name') | |
|
216 | name = name_attr.value | |||
|
217 | end | |||
|
218 | name =~ (/(.*)(\s+\w+)?/) | |||
|
219 | fn = $1.strip | |||
|
220 | ln = ($2 || '-').strip | |||
|
221 | ||||
|
222 | u = User.new :mail => mail.gsub(/[^-@a-z0-9\.]/i, '-'), | |||
|
223 | :firstname => fn[0, limit_for(User, 'firstname')].gsub(/[^\w\s\'\-]/i, '-'), | |||
|
224 | :lastname => ln[0, limit_for(User, 'lastname')].gsub(/[^\w\s\'\-]/i, '-') | |||
|
225 | ||||
209 | u.login = username[0,limit_for(User, 'login')].gsub(/[^a-z0-9_\-@\.]/i, '-') |
|
226 | u.login = username[0,limit_for(User, 'login')].gsub(/[^a-z0-9_\-@\.]/i, '-') | |
210 | u.password = 'trac' |
|
227 | u.password = 'trac' | |
211 | u.admin = true if TracPermission.find_by_username_and_action(username, 'admin') |
|
228 | u.admin = true if TracPermission.find_by_username_and_action(username, 'admin') |
General Comments 0
You need to be logged in to leave comments.
Login now