@@ -195,6 +195,10 namespace :redmine do | |||
|
195 | 195 | set_table_name :permission |
|
196 | 196 | end |
|
197 | 197 | |
|
198 | class TracSessionAttribute < ActiveRecord::Base | |
|
199 | set_table_name :session_attribute | |
|
200 | end | |
|
201 | ||
|
198 | 202 | def self.find_or_create_user(username, project_member = false) |
|
199 | 203 | return User.anonymous if username.blank? |
|
200 | 204 | |
@@ -202,10 +206,23 namespace :redmine do | |||
|
202 | 206 | if !u |
|
203 | 207 | # Create a new user if not found |
|
204 | 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 | 212 | mail = "#{mail}@foo.bar" unless mail.include?("@") |
|
206 | u = User.new :firstname => username[0,limit_for(User, 'firstname')].gsub(/[^\w\s\'\-]/i, '-'), | |
|
207 | :lastname => '-', | |
|
208 | :mail => mail.gsub(/[^-@a-z0-9\.]/i, '-') | |
|
213 | ||
|
214 | name = username | |
|
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 | 226 | u.login = username[0,limit_for(User, 'login')].gsub(/[^a-z0-9_\-@\.]/i, '-') |
|
210 | 227 | u.password = 'trac' |
|
211 | 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